Let's have an actual proper post on how to measure difficulty.
And one other thing, it might be a good idea to count left and right hand strain separately. A section where objects are spread out evenly between all columns is easier than a section with the same amount of objects where they're all played by the same hand (columns 123 / 567).
This post's examples use 7K but most of this should be applicable to other keymodes.
I hope this post will be useful .-.
Hitobjects
Hitobjects. We start with a base rule - difficulty = density (one object worth one difficulty point). There's one exception where objects should be harder than that - when there was another one in the same lane not long ago. That obviously rates jacks correctly, but it also does it to almost all patterns considered difficult. Examples:
Double stairs are difficult because one key is reused very quickly. They're easier to play when the distance between the stairs is bigger than 1.
Reverting stairs are harder to play than normal stairs, but that would be rated correctly because of the second-last (pink) column on both edges.
Double stairs are difficult because one key is reused very quickly. They're easier to play when the distance between the stairs is bigger than 1.
Reverting stairs are harder to play than normal stairs, but that would be rated correctly because of the second-last (pink) column on both edges.
Patterns
But, there's a few patterns which make objects easier than 1 per objects - either because it's easier to read (translate into finger movements) or it's natural for fingers to play.
Stairs (lower) are easier to play than random objects or broken stairs (upper), because rolling from one side to the other is a natural movement. That means every object starting from the second one should be rated a bit lower than a normal one. If stairs revert, nothing special happens - stair recognition ends at the turning point and immediately picks up again detecting a second stair pattern. Additionally the same lane difficulty kicks in around the turning point, like mentioned in the previous section.
Skipping stairs (stairs every second column, like 1 3 5 7) should be treated like normal ones.
Those chords feature symmetry, so one of the objects should be worth less because it's easier to read than a random chord.
Note that the lower chord here still features symmetry - middle column should not affect it, so one of the side objects should still have lower difficulty. The upper chord's symmetry is broken by the note in column 3, so it should count as 3 normal objects.
Those chords use "matching" columns, so again it should be slightly easier, but perhaps not as much as a symmetric one.
Those modifiers will often stack - here on top of symmetry and match modifier we get the stair modifier.
There's also trills, but the ease of reading them is nullified by physical strain of hitting them, so I think that special treatment is redundant.
Stairs (lower) are easier to play than random objects or broken stairs (upper), because rolling from one side to the other is a natural movement. That means every object starting from the second one should be rated a bit lower than a normal one. If stairs revert, nothing special happens - stair recognition ends at the turning point and immediately picks up again detecting a second stair pattern. Additionally the same lane difficulty kicks in around the turning point, like mentioned in the previous section.
Skipping stairs (stairs every second column, like 1 3 5 7) should be treated like normal ones.
Those chords feature symmetry, so one of the objects should be worth less because it's easier to read than a random chord.
Note that the lower chord here still features symmetry - middle column should not affect it, so one of the side objects should still have lower difficulty. The upper chord's symmetry is broken by the note in column 3, so it should count as 3 normal objects.
Those chords use "matching" columns, so again it should be slightly easier, but perhaps not as much as a symmetric one.
Those modifiers will often stack - here on top of symmetry and match modifier we get the stair modifier.
There's also trills, but the ease of reading them is nullified by physical strain of hitting them, so I think that special treatment is redundant.
LNs
Now, LNs. Those are more difficult to rate, but I think I came up with a good approximation.
An LN by itself has the difficulty of 2 objects, for start and finish.
Holding additional LN that overlaps in time with another one perfectly is not as hard as holding one LN times 2, so that should be fractional - say, 0.5 per extra start, so 1.5 + 1.5 = 3.
Here, there are 3 "events" that the player has to watch for. First the start of the first LN, then the change of fingers from column 3 to 5, then second LN end. Therefore I'd rate that as 3 objects.
Here's a more complex example. At the first "event" we have two starts, so 1.5. Then two finger changes, so another 1.5. And at the end two releases, so 1.5 again. The sum is 4.5.
First event: one start - 1. Second event: 1 finger change, 1 extra start - 1.5 (any LN events should "stack" into fractionals like thisnot just identical ones.) Third event: 2 relases, 1.5. Sum is 4.
An LN by itself has the difficulty of 2 objects, for start and finish.
Holding additional LN that overlaps in time with another one perfectly is not as hard as holding one LN times 2, so that should be fractional - say, 0.5 per extra start, so 1.5 + 1.5 = 3.
Here, there are 3 "events" that the player has to watch for. First the start of the first LN, then the change of fingers from column 3 to 5, then second LN end. Therefore I'd rate that as 3 objects.
Here's a more complex example. At the first "event" we have two starts, so 1.5. Then two finger changes, so another 1.5. And at the end two releases, so 1.5 again. The sum is 4.5.
First event: one start - 1. Second event: 1 finger change, 1 extra start - 1.5 (any LN events should "stack" into fractionals like thisnot just identical ones.) Third event: 2 relases, 1.5. Sum is 4.
LN overlaps
Now for the more complex topic, LN overlaps.
Those are obviously harder, because you have to keep holding a button during an "event", while it's more intuitive to change the "state" of all fingers.
I'd count having to keep a finger held to be an extra event. So here: Event 1 - one start, 1. Event 2 - one start, one hold - 1.5. Event 3 - One end, one hold - 1.5. Event 4 - one end, 1. Sum = 5.
One thing to note is that the difficulty of complex LN patterns rises exponentially (with "LN walls" being only for absolute pros), so it might be a good idea to make multiple LN events worth much more (example of each simultaneous hold's worth: 0.5, 1, 1.5, 2 etc).
Those are obviously harder, because you have to keep holding a button during an "event", while it's more intuitive to change the "state" of all fingers.
I'd count having to keep a finger held to be an extra event. So here: Event 1 - one start, 1. Event 2 - one start, one hold - 1.5. Event 3 - One end, one hold - 1.5. Event 4 - one end, 1. Sum = 5.
One thing to note is that the difficulty of complex LN patterns rises exponentially (with "LN walls" being only for absolute pros), so it might be a good idea to make multiple LN events worth much more (example of each simultaneous hold's worth: 0.5, 1, 1.5, 2 etc).
Notes + LNs
This exact numerical system is obviously slightly off (a chord of two notes worth more than 2 parallel LNs), but that's a matter of scaling note diff vs LN diff. My goal was not to give an algorithm, but try to explain how mania players read patterns. The lists of base patterns and LN examples obviously aren't exhaustive.And the last thing, mixing notes and LNs. Because of those two kinds of objects' very different nature, having to play both of them at the same time essentially involves multitasking (layering), they're almost never read as one pattern. Musically, one instrument is performed by a strip of LNs while another instrument (usually percussion) is done with notes. Therefore, I believe the difficulty should simply be summed, maybe with a bonus for reading skill per overlapping event.
And one other thing, it might be a good idea to count left and right hand strain separately. A section where objects are spread out evenly between all columns is easier than a section with the same amount of objects where they're all played by the same hand (columns 123 / 567).
This post's examples use 7K but most of this should be applicable to other keymodes.
I hope this post will be useful .-.