<commit_before>Clap and metronome:
   -Volume control for each
   -Ability to enable clapping per fret
   -Ability to play ticks/claps at full speed when the chart is played back slowly
   -Ability to customize the clap sound per fret.  For example, snare can be clap, high hat can be tick.  Eventually, maybe other sounds can become usable for the clap or metronome ticks.

Note manipulation:
   -Using a modifier key+click to extend a tail to the mouse click
   -Note pattern search and replace (or catalog entry search and replace)
   -Tail truncating option:  Ability to specify a minimum length for a tail (in ms) that will cause tails in the chart to be removed from notes that aren't at least as long as the specified duration.  And auto-trimming of tails that are long enough to extend to the beginning of other notes by a specified number of ms.
   -A "Select Previous" function would be great to compliment "Select Rest"

Bookmarks:
   -Display each bookmark's number above/below/wherever the bookmark
   -Bookmark management features:  Clearing all, labeling bookmarks, displaying timestamps, assign FoF events to a bookmark, etc.

Practice Mode Charts:
   -Resample the song with the correct ratio, ie. 75% chart would use 44.1KHz / .75 = 58.8KHz
   -Divide the midi offset by the correct ratio, adjusting notes automatically
   -Multiply the starting tempo by the correct ratio and do the same for all tempo changes, adjusting notes automatically

Advanced audio functions:
   -Ability to provide a negative midi offset so that EOF will create and insert silence accordingly
   -Likewise the ability to truncate audio from a song that starts before the midi offset
   -Since EOF is able to tell that a source OGG file is not sampled at 44.1KHz, it would be a great feature to offer to the user to use EOF's bundled audio utilities to resample the audio, backing up the old ogg file as something like (filename).ogg.backup.  This could be offered during chart creation, allowing the user to correct the issue from the very beginning.  Subsequent loads of the chart when the ogg is the wrong sample rate could just give a warning message, offering to let the user have EOF resample it from a menu item.  Such a menu item seems like it would be well-placed in the Song menu, and could be grayed out if the ogg file was the correct sample rate.
   -Identify when the input audio is monaural during chart creation.  Lame should allow the mp3 to be decompressed as stereo even if the mp3 is mono, so that the resulting ogg is a proper stereo audio file
   -Since computer lag can cause de-sync during chart playback when "Smooth playback" is being used, maybe there could be a feature to trigger EOF to quickly dump the buffered audio and reload it for the current seek position without requiring the playback to be stopped and restarted.  If this could be done efficiently, maybe this could be done every X # of beat marks to automatically keep a chart synced during playback.  This latter feature might cause a little stutter, so perhaps it could be a user-enabled feature, but feasibly could still offer smoother playback than if "Smooth playback" is not enabled.
   -Ability to play at less than 1/4 speed.  It sounds extreme, but sometimes if I want to get that snare anchored dead-on, it takes several tries with 25% speed to sense which direction to drag the anchor.
   -Ability to play song at less than 100% speed without changing pitch (similar to using the "change tempo" effect in Audacity)

Load Ogg and related functionality:
   -Ability to specify multiple audio files that play back (each with their own definable delay) synchronously, and ability to toggle each on/off.  This will make it easier to maintain an alternate audio recording (ie. karaoke version) of a chart's audio as well as make it more convenient to play decrypted Rock Band charts for review, editing, etc.
      OR
   -As more people may begin to use "Load OGG", I still believe it would be handy to have a way to display to the user which different OGG profiles they have created in their chart.  If they manipulate their files often, they might be easy to forget which specific filenames they had loaded with the "Load OGG" feature.  Such a list of profiles could be listed as something like a "Load OGG Profile" submenu item, below "Load OGG" in the File menu.  This submenu could be grayed out until "Load OGG" is used to load a new OGG file at least once for a chart, but would otherwise list the filenames for OGGs the user had previously loaded for the chart.  If the file for an OGG profile is missing/renamed, EOF could remove that entry from the displayed OGG profile list, or gray it out/bold it in red to point out that the file doesn't exist at the expected path.
   -Since the last used OGG profile of a chart is now loaded, could the last selected instrument difficulty also be reloaded automatically?
   -Ability to remove one/all OGG profiles, in the case that they get out of control or corrupted

Playback controls:
   -Ability to use a modifier with the space key to force full-speed playback..

Text events:
   -Text events displaying above piano roll
   -In the "All Events" list, allow double clicking on an events to seek to it, or add hotkeys to do a text search

