A song editor for "Frets On Fire"
Table of Contents

# Editing Songs

Now let's get into the heart of EOF, editing songs. EOF has several edit modes and each one operates in a different fashion. In order to get the most out of EOF you will want to use an edit mode that you are comfortable with. Before we go there, you will need to have a song opened for editing.
[ Creating Songs ] [ Loading Songs ] [ Saving Songs ] [ Edit Modes ] [ Recording Input ] [ Editor Keys ] [ Notes ] [ Beat Markers ] [ Tracks ] [ Catalog ] [ Events ] [ Big Rock Endings ] [ Drum Fills ]

# Creating Songs

To create a new song, select "File->New" from the menu.

# Loading Songs

There are two ways to load a song in EOF. The first way applies to songs that were created using EOF. Select "File->Load" and navigate to the "notes.eof" file that is in the folder of the song you want to edit. The second way applies to songs that were created in other editors that you wish to work on in EOF. Select "File->MIDI Import" and navigate to the "notes.mid" file located in the folder of the song you want to edit. It is recommended that you not use MIDI Import if you have a corresponding "notes.eof" as each subsequent load and save will degrade the accuracy of the note positions in the song. Instead, if you are going to work on a project that was started in another editor, use MIDI Import the first time and Load it from "notes.eof" for subsequent edits.
EOF supports loading EOF projects and importing MIDI songs into EOF projects through the command line. You can configure your operating system to associate ".eof" with EOF so that double clicking them will automatically launch EOF and load the project. It is not recommended that you associate EOF with MIDI files as they are a standard music format and should be associated with a proper music player. If you install a new version of EOF in a different location you will need to re-associate ".eof" files if you want this feature to continue working.

# Saving Songs

To save your work, select "File->Save." When you save your song, EOF saves three files: "notes.eof," "notes.mid," and "song.ini." "notes.eof" is the song data in EOF's native format. The ".eof" format holds the Artist, Title, Frettist, the precise positions of the notes and beat markers, and other project details. "notes.mid" is the FOF compatible notes. "song.ini" is the song information file used by FOF. Additionally, "guitar.ogg" will be created if one does not exist in the folder where the song files are being saved. If you are wondering why EOF doesn't just load and save directly from and to MIDI it is because I wanted to guarantee that the note positions would be exactly the same with each load/save. A lot of calculations are done to create a properly formatted MIDI file and inaccuracies in floating-point math could lead to slight changes in note positions over several editing sessions.

# Edit Modes

[ Classic Edit Mode ] [ Piano Roll Edit Mode ] [ Hold Edit Mode ] [ RexMundi Edit Mode ] [Guitar Tap Edit Mode ] [Guitar Strum Edit Mode ] [ Feedback Edit Mode ]
Before I describe the individual edit modes there are a few things that all edit modes (also referred to as "input methods") have in common. Firstly, all editing takes place in the edit pane that is located across the top of the screen. There are four tabs corresponding to the four different difficulty settings in FOF. The tab that is pulled to the front is the one that is currently being edited. To pull another tab to the front just click on the tab you want. Difficulties which contain notes will have an asterisk (*). In all edit modes notes are placed using the "pen." In some modes the "pen" is positioned at the mouse's x position on the screen. In others it is located at the green song position marker. How the pen operates depends on which edit mode you are using.

> # Classic Edit Mode

> Classic edit mode is the original edit mode used by early versions of EOF. In this mode the "pen" has note toggles corresponding to each lane. To toggle them use the keys 1-6. Right-click to place a note at the position of the pen. Pressing enter will place a note at the current seek position instead of the pen position.

> # Piano Roll Edit Mode

> Piano Roll edit mode works similarly to MIDI sequencer programs. The note colors are selected by positioning the mouse where that note color would be on the fret board. To add a note, right-click the position you want to add a note. If there is already a note at the position you right-click the color you click will be toggled within the note that is already there.

> # Hold Edit Mode

> Hold edit mode is exactly the same as Classic mode except you don't toggle the note colors. Instead you hold the corresponding number (1-6) and right-click to add the note at the position of the pen. Pressing enter will place a note at the current seek position instead of the pen position.

> # RexMundi Edit Mode

> RexMundi edit mode is exactly like Piano Roll mode except you use the keys 1-6 to toggle notes at the current pen position instead of right-clicking them.

> # Guitar Tap Edit Mode

> This mode is useful if you have a guitar controller hooked up to your computer and would like to tap out the notes on the fret buttons as the song plays. In this mode you cannot place chords or sustained notes. See the section Recording Input below for details on how to use this input method.

> # Guitar Strum Edit Mode

