A song editor for "Frets On Fire"

# MIDI IMPORT GUIDE

When Rock Band 3 was released, it included the ability to play realistic guitar tablature with less realistic guitar controllers. The Mustang guitar was a plastic controller with 6 rows of 17 buttons that were spaced apart just right to simulate the fret lengths on a small scale electric guitar. The 6 strings themselves were plastic and had vibration sensors that detected when you picked them with a guitar pick. It didn't work perfectly, but it was pretty groundbreaking at the time. Even more impressive was the Squier guitar, which is a real wood body electric guitar with sensors to detect at which fret each string was pressed. There were a couple other options such as the YouRock Guitar, which was a third party plastic MIDI guitar that was able to send MIDI data in a way that was mostly compatible with the game. Many chart authors for this style of chart use MIDI editors like REAPER, which was the production tool that Harmonix (the developer of the Rock Band franchise) used. Today it remains a very popular option to get professional results, at the cost of a high learning curve and arguably higher difficulty of use than with tools made specifically for creating rhythm game charts.
https://rhythmverse.co/ is one of, if not the, largest resource for MIDI format pro guitar content. You can click the "Filters" button on the page to select the "Pro guitar" and/or "Pro bass" instrument filters and click submit. The easiest ones to work with will be ones where the chart format is cited to be for Clone Hero, YARG or Phase Shift. In this case the chart files are in a standard compression format like ZIP that you can decompress with your Operating System or a good utility like 7zip (https://www.7-zip.org/). The other format you can use is the Xbox 360 version Rock Band 3 (which stores the content in a proprietary container format file known as "CON"). CON files can have the chart files and audio extracted with the "Clone Hero converter" function of the Nautilus tool:
https://github.com/trojannemo/Nautilus/releases
One thing to keep in mind is that charts created for Rock Band sometimes have audio separated into multiple files, so depending on your tastes you may need to use an audio editor like Audacity (https://www.audacityteam.org/) to load them all up and export them as a single OGG file. But if the chart does have multiple audio files, you can optionally merge them in different ways such as making a version of the chart with the guitar part left out so you can play with the song instead of over it (and maybe even a version of the chart with the bass audio removed, etc). You can merge several audio files into one simply by selecting the desired audio files in Windows's File Explorer:
Dragging and dropping them all into Audacity:
Then using Audacity's "File>Export audio" function. Make sure the "Entire project" option is selected, select "Ogg Vorbis Files" as the format, and choose a name and location to save. "song.ogg" is a good general name to use for this, and since EOF would automatically load the guitar.ogg file if it's there when you import the MIDI file later, it may be best to create a new folder for EOF to use for the project, just putting the combined audio file, song.ini and the notes.mid file there.
Feel free to drop into the Rhythmverse discord (https://discord.gg/9NbjbD3D) if you can't get the website or converter tool to work, or if you just want to join the community.
notes.mid is traditionally the file that would contain the instrument notes. Also of importance is the song.ini file that contains various metadata about the chart including the tuning of the guitar/bass arrangements and the chart's delay (if any). You can import a MIDI format chart by using File>Import>MIDI. If you are prompted to import unsupported tracks such as "HARM1" (vocal harmonies) or "PART REAL_KEYS_E" (keyboard/piano arrangement), you can click no for each as they are not relevant for IMMERROCK. You may get various warnings/notices that likely won't be a problem as long as the guitar/bass content imports and appears to be synchronized with the music. Lastly, due to how EOF has always been designed to work, "mid-beat" tempo changes in MIDI format charts are a complication you may run into depending on how the chart author created the chart. For this reason, the imported beat timings may look messy in some parts as EOF tries to insert new beats to store the offending tempo changes. As a side effect, the notes may appear out of sync with the beat markers even if the notes themselves seem to remain synced with the music. You can manipulate the beat markers to try to re-align them with the notes, but if the notes are in sync with the audio (as tested with clap sound cue) it may just be a cosmetic issue and the arrangement may work perfectly fine in IMMERROCK. If you don't like the imported results as they appear in EOF, you can try toggling the "Imports drop mid beat tempos" option in "File>Preferences>Import/Export" and importing the MIDI again. This preference will cause EOF to delete the beat markers it inserted for the sake of storing mid-beat tempo changes during the import.
For use in IMMERROCK, the sync of the notes is more important than the sync of the beat markers. You can test the sync of the notes by enabling the "clap" sound cue with ("Edit>Claps" or press the C key) and playing back the chart in EOF. The clap sound effect should play at the same times as the notes in the audio are playing. If they are, then you needn't worry about the beat markers unless the exported chart doesn't work as expected in IMMERROCK. Otherwise if you encounter problems with the note timing when playing in IMMERROCK, or if you want to clean up the project to make the tempo map look nicer, you certainly can. Just make sure to go into File>Preferences>Preferences and disable the "Note auto-adjust" option (remember to enable this preference again when you're done with your edits, as it's usually beneficial for chart authoring), because in this case you want to keep the notes where they are and move the beat markers to them instead. EOF will still let you move notes if you click and drag on them so be careful, but you can otherwise move the beat markers to line them up with the notes however you see fit. For example, this import MIDI file is messy in some parts:
The blue downward arrow represents a beat marker that EOF inserted to store a tempo change that occurs away from a beat marker instead of directly on the beat position right next to it. Some of the surrounding notes are consequently not lined up with the beat markers. To make this look nicer, there are at least a few strategies you can use:
1. You can move beats manually with the mouse by clicking and dragging them to have them line up with note positions. Be careful with this method because if you accidentally click and drag on a note instead of a beat marker, EOF will allow you to move the note even if you don't intend to.
2. You can use the PgUp and PgDn keys to seek one beat marker at a time, seek to the position of one you want to make longer or shorter, make sure it is an anchor (either has a tempo change or has a red down arrow, you can press the A key while a beat is selected to toggle its anchor status on or off) and use the - and = keys to adjust the tempo of the last anchor that is at/before the seek position in 1 BPM increments. You can hold SHIFT while using the - and = keys to adjust the tempo in 0.1 BPM increments, or hold CTRL+SHIFT while pressing - and = to adjust in 0.01 BPM increments. Be careful not to hold CTRL by itself and press - though, as this is a separate function that will decrease the fret number of any notes that happen to be selected (you can press CTRL+D to deselect all notes, or click on a portion of horizontal line area of the piano roll that isn't a note and it should deselect). To keep the notes from being moved accidentally, you can enable the "Song>Disable click and drag" option when using this strategy since it doesn't necessitate clicking and dragging the beat markers.
3. A faster and more precise way to achieve the results of the above 2 strategies is to use the "Beat>Move to seek pos" function. What this function does is move the currently selected beat marker (the last one you clicked on, which will appear in EOF as < ### > instead of ### or --> ) to the seek position. So you would use SHIFT+PgUp/Dn to seek to the exact position of the note to which you want a nearby beat marker to move, click on the beat marker in question and use "Beat>Move to seek pos" to line the beat up to the note's position. To keep the notes from being moved accidentally, you can also enable the "Song>Disable click and drag" option.
Strategy 3 is probably the best to use to align beats with notes because you can avoid clicking and dragging the notes on accident, and you can avoid using a keyboard shortcut that alters the fret values on accident. If you make a mistake moving a beat, you can undo it with CTRL+Z (Edit>Undo) and try again. After spending a minute or so re-aligning some of the beat markers to the notes and deleting that tiny beat (clicking on the beat marker and using Beat>Delete), the result looks nicer and may be less prone to malfunction or ridicule from other rhythm game chart authors:
Even if the notes all appear to be perfectly in sync and "grid snapped" (aligned with fractions of a beat such as on the beat line, exactly half-way between beats, etc), that may not be the case. EOF has many additional tools (ie. "Song>Highlight non grid snapped notes", "Track>Repair grid snap", "Edit>Grid snap>Display grid lines", see the manual for descriptions of these functions) to help find and correct such issues in case you are a perfectionist (although for the sake of IMMERROCK it is likely not necessary). Listen to the chart with metronome enabled (Edit>Metronome, or press the M key) to check the beat sync if you like, but definitely at least spot-check the note timing by listening to the chart playback with clap enabled ("Edit>Claps" or press the C key). Once you are satisfied with the results, proceed to export to IMMERROCK format [IMMERROCK EXPORT GUIDE]