So for the past few days I've been looking through the open-sourced Taiko pp algorithms, and I've basically figured it out. Here's how it works....:
Taiko pp is composed of Strain, Accuracy and a final multiplier.
Strain Value:
* Take the higher of 1 or the (Star Rating/0.0075)
* Multiply by 5
* Subtract 4
* Square it
* Divide by 100,000
Length bonus: Take the lower of 1 or (the number of circles/1500), multiply by 0.1 and add 1
Multiply current strain value by this amount
Then multiply by 0.985^misses
Combo: Take your combo and square root it, then divide by the square root of the full combo. Compare this to 1 and take the lower value.
Multiply strain by this combo value.
Multiply by 1.025 for Hidden
Multiply by (1.05 x Length bonus) for Flashlight
Then multiply by accuracy (as a %)
Accuracy Value:
Take the 300 hit window and call this HitWindow300 (This is where the OD comes in, and is basically where the effect of HR/EZ takes place)
Accuracy Value = (150/HitWindow300) ^ 1.1
Multiply by accuracy to the power of 15 (out of 1, e.g. for 98% accuracy you’d do 0.98 to the power of 15)
Multiply by 22
Take (number of circles/1500) to the power of 0.3. Compare to 1.15, take the lower value
Multiply your Accuracy value by this amount
Formula for actual accuracy percentage:
(Amount of 100s * 150) + (Amount of 300s * 300) / (number of circles * 300)
(Not exactly relevant since you get this from the game anyway)
Total pp:
Multiplier on all plays: 1.10
Multiply this by the following amounts for these mods:
NoFail: 0.90x
Hidden: 1.10x
Final formula: ((StrainValue ^ 1.1) + (AccuracyValue ^ 1.1)) ^ (1.0 / 1.1) * Multiplier
I made a very simple calculator for this in JavaScript (so it'll run in any decent browser) - you can find that here.
The weirdest thing I found though, was the misses. What I expected to happen was that it would use your max combo and compare that to the map's maximum combo. Your combo is actually calculated as the maximum combo minus the number of misses. So if you got 3 misses on a 1000 combo map, that's actually calculated as you scoring 997/1000 combo, regardless of where you had those misses. _yu68 should actually have gotten 580pp for his Technonationalism play since his max combo was 762/1149. He had 3 misses, and it only comes out to 680pp if you calculate this as 1146/1149.
Another example of this is on Uta - despite tuengsocool getting about 650 combo less than XK2238, he only gets slightly less pp because of the slightly lower accuracy - since they both got 4 misses, they both calculate as 3503/3507.
Some notes about the calculator:
"Number of circles" isn't correct in convert maps - the number of circles shown in osu! is for Standard mode, so it won't be the same number in Taiko. You'll have to input the maximum combo there instead.
Your combo - As I said in the previous paragraph, you'd have to input this as max combo minus misses for it to match up with the real values. I really don't know why.
Values can differ very slightly because the Star Rating in osu! is rounded to two decimal places; for example, what shows as a 6.86 star map in osu! can actually be anywhere between 6.855 and 6.865 stars, so there may be a very slight discrepancy there.
I don't know if anyone cares, but hopefully this post is useful
Taiko pp is composed of Strain, Accuracy and a final multiplier.
Strain Value:
* Take the higher of 1 or the (Star Rating/0.0075)
* Multiply by 5
* Subtract 4
* Square it
* Divide by 100,000
Length bonus: Take the lower of 1 or (the number of circles/1500), multiply by 0.1 and add 1
Multiply current strain value by this amount
Then multiply by 0.985^misses
Combo: Take your combo and square root it, then divide by the square root of the full combo. Compare this to 1 and take the lower value.
Multiply strain by this combo value.
Multiply by 1.025 for Hidden
Multiply by (1.05 x Length bonus) for Flashlight
Then multiply by accuracy (as a %)
Accuracy Value:
Take the 300 hit window and call this HitWindow300 (This is where the OD comes in, and is basically where the effect of HR/EZ takes place)
Accuracy Value = (150/HitWindow300) ^ 1.1
Multiply by accuracy to the power of 15 (out of 1, e.g. for 98% accuracy you’d do 0.98 to the power of 15)
Multiply by 22
Take (number of circles/1500) to the power of 0.3. Compare to 1.15, take the lower value
Multiply your Accuracy value by this amount
Formula for actual accuracy percentage:
(Amount of 100s * 150) + (Amount of 300s * 300) / (number of circles * 300)
(Not exactly relevant since you get this from the game anyway)
Total pp:
Multiplier on all plays: 1.10
Multiply this by the following amounts for these mods:
NoFail: 0.90x
Hidden: 1.10x
Final formula: ((StrainValue ^ 1.1) + (AccuracyValue ^ 1.1)) ^ (1.0 / 1.1) * Multiplier
I made a very simple calculator for this in JavaScript (so it'll run in any decent browser) - you can find that here.
The weirdest thing I found though, was the misses. What I expected to happen was that it would use your max combo and compare that to the map's maximum combo. Your combo is actually calculated as the maximum combo minus the number of misses. So if you got 3 misses on a 1000 combo map, that's actually calculated as you scoring 997/1000 combo, regardless of where you had those misses. _yu68 should actually have gotten 580pp for his Technonationalism play since his max combo was 762/1149. He had 3 misses, and it only comes out to 680pp if you calculate this as 1146/1149.
Another example of this is on Uta - despite tuengsocool getting about 650 combo less than XK2238, he only gets slightly less pp because of the slightly lower accuracy - since they both got 4 misses, they both calculate as 3503/3507.
Some notes about the calculator:
"Number of circles" isn't correct in convert maps - the number of circles shown in osu! is for Standard mode, so it won't be the same number in Taiko. You'll have to input the maximum combo there instead.
Your combo - As I said in the previous paragraph, you'd have to input this as max combo minus misses for it to match up with the real values. I really don't know why.
Values can differ very slightly because the Star Rating in osu! is rounded to two decimal places; for example, what shows as a 6.86 star map in osu! can actually be anywhere between 6.855 and 6.865 stars, so there may be a very slight discrepancy there.
I don't know if anyone cares, but hopefully this post is useful