raynebc / editor-on-fire

A chart editor for various rhythm games
Other
95 stars 20 forks source link

Add Option to Export Guitar Hero 3 Forced HO/PO Notation #297

Open NewCreature opened 8 years ago

NewCreature commented 8 years ago

A user has requested help getting forced HO/PO to work with Guitar Hero 3 using Guitar Hero Three Control Panel. I've looked into it and it appears the notation Guitar Hero 3 uses for HO/PO markers is different than what Rock Band uses.

It should be fairly trivial to add an option to use Guitar Hero 3 notation when writing the MIDI file. For reference, it looks like it is just difficulty_base_note+5 with a length of 0 on each note that has a forced HO/PO setting.

raynebc commented 8 years ago

It might be a good idea to have a different MIDI (ie. "notes_GH3.mid") be written for this variation so that it doesn't get used with FoF or Phase Shift on accident. The current "normal" MIDI writes the forced HOPO marker as lane 1 + 5, but it doesn't use a length of 0. Does GH3 have forced no HOPO markers?

The GHWT MIDI currently doesn't write forced HOPO markers because the end users didn't confirm the correct method to mark with.

NewCreature commented 8 years ago

Yeah, writing a separate MIDI file would be good. I'm not sure about the notation for GH3, just saw that Guitar Hero Three Control Panel (GHTCP) will import a note defined as N 5 0 from a .chart as a forced HO/PO marker. I was planning on doing a custom build for the user to test out the notation since I don't have a copy of GH3 to test with.

In GH3, the forced HO/PO is a toggle, or at least the FAQ for GHTCP suggests that. That means a note that would be a HO/PO based on proximity and other default HO/PO rules would be toggled off if marked. A note that would not be a HO/PO with default rules would be toggled on if marked.

raynebc commented 8 years ago

Just to get the ball rolling, all that's immediately needed is an additional MIDI exported that is identical to the standard MIDI except that forced HOPO markers are written written with the smallest possible length of 1 delta tick?

NewCreature commented 8 years ago

I'm not really sure. I don't know how GHTCP handles importing MIDI files. It might not even support that marker when importing.

Presumably a 0 length note will just be a note on followed by a note off with 0 ticks between them. Also, we would have to detect what the default HO/PO status of each note with a marker is so we can determine if it needs to be toggled to get it to the correct status. If the note already has the correct status, the marker shouldn't be written.

We shouldn't try to implement this until we can get a way to test out the changes. though. I'm discussing it with the user to see if we can arrange some tests. I don't have a copy of GH3 for Windows to test with.

raynebc commented 8 years ago

I don't think it's a problem to implement now and have the end users determine what needs changing, since it won't affect the regular MIDI file. Commit 1e1e759f3474362bebf5a669bf009e69ebe8f7e4 implements the GH3 MIDI variant with a 0 length forced HOPO marker.

NewCreature commented 8 years ago

Ok, I've sent a new build along to the user.

raynebc commented 7 years ago

Does the user have any comments on this new MIDI variant yet?

raphaelgoulart commented 7 years ago

Hey, I have written a RB/PS .mid to GH3 .chart converter a while ago; it is a simple drag and drop tool: https://github.com/raphaelgoulart/mid2chart - it could be useful in the project as a reference, at the very least. Also, a hacked version of GHTCP already supports RB/PS midis by default (it actually converts them to .chart using a .dll of my converter, then imports that .chart) - it is also available here: https://www.youtube.com/watch?v=WLbuBCwZW-8 The user should just use Open-GHTCP (which has more improvements than what I've mentioned) and he wouldn't have any more problems. However, implementing a proper .chart export is still a good idea for EoF, so the .chart format works like this: if there is a note (e.g. N 0 0) and a N 5 0 event in the same position, that note's HO/POs status will be reversed - if it was a strum, it'll be a HO/PO, and vice-versa. With the GH3+ hack, there is now a N 6 0 event that works in the same way (note + N 6 0 in the same position = tap/slider note). And it also implements open notes, which is N 7 0 (and it should be alone, not coupled with another note, though). Sorry for intruding on a 4 months old topic, but if you need more info or anything feel free to hit me up.

raynebc commented 7 years ago

I'll put some thought into it.