> This mode is similar to Guitar Tap except you must strum (assigned to Enter and Backslash keys by default) in order to place notes. This mode allows chords and will place notes as if you were actually playing the song in FOF. If you have enabled open strum notes for the active track (see the Enable open strum section), you can add an open bass strum by performing an up or down strum with all five fret buttons NOT pressed. See the section Recording Input below for details on how to use this input method.

> # Feedback Edit Mode

> This mode is similar to some of the controls in the Feedback (also known as "dB") chart editor. The left/right arrow keys increases/decreases the grid snap size, the up/down arrow keys seek forward/backward by one grid snap interval, Pg Up/Dn seeks one measure forward/backward (4/4 is assumed if no time signature is in effect), the 'A' key toggles the anchor status of a beat if the seek position is on a beat, the Delete key deletes a note at the current seek position if there is one if there are no notes explicitly selected, keys 1 through 6 toggle gems at the current seek position, the +/- keys alter the tempo of the beat at or immediately before the seek position (instead of the anchor at/before the seek position as in other edit modes). After seeking by grid snap/measure and during playback, the selected beat is updated to track the seek position. When playback is stopped, the seek position is moved to the closest grid snap interval. If no notes are selected, various note manipulation functions will apply to the note at the current seek position. In addition to using the mouse to select notes, you can hold the SHIFT key and seek by grid snap or measure to highlight a section of the fretboard and the notes it encompasses in order to manipulate multiple notes at once. Press and release the SHIFT key without performing any keyboard shortcuts to clear the selection. The playback speed keyboard shortcuts (; and ') change the speed in 10% increments instead of 25%.
> Since Feedback input mode places decreased importance on using the mouse for editing the chart, you can have the 3D preview window take up the entire EOF window by right clicking within the piano roll area and selecting "Full screen 3D view", or by using the CTRL+F shortcut. While the 3D window is full screen, mouse controls are disabled. So although the 3D window can be displayed full screen in any inupt mode, only Feedback input mode can enter notes when this feature is active. The info panel contents are displayed in the top left corner of the full screen 3D window, but if the text is in the way, you can toggle the display of the info panel with CTRL+I. Use CTRL+F again to exit full screen 3D view, or use the option from the right click menu.
> In addition to displaying the 3D preview full screen, you can change the 3D camera height by holding SHIFT and using either the - or the + key on the number pad. Or if you are using a keyboard where this is difficult to do (ie. a laptop keyboard), you can use the alternate keyboard controls of Backslash or SHIFT+Backslash. You can reset the 3D camera height by holding SHIFT and pressing the Enter key on the number pad, or by using CTRL+Backslash.

# Recording Input

EOF allows you to define buttons for and use a keyboard/game controller/etc. to place notes while EOF plays the chart. While this is not really an accurate method to chart, it does allow for some improvisational charting that you can edit to your liking afterward. The guitar frets, two strum keys (one for up, one for down), 4 drum pads and a bass pedal are definable keys to use for inputting notes in PART DRUMS or in any of the guitar or bass guitar tracks. To set up your controller for having EOF accept your input during playback i na guitar/bass track, follow these steps:

1. Tune EOF for smooth playing. Especially if you're going to place notes during playback, it is recommended that you have configured EOF's settings so that the AV delay has been configured accurately (See "Setting Up Your AV Delay") and that the buffer size is adequate enough to allow for playback without any stuttering/skipping of the audio. Enable or disable "Disable Vsync" and "Smooth Playback" in EOF's settings as needed so that the chart scrolls smoothly during playback.
2. Open EOF's File menu and select Controllers. Click the Guitar button and for each button you want to define/change, select the button, click the Redefine key and then press the key/controller button you want to use. EOF will let you use any game controller or nearly any key on the keyboard, but will not allow you to set the Spacebar to any guitar or drum button because it is used to start/pause chart playback. Pressing Escape will cancel the button definition and undefine that controller button. If EOF doesn't seem to be accepting your game controller's input, verify that it is plugged in and that your Operating System recognizes that it is connected. If you plug the controller in after EOF starts, you may need to restart EOF before it can detect the controller. Defining the strum key is only necessary if you will be using the "Guitar Strum" input method, since the "Guitar Tap" method does not use a strum to record notes during chart playback. If any of the buttons are mapped to use the same key or controller button, EOF will present a warning to bring this to your attention. Make sure all of the strum and fret definitions have a unique button set to them. Once you are finished mapping all of your buttons, click the OK button to return to EOF. Open EOF's Preferences menu and select the Guitar Tap or Guitar Strum input method, none of the other input methods allow you to record guitar notes during playback.
3. Open a beat synced chart. You can open one that you or somebody else created if you are certain it is correctly synced, or simply have EOF import the MIDI file for one of the Rock Band charts with decrypted audio. Ensure Grid Snap is turned OFF. Begin playback of the chart and enter notes in time with the music, such as on every drum beat. If you configured everything correctly, you should see notes being placed on the chart while the chart is playing. After you have entered at least a few notes, you can pause playback by hitting the Spacebar. If you are not satisfied with your timing, you can optionally remove the notes you placed, play back the chart and add some more notes.
4. While the chart is NOT playing, use Shift+PgUp/PgDn to seek to one of the notes you placed during playback and note the position time (given in minutes:seconds:hundredths of seconds)
5. Use PgUp to seek to the beat immediately before the placed note and note the difference in time between this position and the position of the note from the above step.
6. Examine multiple other placed notes and note the time difference between where the note is and where it was intended (on a beat line). Average these time differences and use that as your controller delay. The delay is measured in milliseconds instead of hundredths of seconds, so multiple the average time difference you got in step 3 by 10. You can enter this delay value by opening the File menu, selecting Controllers, clicking the Guitar button, clicking the Delay input field and typing the delay value you determined. Click OK to return to EOF.
7. With Grid Snap still turned OFF, play the chart again, placing notes in time with the music. If the notes are still not being placed on the beats even though you know you are tapping in the correct rhythm and that the chart is beat synced, increase or decrease the controller delay slightly and repeat this step again. If several of the notes you place are landing on beat lines, then you are finished configuring the controller delay. Controller delay may change from one controller/keyboard to the next, so make sure to check each time you use a different input device to place notes during chart playback. If you use the same set of controllers, you can make a note of which delay each uses and just edit the delay to the correct value each time you change controllers without having to test for the correct delay each time.

Note: PART DRUMS uses the defined keys (defined in File>Controllers>Drums) to place notes when the chart is playing and the drum track is being displayed, even if you aren't using the Guitar Strum or Guitar Tap input methods. This "Drum Record" input method is designed to react like a drum instead of a guitar, such as by not placing sustained notes, allowing you to hold the bass pedal down and only placing a bass drum note when you press the defined button down from a released state. If you are using the same controller (ie. keyboard) for recording drum notes as you are for guitar notes, you can enter the delay you set for the guitar controller delay into the drum controller delay (File>Controller>Drums). Otherwise, mapping the keys to a connected controller and testing to find the correct delay is done the same way as with the guitar controller delay.
When your controllers and their delays are set up, you are ready to use the Guitar Strum, Guitar Tap and "Drum Record" input methods to place notes in your charts. If you are placing notes on a beat synced chart, make sure that you have Grid Snap enabled to your preferred setting. If you have a hard time playing in a really accurate timing, you can use a larger Grid Snap value such as 1/4 or 1/8 and EOF will round your recorded notes up or down to the nearest grid snap position as they are placed. If you have not beat synced the chart, make sure Grid Snap is turned off before having EOF record notes onto the chart during playback, or else the Grid Snap logic will cause the notes to NOT be placed accurately to reflet your input.

# Editor Keys

In order to effectively use EOF you will need to familiarize yourself with the controls. Below is a list of all the controls you will need to know:
Space Bar:
Play/Pause the music. Hold Control to play at half speed. Hold Shift to play the current catalog entry.
Left/Right:
Use Left/Right to scroll through the song. To scroll faster, hold Shift. To scroll slower hold Control. To scroll in single millisecond increments, hold both Shift and Control.
Page Up/Page Down:
Seek to the previous/next beat marker.
Right-Click/Insert (notes):
Add a new note to the song.
Left-Click (notes):
Select the highlighted note for editing. Hold Control while clicking to select multiple notes. Hold Shift while clicking to select a range of notes.
Left-Click+Drag (notes):
Move selected note(s).
Mouse Wheel:
Scroll the mouse wheel up/down to change the length of the currently selected notes. Alternately, you can use the '[' and ']' keys to do the same. If grid snap is disabled, the wheel changes the length in 100ms increments, but if Shift is being held, it changes the length in 10ms increments instead.
1-6:
Does different things with the note colors depending on the current edit mode.
Left-Click (beats):
Select the highlighted beat.
Left-Click+Drag (beats):
Move the beat marker. An anchor is automatically created when you move a beat marker. Surrounding BPMs will be adjusted automatically. An anchor will not move unless dragged (unless a manual BPM Change is added), non-anchored beats will adjust to fit. Hold Shift when dragging a beat to prevent the notes within from being adjusted with the beat markers. Useful if you are beat syncing someone else's songs, for instance.
Right-Click (beats):
Seek to the highlighted beat line.
For another listing of available controls visit "Help->Keys" in the EOF menu.

# Notes

In EOF songs are made up of Notes and Beat Markers. Each note can contain up to six colors allowing you to place chords as well as single notes. Note positions are stored in absolute time and are accurate to the millisecond. The length of the note is also stored as a duration in milliseconds.

# Beat Markers

Beat markers appear on each beat throughout the entire song. You don't have to mind the beat markers in order to create a synchronized song but most people find it desirable to do so. EOF takes a different approach to beat markers compared to the other editors as it doesn't force your notes to line up with the beat markers. Instead, you are free to place your notes in sync with the audio and synchronize the beat markers later on. This allows you to quickly make a playable song and leaves it up to you whether or not you want to spend the extra time making the beat lines line up with the notes.

# Tracks

Originally Frets On Fire only allowed you to play one track per song. When Guitar Hero 2 came out FOF added support for playing Bass, Rhythm, and Lead Guitar tracks in addition to the standard Guitar track. EOF allows you to include all of these tracks if you so desire. By default, the Guitar track (PART GUITAR) is selected but you can choose another track by going to "Song->Track" and selecting the track you want to edit. PART DRUM is not currently supported by FOF but there are mods available from the community that allow you to play the drum track. You can add drums to your song without worrying as only FOF versions that support PART DRUM will recognize the track. If you want a mod with full support for PART DRUM, you will probably want to get FoFiX (the most actively developed version of FOF at the time of this writing).
Note that PART GUITAR COOP will be displayed as "Lead Guitar" in "Frets On Fire."

# Catalog

EOF provides a fret catalog where you can store selections of notes for the current song. If, for instance, you have a song that has a repeating guitar riff, you simply select all the notes in that riff and select "Song->Catalog->Add" from the menu to add them to the catalog. Once you have some notes in the catalog, you can open the catalog ("Song->Catalog->Show") and see the catalog entries you've added. Use the playback controls to listen to entries as desired (playback will begin 100ms earlier and end 100ms later than the entry's defined timings to better allow the first and last notes in the entry to be heard). You can paste notes from the catalog using the "Edit->Paste From->Catalog" menu item, so authoring the same riff is fast and easy. "Paste From->Catalog" will paste the notes from the currently selected catalog entry into the song starting at the beat in which the position line is set.
In addition to using the keyboard shortcut and menu function to show/hide the catalog, you can also click on the top line of text in the information panel (clicking "Information Panel" displays the catalog and clicking "Fret catalog" displays the information panel).

