I have curious question about music rhythm based genre while I'm making a code for the game. Is it really better if I set a random pattern encountered on every music played or there is a specific pattern depending on the music and the difficulty? I have observed the Guitar Hero 3 game for the game console where the difficulty is set on the number of strings used and possible number of combo (e.g. two-string combo). Compared to the Tap Tap Revenge for the Android and iPhone, the difficulty based on the number of BPM (Beat per Minute), meaning, number of targets spawn and must be hit.
Don't use a random pattern, people would like to use their muscle memory to play a song the same every time.
I suggest you define the pattern for the entire song, and give each position a difficulty rating. The most difficult version of the song would include all the difficulties, say 1-5. Where as the medium version of the song would contain all the positions rated 3 or below. While the easiest version of the song would only contain rank 1 positions.
It would likely be easiest and most logical to build up these layers of difficulty from the easiest to hardest. On the first pass of analyzing the song, just get the most radical changes and the strongest beats. Then progress from there, filling in the richness of the song with more positions to be played.
But remember that each level should also contain those before it. This will help the players progress from one difficulty level to the next.