General features:
   -Ability to lock an instrument+difficulty part to prevent accidental editing
   -Undo last seek
   -Display PART GUITAR COOP as "PART GUITAR COOP (Lead)" to reflect that FoFiX offers the track as "Lead Guitar"
   -Reload feature (map to F5) that will reload the chart, prompting the user to confirm that changes should be discarded.  This is a more automated way of using F3 and browsing to the chart that is already open.
   -A visual cue for configuring the AV delay, maybe something along the lines of the 3d panel flashing with a contrast color when a metronome tick or a clap is sounding.  The 3d panel could remain filled for however many milliseconds the tick/clap is sounding.
   -Support for other input audio formats that oggenc2 may already support, such as WAV
   -During MIDI import, if the imported MIDI contains just a single chord (or below a defined threshold number of notes) in any instrument difficulty, prompt the user if he/she wants to remove dummy notes from the chart (Feedback inserts notes so that each difficulty contains at least one note, for compatibility with playing the chart on a hacked Guitar Hero game).
   -Add button conflict detection in "Controller Settings" to prevent accidentally mapping the same button to multiple controls
   -A volume control that can amplify audio playback.  Some processing filters in Audacity leave audio very quiet so I have to crank the volume up a lot.
   -The custom grid snap option is great, but since it is implemented as notes per beat (and doesn't support fractional numbers), effectively, the custom grid snap can only be a number 1/(4X) in relation to measures.  Could you implement a radio button or something in the custom grid snap interval dialog to allow the user to specify whether the interval is per beat or per measure?  Being able to set per beat would allow any 1/x measure interval to be used, maximizing the usability of this feature.  Alternatively, actual time signatures (X/Y) might be more useful to implement
   -Have a MIDI edit (not import) mode that retains all original MIDI timings, allowing the user to add text events, instrumental notes, special notes, etc. with zero risk of affecting any note or beat positions.
   -A "practice" input mode that registers hits like guitar strum mode while showing the already-charted notes in the 3d panel.  This wouldn't edit the chart, but could show the user's mistakes rendered in red on the piano roll while hits that were close enough to the hit window could be rendered in blue.  This isn't really meant to be a replacement for testing in FoF itself, but it would allow the user to stop/start/restart parts of the chart to test playability, and the ability to see each playback mistake would allow somebody to practice a chart and review which riffs might require some more practice.  This is a pretty outlandish idea, but I thought it seems fun
   -Ability to export the click track as an EOF file with no notes, no text events, etc.  Only contains the anchors and tempo information.  This could be useful to recover from a chart with corrupted OGG profiles or something else that makes it desirable to have a clean chart to copy+paste the notes into.  Importing the saved MIDI is better than nothing, but converting between timings has some precision loss.
   -Add ability to double/halve the tempo starting from an anchor.  If there are an even number of beat lines until the next anchor, then no notes should be affected and no anchors should move if the tempo is halved.  Doubling the tempo should not cause any anchors/notes to move.  Text events, bookmarks, etc. should keep their timestamp placement where possible.  If a text event becomes mid-beat (its beat marker was removed during tempo halving), it should move to the previous beat marker at the end of the operation
   -Option to play clap/tick at full speed even when the chart is played slowly.  At 25% speed, these sound effects are hard to hear compared to the rest of the audio, making it harder to check sync.

Extra chart features:
   -Ability to browse for, render and save the label PNG file with the rest of the chart files upon saving the chart
   -Add hotkeys to Add and Delete buttons in INI settings
   -Add custom INI support for diff_guitar = 0 through 6, diff_drums = 0 through 6, diff_bass = 0 through 6, diff_band = 0 through 6 (I understand FoFiX uses these to display chart difficulties in stars.  There may now be similar tags used to represent vocal difficulty, but I don't know)
   -Preview OGG support:  It may require more thought, but I believe it could be as easy as having the user set a start and end bookmark or a phrase, and you could mux the audio into a file called preview.ogg.  Since EOF doesn't technically support master audio tracks (different audio for each instrument track), muxing from guitar.ogg may be sufficient, although perhaps if EOF finds other audio tracks in the chart folder (drums.ogg, song.ogg, etc), it could offer to mix those tracks in as well

General UI:
   -Ability to hit Enter to OK out of input dialog windows
   -Option to increment a number in the backup save filename so that multiple backups can be kept as a kind of automatic version control.  To keep the file sizes down, you can have EOF compress the backup file (compresses as well as < .5% or original size).  A huge ambition could be making it so that the backups are kept in a single file that keeps a running record of all edits made between saves, providing some kind of human-readable description of each change and a mechanism to produce the chart as it was at any given edit.  This would require the original chart and a functional transaction log (like that of a database).
   -When opening an existing EOF file or importing a MIDI and only one instrument and difficulty part has notes, default to displaying it instead of Guitar>Amazing
   -A keyboard control to toggle grid snap on/off
   -When the previous directory that a file was loaded from no longer exists, EOF defaults to starting file loading dialog menus back to EOF's own directory.  Consider having it reset to the user-configured Song Folder instead, as for those of us that store all our chart files in the Song Folder, it will save the effort of browsing to it in this scenario.  Defaulting all file browser windows to the song folder if the last selected file is renamed/deleted/mising may be a nice idea
   -During the "Location for New Song" dialog when creating a new chart, consider graying out the "Create new folder" text input box unless the "Create new folder" radio button is actively selected.
   -If Ctrl-S is going to be used for Save, Ctrl-A can be used for select all, as it's the traditional keyboard combo for that function
   -A notifier displayed in red in the edit pane or the info panel if an off-screen note was altered
   -Add the capability to detect and warn the user to what people refer to as "double bass" drum charting, which isn't so much the fact that two bass notes are close together but bass notes continuously being close together.  We'd need a specific frame of reference, such as at least 3 bass notes that are each spaced apart by #ms or less
   -Consider suppressing the menu when right clicking on a beat marker, as the menu's activation makes it contrast quite a bit with all other seek operations
   -The note numbering is strange on multi-difficulty charts, such as selecting the first guitar note in Easy lists it as Note=0, in Amazing, it is given as Note=2.  Even if this is true to the order of the MIDI events, the information isn't necessarily useful unless these numbers are relative to the notes in the same instrument difficulty.  Would it be possible to change the Hover note and Selected note numbering so the numbers are relative to the notes in the active difficulty, ie. the first note selected in any difficulty is reported as note 1?  Especially now that the note numbers in PART VOCALS will be given without influence from other difficulties, it will make it feel more consistent.

Fret catalog:
   -In the fret catalog, display the number of beats that an entry occupies, so it is easy to determine if the entry will fit into a given section of the piano roll.  Possibly warn user during pasting from catalog if the paste will overlap existing notes in the chart.
   -Allow the fret catalog to be extended into the space used for the 3d panel for added visibility of patterns.  Or otherwise an ability to seek left and right within a catalog entry so that it can be seen in its entirety without playing the entire entry.
   -Ability to name entries in the fret catalog (ie. guitar riff 1)
   -Enable the user to define a positive or negative padding (ie. # of milliseconds) for the start and end of note catalog entries for playback.
   -In the information panel, in addition to showing which catalog entry is selected, display the originating difficulty in parentheses next to it (Guitar>Amazing)
   -Ability to seek to the current Catalog entry's starting position in the piano roll
   -Ability to insert selected notes into current fret catalog position, or otherwise an ability to reorder catalog entries

User customization:
   -Ability for users to provide their own note gem graphics.
   -Ability to change the audio used for each fret's clap and the metronome.  Perhaps user-definable clap/tick can be provided similarly to user-definable vocal tones may be implemented?
   -An option to create permanent custom ini parameters, such as in INI Settings.  So say if I wanted the year= parameter to be immediately available for every chart I make, I can add it there, and then in the song properties, the custom fields can be filled.  If a custom field has contents, it can be exported in the song.ini.  This will prevent typos when long named parameters (ie. "unlock_require") are entered for each song that is created.  Could be more work than it's worth, but it's something that would add convenience.  The number of custom parameters can be limited to prevent the song properties window from becoming tall enough to require scrolling.

Note phrases:
   -For edits that cause two like phrases to be adjacent and not separated by normal notes or a considerable amount of space (ie. two overdrive phrases), prompt the user about whether they should be combined automatically.  This would prevent some of the new users from marking 5 back to back one-note Star Power phrases instead of one phrase that is 5 notes long.  I've actually seen users do this several times.
   -Rendering the location of SP phrases on the piano roll (ie with a silver colored strip)
   -Since MFH said solo section markers and MIDI solo phrases can coexist in a chart, I think it would be great if EOF made use of this to provide backwards compatibility for PART GUITAR and PART GUITAR COOP solos with older versions of FoF.  When a user marks a solo phrase in either of those two tracks, EOF could prompt if the user wants to create a name for the solo.  If they specify yes, EOF can provide a dialog window to get input from the user.  Upon save, EOF could insert a section marker event in the MIDI at the position of the first note in the solo, but it would need to look at the end of the solo.  If the solo ends more than one beat before a section marker, it would need to create a section marker to indicate the end of the solo and ensure that marker was similarly-named to the solo name specified by the user except that it cannot contain the string "solo".  For example if the user called a solo "Guitar Solo A", EOF could insert the "section Guitar Solo A" text event accordingly, and at the end of the solo, insert a "section Guitar Sol_ A End" text event.  This would require doing a case-insensitive string search for "solo" and replacing it with something like "sol_", which would prevent FoF from treating it as the start or continuation of a solo.  If the solo ends right before another section marker (without the string "solo" in it), the section marker ends the solo automatically.  This process can be done by the user, but it would be another way to make EOF easier to use overall.
   -If an EOF file has solo paths but no SP paths created, maybe it could warn during save that as such, the resulting MIDI will only have SP paths and no solos. MFH took an idea I proposed earlier about making FoF's phrase detection controllable in song.ini and posted it on the project's bug tracker, but it's a low priority issue. Someday it will be implemented, but until then we'll all have to work around it
   -Add support for a "Unison overdrive" phrase, which places an overdrive phrase over the same portion of the guitar, drum and bass tracks

Advanced chart functions:
   -Ability to start and end user-specified MIDI notes similarly to adding user-specified text events.  This may help future proof EOF if FoFiX decides to implement any unusual chart markings.

Documentation:
   -Update the documentation and tutorial to include new features like making Big Rock Endings:  http://www.fretsonfire.net/forums/viewtopic.php?f=32&t=38283#p407322
   -It may be a good feature to summarize Harmonix's charting guidelines in EOF's included documentation.  If you're interested, I could make a list of things that could possibly be programmed into EOF to enforce Harmonix's standards, ie. the minimum length of sustained notes, minimum distance between notes, which chords are valid for given difficulties, if very many notes are not grid snapped, etc.  I believe this would be an excellent feature, as the user could have EOF test the chart and offer to make corrections or seek to a problematic part of the chart
   -Some keyboard commands such as CTRL+E seem to be missing from the keyboard commands help.  Others are probably missing, but I can audit them if you want.

Lyrics/Vocals:
   -If lyrics have been created, provide an option to also export subtitle style lyrics (script.txt) upon save, providing the appropriate parameter in the song.ini file to enable them.
   -Allow paste operations (especially "paste from") to be used for PART VOCALS for instrument tracks.  Some people that are charting "vocal rhythm" may prefer to have a button tap/strum capability at some point of vocal charting and may want to try, although once EOF's lyric import is working, they can just save the chart and use the import to load the vocal rhythm via MIDI if EOF can prompt the user for the appropriate track and difficulty identifier (ie. G1 for easy guitar)
      OR
   -Alternatively, to remove the need of charting vocal rhyhm as a vocal charting aid, allow guitar tap/guitar strum (or similar input method using mouse/keyboard/MIDI input) to be used in PART VOCALS.  VividLyric editor's mouse input is extremely easy to use:  During audio playback, left click starts a line phrase if none is already started, otherwise it inserts a break (ie. ends current phrase and immediately starts next lyric phrase).  Right click ends a line phrase.  This two button input method is much more effective than a single button input such as Rokudaime's lyric editor.
   -Ability to raise/lower a vocal note by one octave (I can't remember if / and * are taken, if not, they might work nicely)
   -Hover lyric in the info panel could give the note (with octave, such as C4) and perhaps the MIDI note number (ie. #60 for note C4)
   -Ability to change the mini piano to a grand staff, which will affect the display of the gems in the piano roll to reflect sheet music.  It would make it easier for beginners to enter sheet music into EOF.
   -Display scrolling lyrics in the full piano panel for each vocal note as it is played/hovered.  The scrolling speed would have to depend on how short the lyric duration is, requiring some small amount of math to calculate each lyric's scrolling velocity.  Below/above the scrolling lyric would be an excellent place to implement a vocal note tube similar to that in Rock Band.
   -Ability to make the full piano panel wider by cutting into some of the unused real estate in the info panel
   -Consider adding a freestyle phrase marker option for PART VOCALS, which would append '#' to all lyrics and choose an arbitrary pitch value to export (or not export pitches in the MIDI) for the notes within the phrase (probably have the EOF file retain original pitches if the user decides to revert the phrase back to the originally defined pitches).
   -Add option to toggle the piano panel into a lyric review/editor control, so users can see if they have their line markers placed correctly, etc.  Being able to edit lyrics, phrase markers, etc. here would be extremely convenient.  Right clicking on a lyric to seek the piano roll to the lyric would also be a plus.
   -Allow for sustained vocal tones.  I couldn't find an easy way to have the tone sustain by looping the short samples, so it might be tricky to have it play the tone nicely in an indefinite manner, so a third option for tone sample could be to play the sample until it runs out and then to replay the sample once it ended.  If you are interested, I could sample each note being played much longer (increase the note duration in the MIDI that I play back) or play around with the sustain pedal I have for my synthesizer.
   -This would be more of a just-for-fun kind of feature, but how about an option to play back the PART VOCALS track so that the vocal notes drop from the top of the full piano pane onto the appropriate piano key.  This would mimic the playback of the synthesizer game Synthesia (http://www.synthesiagame.com/) and allow the user to get visual feedback on the range of vocal notes in a song.  There may be enough room in the full piano pane to do this in edition to the scrolling lyrics and/or vocal note "tube".
   -In the new/edit lyric dialog window, display the currently selected pitch for the new/edited lyric and add drop down lists (one for note, one for octave) and/or text input field field to allow the user to manually enter a pitch number or note name (ie. C4).
   -EOF allows lines of lyrics to overlap, but the way the lines are displayed, it can't be seen.  Once the chart is saved and the MIDI is loaded, it is seen that one of the overlapping lines is/was removed.  Perhaps the line colors can alternate from one line to the next to make line separation more visible.
   -Ability to alter a vocal note by using the full piano.  When a vocal note is selected, highlight the piano key it corresponds to, and allow clicking a piano key to change the note.  This might be less useful if the piano key's tone cannot be tested before redefining the lyric's pitch.  Perhaps the P key can be use to sound the mouse'd over mini/full piano key's tone, and clicking on it can be a way to define the pitch of the selected lyric.  It might be important to prompt the user if multiple lyrics are selected when a piano key is clicked, to prevent changing more lyric tones than intended.
   -Regarding lyric import functionality:  If EOF would only maintain one vocal track, the current vocal track would have to be discarded during a lyric import.  However if EOF could maintain a temporary vocal track, or an arbitrary number of vocal tracks (perhaps they could each be listed with their own tab?), then the original vocal track could be retained and lyrics imports could load into a separate vocal track instance.  The user could then either discard all vocal tracks except for one during save, or all vocal track instances could be kept and the user just selects which one is the active vocal track (which will be used during save).  This might make it convenient for the user to compare multiple lyric files they may have found for the chart they are working on, and they could copy from imported tracks to paste into the normal PART VOCALS track.
   -When using Shift+PgUp/PgDn to seek among lyrics in PART VOCALS, perhaps the lyric text at the current position can be displayed someplace like in the info (like in the Lyric= line) or full piano panels (highlight the lyric or move a line/cursor in front of the lyric in the lyric preview)?  Most of the time, lyrics are close enough together that they will be displayed in an overlapping fashion unless the user zooms in the piano roll.  This feature request wouldn't necessarily be that useful unless there was a way to edit the lyric at the current position instead of just being able to edit the one that is currently selected.  If two lyrics are too close together when they are overlapping, it could be difficult to select the desired lyric without zooming in, which may annoy some people.
   -The new lyric line preview is pretty neat, but it's easy for the lyric phrase to be longer than it can display in its entirety.  If scrolling lyric preview is a ways off, it may be easier to use a simpler method, like recentering the lyric preview upon each lyric as it is reached during playback, so it would be visible.  Or simpler yet may be that when the last visible character in the lyric preview was reached, it would scroll one screen (mini piano pane width) to the right to display more lyrics in that lryic phrase.
   -Optional microphone/MIDI instrument input for setting vocal pitch.  It would be pretty cool to plug in my Casio to set lyric pitches.<commit_msg>Removing some of the completed feature additions.<commit_after>Clap and metronome:
   -Ability to enable clapping per fret
   -Ability to play ticks/claps at full speed when the chart is played back slowly
   -Ability to customize the clap sound per fret.  For example, snare can be clap, high hat can be tick.  Eventually, maybe other sounds can become usable for the clap or metronome ticks.

Note manipulation:
   -Using a modifier key+click to extend a tail to the mouse click
   -Note pattern search and replace (or catalog entry search and replace)
   -Tail truncating option:  Ability to specify a minimum length for a tail (in ms) that will cause tails in the chart to be removed from notes that aren't at least as long as the specified duration.  And auto-trimming of tails that are long enough to extend to the beginning of other notes by a specified number of ms.

Bookmarks:
   -Display each bookmark's number above/below/wherever the bookmark
   -Bookmark management features:  Clearing all, labeling bookmarks, displaying timestamps, assign FoF events to a bookmark, etc.

Practice Mode Charts:
   -Resample the song with the correct ratio, ie. 75% chart would use 44.1KHz / .75 = 58.8KHz
   -Divide the midi offset by the correct ratio, adjusting notes automatically
   -Multiply the starting tempo by the correct ratio and do the same for all tempo changes, adjusting notes automatically

Advanced audio functions:
   -Ability to provide a negative midi offset so that EOF will create and insert silence accordingly
   -Likewise the ability to truncate audio from a song that starts before the midi offset
   -Since EOF is able to tell that a source OGG file is not sampled at 44.1KHz, it would be a great feature to offer to the user to use EOF's bundled audio utilities to resample the audio, backing up the old ogg file as something like (filename).ogg.backup.  This could be offered during chart creation, allowing the user to correct the issue from the very beginning.  Subsequent loads of the chart when the ogg is the wrong sample rate could just give a warning message, offering to let the user have EOF resample it from a menu item.  Such a menu item seems like it would be well-placed in the Song menu, and could be grayed out if the ogg file was the correct sample rate.
   -Identify when the input audio is monaural during chart creation.  Lame should allow the mp3 to be decompressed as stereo even if the mp3 is mono, so that the resulting ogg is a proper stereo audio file
   -Since computer lag can cause de-sync during chart playback when "Smooth playback" is being used, maybe there could be a feature to trigger EOF to quickly dump the buffered audio and reload it for the current seek position without requiring the playback to be stopped and restarted.  If this could be done efficiently, maybe this could be done every X # of beat marks to automatically keep a chart synced during playback.  This latter feature might cause a little stutter, so perhaps it could be a user-enabled feature, but feasibly could still offer smoother playback than if "Smooth playback" is not enabled.
   -Ability to play song at less than 100% speed without changing pitch (similar to using the "change tempo" effect in Audacity)

Load Ogg and related functionality:
   -Ability to specify multiple audio files that play back (each with their own definable delay) synchronously, and ability to toggle each on/off.  This will make it easier to maintain an alternate audio recording (ie. karaoke version) of a chart's audio as well as make it more convenient to play decrypted Rock Band charts for review, editing, etc.
      OR
   -As more people may begin to use "Load OGG", I still believe it would be handy to have a way to display to the user which different OGG profiles they have created in their chart.  If they manipulate their files often, they might be easy to forget which specific filenames they had loaded with the "Load OGG" feature.  Such a list of profiles could be listed as something like a "Load OGG Profile" submenu item, below "Load OGG" in the File menu.  This submenu could be grayed out until "Load OGG" is used to load a new OGG file at least once for a chart, but would otherwise list the filenames for OGGs the user had previously loaded for the chart.  If the file for an OGG profile is missing/renamed, EOF could remove that entry from the displayed OGG profile list, or gray it out/bold it in red to point out that the file doesn't exist at the expected path.
   -Since the last used OGG profile of a chart is now loaded, could the last selected instrument difficulty also be reloaded automatically?
   -Ability to remove one/all OGG profiles, in the case that they get out of control or corrupted

Text events:
   -Text events displaying above piano roll
   -In the "All Events" list, allow double clicking on an events to seek to it, or add hotkeys to do a text search

General features:
   -Ability to lock an instrument+difficulty part to prevent accidental editing
   -Undo last seek
   -Display PART GUITAR COOP as "PART GUITAR COOP (Lead)" to reflect that FoFiX offers the track as "Lead Guitar"
   -Reload feature (map to F5) that will reload the chart, prompting the user to confirm that changes should be discarded.  This is a more automated way of using F3 and browsing to the chart that is already open.
   -A visual cue for configuring the AV delay, maybe something along the lines of the 3d panel flashing with a contrast color when a metronome tick or a clap is sounding.  The 3d panel could remain filled for however many milliseconds the tick/clap is sounding.
   -Support for other input audio formats that oggenc2 may already support, such as WAV
   -During MIDI import, if the imported MIDI contains just a single chord (or below a defined threshold number of notes) in any instrument difficulty, prompt the user if he/she wants to remove dummy notes from the chart (Feedback inserts notes so that each difficulty contains at least one note, for compatibility with playing the chart on a hacked Guitar Hero game).
   -A volume control that can amplify audio playback.  Some processing filters in Audacity leave audio very quiet so I have to crank the volume up a lot.
   -Have a MIDI edit (not import) mode that retains all original MIDI timings, allowing the user to add text events, instrumental notes, special notes, etc. with zero risk of affecting any note or beat positions.
   -A "practice" input mode that registers hits like guitar strum mode while showing the already-charted notes in the 3d panel.  This wouldn't edit the chart, but could show the user's mistakes rendered in red on the piano roll while hits that were close enough to the hit window could be rendered in blue.  This isn't really meant to be a replacement for testing in FoF itself, but it would allow the user to stop/start/restart parts of the chart to test playability, and the ability to see each playback mistake would allow somebody to practice a chart and review which riffs might require some more practice.  This is a pretty outlandish idea, but I thought it seems fun
   -Ability to export the click track as an EOF file with no notes, no text events, etc.  Only contains the anchors and tempo information.  This could be useful to recover from a chart with corrupted OGG profiles or something else that makes it desirable to have a clean chart to copy+paste the notes into.  Importing the saved MIDI is better than nothing, but converting between timings has some precision loss.
   -Add ability to double/halve the tempo starting from an anchor.  If there are an even number of beat lines until the next anchor, then no notes should be affected and no anchors should move if the tempo is halved.  Doubling the tempo should not cause any anchors/notes to move.  Text events, bookmarks, etc. should keep their timestamp placement where possible.  If a text event becomes mid-beat (its beat marker was removed during tempo halving), it should move to the previous beat marker at the end of the operation
   -Option to play clap/tick at full speed even when the chart is played slowly.  At 25% speed, these sound effects are hard to hear compared to the rest of the audio, making it harder to check sync.

Extra chart features:
   -Ability to browse for, render and save the label PNG file with the rest of the chart files upon saving the chart
   -Add hotkeys to Add and Delete buttons in INI settings
   -Add custom INI support for diff_guitar = 0 through 6, diff_drums = 0 through 6, diff_bass = 0 through 6, diff_band = 0 through 6 (I understand FoFiX uses these to display chart difficulties in stars.  There may now be similar tags used to represent vocal difficulty, but I don't know)
   -Preview OGG support:  It may require more thought, but I believe it could be as easy as having the user set a start and end bookmark or a phrase, and you could mux the audio into a file called preview.ogg.  Since EOF doesn't technically support master audio tracks (different audio for each instrument track), muxing from guitar.ogg may be sufficient, although perhaps if EOF finds other audio tracks in the chart folder (drums.ogg, song.ogg, etc), it could offer to mix those tracks in as well

General UI:
   -Ability to hit Enter to OK out of input dialog windows
   -Option to increment a number in the backup save filename so that multiple backups can be kept as a kind of automatic version control.  To keep the file sizes down, you can have EOF compress the backup file (compresses as well as < .5% or original size).  A huge ambition could be making it so that the backups are kept in a single file that keeps a running record of all edits made between saves, providing some kind of human-readable description of each change and a mechanism to produce the chart as it was at any given edit.  This would require the original chart and a functional transaction log (like that of a database).
   -When opening an existing EOF file or importing a MIDI and only one instrument and difficulty part has notes, default to displaying it instead of Guitar>Amazing
   -When the previous directory that a file was loaded from no longer exists, EOF defaults to starting file loading dialog menus back to EOF's own directory.  Consider having it reset to the user-configured Song Folder instead, as for those of us that store all our chart files in the Song Folder, it will save the effort of browsing to it in this scenario.  Defaulting all file browser windows to the song folder if the last selected file is renamed/deleted/mising may be a nice idea
   -During the "Location for New Song" dialog when creating a new chart, consider graying out the "Create new folder" text input box unless the "Create new folder" radio button is actively selected.
   -A notifier displayed in red in the edit pane or the info panel if an off-screen note was altered
   -Add the capability to detect and warn the user to what people refer to as "double bass" drum charting, which isn't so much the fact that two bass notes are close together but bass notes continuously being close together.  We'd need a specific frame of reference, such as at least 3 bass notes that are each spaced apart by #ms or less
   -Consider suppressing the menu when right clicking on a beat marker, as the menu's activation makes it contrast quite a bit with all other seek operations
   -The note numbering is strange on multi-difficulty charts, such as selecting the first guitar note in Easy lists it as Note=0, in Amazing, it is given as Note=2.  Even if this is true to the order of the MIDI events, the information isn't necessarily useful unless these numbers are relative to the notes in the same instrument difficulty.  Would it be possible to change the Hover note and Selected note numbering so the numbers are relative to the notes in the active difficulty, ie. the first note selected in any difficulty is reported as note 1?  Especially now that the note numbers in PART VOCALS will be given without influence from other difficulties, it will make it feel more consistent.

Fret catalog:
   -In the fret catalog, display the number of beats that an entry occupies, so it is easy to determine if the entry will fit into a given section of the piano roll.  Possibly warn user during pasting from catalog if the paste will overlap existing notes in the chart.
   -Allow the fret catalog to be extended into the space used for the 3d panel for added visibility of patterns.  Or otherwise an ability to seek left and right within a catalog entry so that it can be seen in its entirety without playing the entire entry.
   -Ability to name entries in the fret catalog (ie. guitar riff 1)
   -Enable the user to define a positive or negative padding (ie. # of milliseconds) for the start and end of note catalog entries for playback.
   -In the information panel, in addition to showing which catalog entry is selected, display the originating difficulty in parentheses next to it (Guitar>Amazing)
   -Ability to seek to the current Catalog entry's starting position in the piano roll
   -Ability to insert selected notes into current fret catalog position, or otherwise an ability to reorder catalog entries

User customization:
   -Ability for users to provide their own note gem graphics.
   -Ability to change the audio used for each fret's clap and the metronome.  Perhaps user-definable clap/tick can be provided similarly to user-definable vocal tones may be implemented?
   -An option to create permanent custom ini parameters, such as in INI Settings.  So say if I wanted the year= parameter to be immediately available for every chart I make, I can add it there, and then in the song properties, the custom fields can be filled.  If a custom field has contents, it can be exported in the song.ini.  This will prevent typos when long named parameters (ie. "unlock_require") are entered for each song that is created.  Could be more work than it's worth, but it's something that would add convenience.  The number of custom parameters can be limited to prevent the song properties window from becoming tall enough to require scrolling.

Note phrases:
   -For edits that cause two like phrases to be adjacent and not separated by normal notes or a considerable amount of space (ie. two overdrive phrases), prompt the user about whether they should be combined automatically.  This would prevent some of the new users from marking 5 back to back one-note Star Power phrases instead of one phrase that is 5 notes long.  I've actually seen users do this several times.
   -Rendering the location of SP phrases on the piano roll (ie with a silver colored strip)
   -Since MFH said solo section markers and MIDI solo phrases can coexist in a chart, I think it would be great if EOF made use of this to provide backwards compatibility for PART GUITAR and PART GUITAR COOP solos with older versions of FoF.  When a user marks a solo phrase in either of those two tracks, EOF could prompt if the user wants to create a name for the solo.  If they specify yes, EOF can provide a dialog window to get input from the user.  Upon save, EOF could insert a section marker event in the MIDI at the position of the first note in the solo, but it would need to look at the end of the solo.  If the solo ends more than one beat before a section marker, it would need to create a section marker to indicate the end of the solo and ensure that marker was similarly-named to the solo name specified by the user except that it cannot contain the string "solo".  For example if the user called a solo "Guitar Solo A", EOF could insert the "section Guitar Solo A" text event accordingly, and at the end of the solo, insert a "section Guitar Sol_ A End" text event.  This would require doing a case-insensitive string search for "solo" and replacing it with something like "sol_", which would prevent FoF from treating it as the start or continuation of a solo.  If the solo ends right before another section marker (without the string "solo" in it), the section marker ends the solo automatically.  This process can be done by the user, but it would be another way to make EOF easier to use overall.
   -If an EOF file has solo paths but no SP paths created, maybe it could warn during save that as such, the resulting MIDI will only have SP paths and no solos. MFH took an idea I proposed earlier about making FoF's phrase detection controllable in song.ini and posted it on the project's bug tracker, but it's a low priority issue. Someday it will be implemented, but until then we'll all have to work around it
   -Add support for a "Unison overdrive" phrase, which places an overdrive phrase over the same portion of the guitar, drum and bass tracks

Advanced chart functions:
   -Ability to start and end user-specified MIDI notes similarly to adding user-specified text events.  This may help future proof EOF if FoFiX decides to implement any unusual chart markings.

Documentation:
   -Update the documentation and tutorial to include new features like making Big Rock Endings:  http://www.fretsonfire.net/forums/viewtopic.php?f=32&t=38283#p407322
   -It may be a good feature to summarize Harmonix's charting guidelines in EOF's included documentation.  If you're interested, I could make a list of things that could possibly be programmed into EOF to enforce Harmonix's standards, ie. the minimum length of sustained notes, minimum distance between notes, which chords are valid for given difficulties, if very many notes are not grid snapped, etc.  I believe this would be an excellent feature, as the user could have EOF test the chart and offer to make corrections or seek to a problematic part of the chart

Lyrics/Vocals:
   -Allow paste operations (especially "paste from") to be used for PART VOCALS for instrument tracks.  Some people that are charting "vocal rhythm" may prefer to have a button tap/strum capability at some point of vocal charting and may want to try, although once EOF's lyric import is working, they can just save the chart and use the import to load the vocal rhythm via MIDI if EOF can prompt the user for the appropriate track and difficulty identifier (ie. G1 for easy guitar)
      OR
   -Alternatively, to remove the need of charting vocal rhyhm as a vocal charting aid, allow guitar tap/guitar strum (or similar input method using mouse/keyboard/MIDI input) to be used in PART VOCALS.  VividLyric editor's mouse input is extremely easy to use:  During audio playback, left click starts a line phrase if none is already started, otherwise it inserts a break (ie. ends current phrase and immediately starts next lyric phrase).  Right click ends a line phrase.  This two button input method is much more effective than a single button input such as Rokudaime's lyric editor.
   -Ability to change the mini piano to a grand staff, which will affect the display of the gems in the piano roll to reflect sheet music.  It would make it easier for beginners to enter sheet music into EOF.
   -Display scrolling lyrics in the full piano panel for each vocal note as it is played/hovered.  The scrolling speed would have to depend on how short the lyric duration is, requiring some small amount of math to calculate each lyric's scrolling velocity.  Below/above the scrolling lyric would be an excellent place to implement a vocal note tube similar to that in Rock Band.
   -Ability to make the full piano panel wider by cutting into some of the unused real estate in the info panel
   -Add option to toggle the piano panel into a lyric review/editor control, so users can see if they have their line markers placed correctly, etc.  Being able to edit lyrics, phrase markers, etc. here would be extremely convenient.  Right clicking on a lyric to seek the piano roll to the lyric would also be a plus.
   -Allow for sustained vocal tones.  I couldn't find an easy way to have the tone sustain by looping the short samples, so it might be tricky to have it play the tone nicely in an indefinite manner, so a third option for tone sample could be to play the sample until it runs out and then to replay the sample once it ended.  If you are interested, I could sample each note being played much longer (increase the note duration in the MIDI that I play back) or play around with the sustain pedal I have for my synthesizer.
   -This would be more of a just-for-fun kind of feature, but how about an option to play back the PART VOCALS track so that the vocal notes drop from the top of the full piano pane onto the appropriate piano key.  This would mimic the playback of the synthesizer game Synthesia (http://www.synthesiagame.com/) and allow the user to get visual feedback on the range of vocal notes in a song.  There may be enough room in the full piano pane to do this in edition to the scrolling lyrics and/or vocal note "tube".
   -In the new/edit lyric dialog window, display the currently selected pitch for the new/edited lyric and add drop down lists (one for note, one for octave) and/or text input field field to allow the user to manually enter a pitch number or note name (ie. C4).
   -EOF allows lines of lyrics to overlap, but the way the lines are displayed, it can't be seen.  Once the chart is saved and the MIDI is loaded, it is seen that one of the overlapping lines is/was removed.  Perhaps the line colors can alternate from one line to the next to make line separation more visible.
   -Regarding lyric import functionality:  If EOF would only maintain one vocal track, the current vocal track would have to be discarded during a lyric import.  However if EOF could maintain a temporary vocal track, or an arbitrary number of vocal tracks (perhaps they could each be listed with their own tab?), then the original vocal track could be retained and lyrics imports could load into a separate vocal track instance.  The user could then either discard all vocal tracks except for one during save, or all vocal track instances could be kept and the user just selects which one is the active vocal track (which will be used during save).  This might make it convenient for the user to compare multiple lyric files they may have found for the chart they are working on, and they could copy from imported tracks to paste into the normal PART VOCALS track.
   -When using Shift+PgUp/PgDn to seek among lyrics in PART VOCALS, perhaps the lyric text at the current position can be displayed someplace like in the info (like in the Lyric= line) or full piano panels (highlight the lyric or move a line/cursor in front of the lyric in the lyric preview)?  Most of the time, lyrics are close enough together that they will be displayed in an overlapping fashion unless the user zooms in the piano roll.  This feature request wouldn't necessarily be that useful unless there was a way to edit the lyric at the current position instead of just being able to edit the one that is currently selected.  If two lyrics are too close together when they are overlapping, it could be difficult to select the desired lyric without zooming in, which may annoy some people.
   -The new lyric line preview is pretty neat, but it's easy for the lyric phrase to be longer than it can display in its entirety.  If scrolling lyric preview is a ways off, it may be easier to use a simpler method, like recentering the lyric preview upon each lyric as it is reached during playback, so it would be visible.  Or simpler yet may be that when the last visible character in the lyric preview was reached, it would scroll one screen (mini piano pane width) to the right to display more lyrics in that lryic phrase.
   -Optional microphone/MIDI instrument input for setting vocal pitch.  It would be pretty cool to plug in my Casio to set lyric pitches.
{'fraction_non_alphanumeric': 0.028922502779101158, 'fraction_numerical': 0.0025210417659202794, 'mean_word_length': 4.015131906421105, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '38294', 'n_tokens_mistral': 12238, 'n_tokens_neox': 11660, 'n_words': 8622}