# Events

Some Frets On Fire mods allow you to use additional events in your songs for things such as adding a solo section. EOF allows you to place events at any beat marker in the song by first selecting a beat marker and then going to "Beat->Events" in the menu. From the "Events" dialog box use the "Add," "Edit," and "Delete" buttons to edit your events for the currently selected beat. You can view a list of all events for the entire song in "All Events" dialog ("Beat->All Events").
One neat thing you can do with events is add Practice mode sections to your song. To define a Practice mode section for use in FoF, FoFiX or Phase Shift, simply add a text event to the beat where you want the section to start and name it "section whatever" where "whatever" is replaced with the name of the section as you want it displayed in the game. This, however, is FoF notation. If you want to create section markers for use in Rock Band, the event should use one of the pre-defined names in the Rock Band Network documentation. Events that are recognized as section markers are displayed in yellow at the top of the editor window above beat that defines it. To review all sections for a chart, open the "All Events" dialog and filter to show section events (see "Beat->All Events").
Text events can also be used to define guitar solos in FoF/FoFiX but this method is deprecated (see "Note->Solos" for the correct way to define solo sections). Nonetheless, I will explain how to do so. To mark a solo section you simply add a text event at the start of the solo named "solo_on" and one at the end of the solo named "solo_off." Solos marked this way will appear in the Practice mode listing. Alternately, naming your event "section Guitar_Solo" or something containing the word "solo" will start a solo section. Solo sections defined this way will end when the next text event not containing the word "solo" is reached. You will need to define section markers where your solo sections are if you want them to show up in the Practice Mode listing. Do note however that if you have defined any section events as per the previous paragraph, this causes FoF to disable the "solo_on"/"solo_off" system, and you will need to mark the solo phrases either with "Note>Solos" or by defining section events that specify a solo.
The [end] text event has a special meaning in that it marks the end of the chart. When the MIDI is written during save, EOF will not write any events that occur after this event if it has been defined. If the chart being saved has a note whose tail extends beyond an [end] event, the end of the note won't be written and the MIDI file may malfunction. If no [end] event is manually defined, EOF will automatically place one at the end of the chart.

# Big Rock Endings

To add a big rock ending for an instrument, click the "BRE" tab for the desired instrument track and place a five note chord that runs the desired length of the BRE section. For a drum track, you also have to place a text event saying big_rock_ending at the beat where the BRE starts, otherwise the game will treat it as a drum fill section instead.

# Drum Fills

A drum fill is a freestyle drum section that ends in a note that the drummer must hit in order to deploy overdrive. To author a drum fill, author a five note chord in the desired area of the chart in PART DRUMS's "BRE" tab. This is essentially the same thing as marking a big rock ending, except you do not place a big_rock_ending text event.