I was wondering, how exactly is the .songdata file-type structured?
The .songdata file structure in jOeSU is quite literally the entire bottleneck that causes those issues I mentioned in another reply. This was literally the first ever thing made in the game, so it's pretty badly formatted, my new project uses JSON which helps a ton with readability.
For every note this format is used:
1*. If the note is a slider: a value indicating that it's a slider
2. The notes song position (the bottleneck)
3. The unicode characters constant value (the note type basically)
4*. If the note is a slider: the notes end song position
Interested in why you want to know this, if you need anything more specific feel free to ask.
Only sliders have an identifying value which is constant, meaning it will always be '133769' (funny, I know) - so if you see this, you know that below it holds a slider note.
Note type values (W, A, D or S) are also constant, I don't know this off by heart but the note type for W is literally just the ASCII code for the W character, and so on for the others.
Unfortunately I don't remember completely how info.songdata is structured, but I think with a bit of tinkering it could be understood pretty fast. The song name and description is obvious and apart from them - if I'm not mistaken - the only other values are the difficulty, speed and offset. Their order I am unsure of.