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

# What is this?

> The Notes panel is an additional informational panel that is meant for users to customize to display whatever information is wanted. This is achieved by defining static text as well as various macros that will translate dynamically to text. For the sake of this documentation, "printed" text will refer to the text that is written to the Notes panel. Some of these macros are conditional, so you can control whether text or macros are displayed at all, such as to define content that will display only for the vocal track, or for content that will only display if a note is currently selected or for when specific error conditions are present. Content is normally defined line by line, where one line in the text file corresponds to a single line in the Notes panel, but one line can use the %NEWLINE% control macro to add a line break and begin printing on the next line in the panel. Macros are case insensitive (you can use any amount of upper or lower case letters to type them), but it's recommended to use upper case to make it more easy to identify where macros occur in the notes.panel.txt file. It's also generally more traditional to type macros in all capital letters.

# Using the Notes panel

> A default notes.panel.txt file is provided with EOF for general editing purposes, and many other panels with specific purposes or that display game-specific information are also available for use by selecting them in the "File>Display>Notes panel" menu:
> - Clone Hero panel: Various details relevant for charting for the game Clone Hero.
> - IMMERROCK panel: Various details relevant for charting for the game IMMERROCK.
> - Info panel: The normal Information panel.
> - Note Controls panel: Lists keyboard shortcuts applicable to the active track.
> - Note Counts panel: Lists the number of instances of each possible gem combination present in the active track.
> - Rocksmith panel: Extensive details and quality checks relevant for charting for the game Rocksmith.
> The note panels are simple text files which can be viewed or edited in a text editor such as the Notepad utility that comes with Windows. Keep in mind that this file is expected to be written in Windows line encoding: Line breaks are CR LF format (a carriage return character followed by a line feed character). Decent text editors should allow you to save edits in this format, just make sure it isn't converted to Linux (line breaks only having a line feed character) or Unix (line breaks only have a carriage return character) format or it won't work properly. To display or hide the Notes panel, use the File>Display>Notes Panel>Enable function. If it is shown, EOF will automatically resize the program window if doing so is needed to make enough space to display the panel. If the Info panel or 3D preview are already being hidden (ie. from File>Preferences>Preferences), EOF will use that empty space for the Notes panel and will prompt to resize the program window if the disabled Info/3D panels are re-enabled from Preferences while the Notes panel is being displayed (or if the Info panel is re-enabled via keyboard shortcut, EOF will resize the program window without prompting). The Notes panel's contents are kept in EOF's memory to avoid having to read it from the computer's hard drive repeatedly, so if you make edits to the Notes panel, you can make them take effect in EOF by hiding the Notes panel and showing it again. This causes EOF to re-load the notes.panel.txt file into memory. Keep in mind that text runs over the right edge of the Notes Window and into the 3D preview or the edge of the program window unless you either hide the 3D preview window or resize the program window (File>Display>Set display width).

# Printing static text

> The simplest thing to display would be static text, which prints exactly as typed in the notes.panel.txt file. Alphabetical characters, numerical characters and spaces are supported. Other characters aren't guaranteed to work. Control characters like the tab character, for example, do not display. Static text is mostly useful to display notes, to-do items, keyboard shortcuts, etc.

# Printing dynamic text

> Dynamic text is text that will change due to various defined conditions such as whether notes are selected, what kind of track is being displayed in the editor, etc. For the Notes panel, this is achieved by using a "macro", which is basically a placeholder for what will eventually be "printed" to the Notes panel. You can use this to display statuses of notes, conditions that may be in effect and other pieces of information. EOF's macros always begin with a % (percent sign), end with % and never include any spaces. If you want to print a percent sign to the Notes panel, a %PERCENT% macro can be used. If there is an error in the notes.panel.txt file, the notes panel will indicate there was an unrecognized macro in that line. If the unrecognized macro is specified as being %ELSE%, it's probably an error that needs to be corrected in EOF, otherwise it's most likely a typo in the notes.panel.txt file or a macro is being used that isn't supported by the version of EOF that you're using. A complete list of all macros that EOF supports are defined further down in this document. Feel free to request new macros to print specific items, which can be added to EOF if they would be useful or at least reasonably simple to implement.

# Comments

> Any line in notes.panel.txt that begins with a semicolon ; will be treated as a comment and no text or macros will be processed for that line. No blank line will be printed, even if there is an %EMPTY% macro in the line.

# Conditional macros

> There are times where you may want to only display a certain piece of content under certain conditions. For example, say you only wanted to print the shortcuts for toggling cymbal status when the drum track was active. You could do this by adding the following text to the notes.panel.txt file:

> %IF_IS_DRUM_TRACK%Toggle Y/B/G cymbal: CTRL+Y/B/G Expert+ bass: CTRL+E

> Everything after the %IF_IS_DRUM_TRACK% will only print if that macro's condition is true: That a drum track (either the normal one or the Phase Shift drum track) is the active track. This way, you can display the shortcuts only when relevant and when a non drum track is active, that space can be used to display something else. You can consider the part of the line that will print when the macro is evaluated as true as being the macro's "scope", which in this case is everything after the %IF_IS_DRUM_TRACK% macro up until the end of the line.
> In the previous example, everything after the %IF_IS_DRUM_TRACK% macro up until the end of the line in the notes.panel.txt file was conditional on the active track being a drum track and thus the macro being evaluated as being true. A more complicated example is one where only part of a line is conditional. An %ENDIF% macro can be placed after an %IF... macro to end its scope, stopping the conditional processing of the line in the notes.panel.txt file. For example:

> %IF_NOTE_IS_SELECTED%Note is selected at %SELECTED_NOTE_POS%. %ENDIF%Seek position is %SEEK_POSITION%.

> In this example, the "Note is selected at (position)" text is only printed if a note is selected. The %ENDIF% macro indicates the end of the content that only prints if a note is selected, so the seek position is displayed regardless of whether a note is selected. After conditional printing of a line is ended with %ENDIF%, another conditional macro can be used if desired. For example:

> %IF_NOTE_IS_SELECTED%Note selected. %ENDIF%Seek position is %SEEK_POSITION%. %IF_NOTE_IS_SELECTED%Selected note is at %SELECTED_NOTE_POS%.

> In this example. "Note selected." only prints if a note is selected. Then the seek position is printed regardless of whether a note is selected. Then the selected note's position is printed only if a note is selected. Keep in mind that some macros are only relevant in some conditions. If the %SELECTED_NOTE_POS% macro is printed when no note is selected, the text "None" would be printed, and that might not always be what you want. Conditionally printing such macros can be preferable if that's the result you're wanting to achieve.
> An even more complicated use of conditional macros is printing text when the conditional macro evaluates as false. Similarly to %ENDIF%, the %ELSE% macro ends the scope of a conditional macro that evaluated as true. However, everything in the scope of the %ELSE% macro is printed only if the previous conditional macro evaluated as false. For example:

> %COUNT_NOTES_SELECTED% %IF_IS_VOCAL_TRACK%Lyrics%ELSE%Notes%ENDIF% are selected.

> In this example, the number of notes/lyrics that are selected is printed, followed by a space. Then if the vocal track is active, the text "Lyrics" is printed. The %ELSE% macro defines what to print if the %IF_IS_VOCAL_TRACK% condition was not true, so the text "Notes" is printed if the vocal track is not active. As with previous examples, %ENDIF% ends the scope of the %ELSE% macro and defines where the true/false conditional printing stops and normal printing resumes, so the text " are selected." is then printed no matter which track is active. Keep in mind that the printing of spaces can also be conditional, so place them either inside or outside conditional macro statements as appropriate.
> The most complex use of conditional macros is when a conditional macro is used inside the scope of another conditional macro. This is known as "nesting" the conditional macros. For example:

> %IF_IS_VOCAL_TRACK%%IF_NOTE_IS_SELECTED%At least one lyric is selected.%ELSE%No lyrics are selected.

> In this example, the first if macro is evaluated, and then only if it is true, the second if macro (which is nested one "level" deeper) is evaluated. So if a vocal track is active, text will be printed indicating whether or not any lyrics are selected. If a vocal track is not active, nothing is printed. You can generally nest conditional macros as many levels as you want, just make sure to use the correct number and placement of %ENDIF% and %ELSE% macros to control the scope to get the desired results. If you wanted to print text after the previous example even if the vocal track was not active, the scope of both conditional macros would have to be ended. For example:

> %IF_IS_VOCAL_TRACK%%IF_NOTE_IS_SELECTED%At least one lyric is selected. %ELSE%No lyrics are selected. %ENDIF%%ENDIF%This text always prints.

> The first %ENDIF% macro ended the scope of %IF_NOTE_IS_SELECTED% that occurred immediately before it, and the second %ENDIF% macro ended the scope of the %IF_IS_VOCAL_TRACK% macro even earlier. Ultimately, "This text always prints." will be printed regardless of whether any lyrics are selected or whether the vocal track is even active.
> You can negate a conditional macro by putting an exclamation point ! after the opening % character in the macro. What this does is invert the result of the conditional macro so that a true result is evaluated as false and vice-versa. This will allow you to more efficiently test the false result of a conditional macro without having to have an empty true scope and then use an %ELSE% scope just to print what you wanted in the event of a false result. For example:

> %!IF_IS_VOCAL_TRACK%The active track is not a vocal track.

> The negated conditional result means that as long as the active track is not the vocal track, "The active track is not a vocal track" is printed.

# Printing empty lines

> If a defined line is empty or if all of the macros are conditional and none of the applicable requirements are met, nothing will display for it in the Notes panel, not even an empty line. The text output position in the Notes panel will not advance, meaning the next line of content will be displayed immediately below the previous line of content that was written. For example:

> %IF_IS_VOCAL_TRACK%This is a vocal track
> This is the next line

> If the current track is the vocal track, two lines will be written to the Notes panel ("This is a vocal track" and "This is the next line"), otherwise only the second of those two lines will be written and there will be no empty line.
> If you want to allow a line that results in no text (due to either being empty in the notes.panel.txt file or by no conditions being successfully met) to be written as an empty line in the Notes panel, use an %EMPTY% macro anywhere it will be sure to be processed instead of being within the scope of a macro that might not be used (before conditional macros or after all conditional macros were ended with %ENDIF%. If you change it as follows:

> %IF_IS_VOCAL_TRACK%This is a vocal track%ENDIF%%EMPTY%
> This is the next line

> Everything from the %IF_IS_VOCAL_TRACK% macro until the end of the line in the notes.panel.txt file will only be processed if that condition (the current track is the vocal track) is met, or until an %ELSE% or %ENDIF% macro is reached on the same line. Using %ENDIF% in this example allows the rest of the line to be processed so if the current track is NOT the vocal track, the %EMPTY% macro is still processed. Since no text is being written for this line (none of it pertained to non vocal tracks), nothing is to be written for this line in the Notes panel, and the %EMPTY% macro that was processed indicates that the line is explicitly written to be empty in the panel so that the next text to be written to the panel will do so after a blank row.

# Macro list

> These are all of the macros that can be used with the Notes panel. Some macros allow numbers or other text to be defined by the user, such as to cite a particular length, timestamp or name. In such cases, replace [NUMBER] with numeric digits such as 1000. In cases of macros that have [NAME], replace that with the desired text, such as the name of a text event. For [NAME], since spaces cannot be used within the macro, a single underscore _ is interpreted as a space, and two consecutive underscores __ are interpreted as a single underscore.
> Tip: Some web browsers will allow you to hold CTRL and left click on the macro name to highlight the entire name. This makes it easier to copy to the clipboard and paste into the notes.panel.txt file in order to change what is to be displayed in the Notes panel. CTRL+click the macro name again or click someplace else on the page in order to deselect it.

> > # Conditional macros

> > See the detailed explanation earlier in this document for instructions on how to use conditional macros.

> > Macro name | Purpose
> > %IF_HOVER_BEAT% | Evaluates as true if the mouse is currently hovering over a beat marker.
> > %IF_SELECTED_BEAT_HAS_TS% | Evaluates as true if there is a time signature in effect at the selected beat (a time signature change is placed at or before the selected beat).
> > %IF_IS_VOCAL_TRACK% | Evaluates as true if the active track is the vocal track.
> > | %IF_IS_LEGACY_GUITAR_TRACK% | Evaluates as true if the active track is a guitar track that is not a pro guitar track.
> > %IF_IS_PRO_GUITAR_TRACK% | Evaluates as true if the active track is a pro guitar track.
> > %IF_IS_DRUM_TRACK% | Evaluates as true if the active track is either of the drum tracks: The normal one (PART DRUMS) or the Phase Shift one (PART REAL_DRUMS_PS).
> > %IF_IS_PS_DRUM_TRACK% | Evaluates as true if the active track is the Phase Shift drum track (PART REAL_DRUMS_PS).
> > %IF_IS_GHL_TRACK% | Evaluates as true if the active track has GHL mode enabled.
> > %IF_IS_FIVE_BUTTON_GUITAR_TRACK% | Evaluates as true if the active track is one designed for use with a five button guitar controller (not a GHL mode guitar track and is not a pro guitar track).
> > %IF_IS_NON_FIVE_BUTTON_GUITAR_TRACK% | Evaluates as true if the active track is one designed for use with one designed for use with a guitar controller with more than five buttons (a GHL mode guitar track or a pro guitar track).
> > %IF_IS_FIVE_BUTTON_GUITAR_OR_KEYS_TRACK% | Evaluates as true if the active track is one designed for use with a five button guitar controller (not a GHL mode guitar track and is not a pro guitar track), or is the keys track (which has similar functionality being a 5 lane track).
> > %IF_IS_ANY_GUITAR_TRACK% | Evaluates as true if the active track is a guitar/bass track of any kind (normal, GHL, pro guitar).
> > %IF_IS_DANCE_TRACK% | Evaluates as true if the active track is the dance track.
> > %IF_IS_KEYS_TRACK% | Evaluates as true if the active track is the keys track.
> > %IF_IS_TECH_VIEW% | Evaluates as true if the active track is a pro guitar track AND tech view is in effect.
> > %IF_NOTE_IS_SELECTED% | Evaluates as true if a note is specifically selected by mouse click. Using select functions does not count towards this condition.
> > %IF_SELECTED_NOTES% | Evaluates as true if at least one note is currently selected by any means (even without clicking on notes with the mouse).
> > %IF_HOVER_NOTE% | Evaluates as true if the mouse is currently hovered over a note.
> > %IF_SEEK_HOVER_NOTE% | Evaluates as true if Feedback input mode is in effect AND there is a note at the current seek position (making it the target for various modifications such as toggling gems, deletion, etc).
> > %IF_SELECTED_NOTE_IS_NAMED% | Evaluates as true if a note is currently selected AND that note has been given a name (ie. by Note>Edit Name).
> > %IF_CAN_LOOKUP_SELECTED_CHORD_NAME% | Evaluates as true if the active track is a pro guitar track, a chord is selected and the chord lookup logic found a name for it.
> > %IF_TUNING_IGNORED% | Evaluates as true if the active track is a pro guitar track, and its Track>Pro Guitar>Ignore tuning/capo option is enabled.
> > %IF_SOUND_CUES_DISABLED% | Evaluates as true if the "Disable sound FX" preference is enabled.
> > %IF_START_POINT_DEFINED% | Evaluates as true if the start point (see Edit>Set start point) has been defined.
> > %IF_END_POINT_DEFINED% | Evaluates as true if the end point (see Edit>Set start point) has been defined.
> > %IF_SELECTED_CATALOG_ENTRY_NAMED% | Evaluates as true if there is a fret catalog entry, and the currently selected catalog entry has a name defined for it (see Song>Catalog).
> > %IF_WINDOW_HEIGHT_IS_480% | Evaluates as true if the EOF's window height (set in File>Display>Display) is 480.
> > %IF_WINDOW_HEIGHT_IS_600% | Evaluates as true if the EOF's window height (set in File>Display>Display) is 600.
> > %IF_WINDOW_HEIGHT_IS_768% | Evaluates as true if the EOF's window height (set in File>Display>Display) is 768.
> > %IF_ACTIVE_DIFFICULTY_IS_NUMBER_[NUMBER]% | Evaluates as true if the active difficulty number matches [NUMBER], where the lowest difficulty (ie. "Easy" in Rock Band terms) is 0 and the highest difficulty supported for Rocksmith authoring is 255.
> > %IF_ACTIVE_DIFFICULTY_IS_EASY% | Evaluates as true if the active difficulty is "Easy" by Rock Band standards ("Supaeasy" in Frets on Fire).
> > %IF_ACTIVE_DIFFICULTY_IS_MEDIUM% | Evaluates as true if the active difficulty is "Medium" by Rock Band standards ("Easy" in Frets on Fire).
> > %IF_ACTIVE_DIFFICULTY_IS_HARD% | Evaluates as true if the active difficulty is "Hard" by Rock Band standards ("Medium" in Frets on Fire).
> > %IF_ACTIVE_DIFFICULTY_IS_EXPERT% | Evaluates as true if the active difficulty is "Expert" by Rock Band standards ("Amazing" in Frets on Fire).
> > %IF_ACTIVE_DIFFICULTY_HAS_EMPTY_SOLO% | Evaluates as true if the active difficulty has any solo sections that don't have at least one note, even if the solos have notes in other difficulties. This condition may prevent the chart from working in Clone Hero.
> > %IF_ACTIVE_DIFFICULTY_HAS_NO_CYMBALS% | Evaluates as true if the active difficulty doesn't have at least one cymbal.
> > %IF_ANY_SOLOS_CLOSER_THAN_1_SECOND% | Evaluates as true if any solo sections begin less than one second after an earlier one. This condition may prevent the solo bonus from displaying long enough to be visible in Clone Hero.
> > %IF_TRACK_DIFF_HAS_NOTES_WITH_GEM_COUNT_[NUMBER]% | Evaluates as true if the active track difficulty has at least one note with the specified [NUMBER] of gems. Specify 0 to check for open strum notes. This can be used to quality check a chart by looking for the presence of 4 or 5 lane chords.
> > %IF_TRACK_DIFF_HAS_INVALID_DRUM_CHORDS% | Evaluates as true if the drum track is active and the active difficulty has at least one chord that is unplayable in a Rock Band style game (which has no support for mechanisms like hi hat pedals) in that it requires more than two hands to play.
> > %IF_NONZERO_MIDI_DELAY% | Evaluates as true if chart has a nonzero delay/offset, which isn't supported in some rhythm games like Clone Hero and Rock Band.
> > %IF_TRACK_HAS_NO_SOLOS% | Evaluates as true if the active track does not have any solo sections.
> > %IF_TRACK_HAS_NO_STAR_POWER% | Evaluates as true if the active track does not have any star power sections.
> > %IF_TRACK_HAS_NO_SLIDERS% | Evaluates as true if the active track does not have any slider sections.
> > %IF_TRACK_HAS_NO_EXPERT_PLUS_BASS% | Evaluates as true if the active track doesn't have at least one expert+ bass note.
> > %IF_TRACK_DIFFICULTY_UNDEFINED% | Evaluates as true if the active track's difficulty is not defined. This doesn't take the secondary difficulty level (vocal and drum tracks) into account.
> > %IF_ANY_TRACK_DIFFICULTY_UNDEFINED% | Evaluates as true if any populated track has no defined difficulty. This doesn't take the secondary difficulty level (vocal and drum tracks) into account.
> > %IF_TRACK_IS_POPULATED% | Evaluates as true if the active track has any normal or tech notes.
> > %IF_NO_LOADING_TEXT% | Evaluates as true if the project has no loading text defined or the text that is defined is just whitespace.
> > %IF_NO_PREVIEW_START_TIME% | Evaluates as true if the project has no preview start time INI entry defined either manually or by using Song>Create preview audio.
> > %IF_NOTE_GAP_IS_IN_MS% | Evaluates as true if EOF's configured Min. note distance setting (analogous to the note gap setting in Moonscraper) in File>Preferences>Preferences is set to # ms instead of a 1/# beat or measure interval as is typically recommended for Clone Hero authoring.
> > %IF_CH_SP_TS_MISSING% | Evaluates as true if star power scoring information can't be determined due to the first beat marker having no time signature.
> > %IF_CH_SP_TS_DEFINED% | Evaluates as true if the first beat marker has a defined time signature.
> > %IF_CH_SP_PATH_VALID% | Evaluates as true if a star power path is defined (either automatically with "Track>Find optimal CH star power path" or manually with "Note>Clone Hero>SP deploy") and it is valid.
> > %IF_CH_SP_DEPLOYMENTS_MISSING% | Evaluates as true if no star power deployments are defined.
> > %IF_CH_SP_PATH_INVALID% | Evaluates as true if one or more star power deployments are defined but it is considered an invalid star power path, such as if a deployment is designated without sufficient star power, deploying while star power is already deployed, etc.
> > %IF_CH_SP_STATS_AVAILABLE% | Evaluates as true if star power related information is available (the star power pathing logic calculated a score) to be displayed by applicable expansion macros.
> > %IF_GRID_SNAP_ENABLED% | Evaluates as true as long as grid snap isn't set to off.
> > %IF_TRACK_HAS_DD% | Evaluates as true if the active track is a pro guitar track and its difficulty level limit has been removed.
> > %IF_FLAT_DD_VIEW_ACTIVE% | Evaluates as true if the flat DD view feature is enabled, regardless of the active track's contents.
> > %IF_PROJECT_HAS_IR_ALBUM_ART% | Evaluates as true if the project folder has any suitably named album art for use with IMMERROCK.
> > %IF_ANY_LYRICS_ARE_OUTSIDE_LINES% | Evaluates as true if any lyrics begins outside of all existing lyric lines, in which case the %FIRST_LYRIC_OUTSIDE_LINE% macro will print the location of the first offending lyric.
> > %IF_SONG_TITLE_IS_DEFINED% | Evaluates as true if the song title in Song Properties is defined.
> > %IF_ARTIST_NAME_IS_DEFINED% | Evaluates as true if the artist name in Song Properties is defined.
> > %IF_CHART_AUTHOR_IS_DEFINED% | Evaluates as true if the charter in Song Properties is defined.
> > %IF_ALBUM_NAME_IS_DEFINED% | Evaluates as true if the album name in Song Properties is defined.
> > %IF_GENRE_IS_DEFINED% | Evaluates as true if the genre in Song Properties is defined.
> > %IF_YEAR_IS_DEFINED% | Evaluates as true if the year in Song Properties is defined.
> > %IF_TRACK_NUMBER_IS_DEFINED% | Evaluates as true if the track number in Song Properties is defined.
> > %IF_ANY_LYRIC_LINES_ARE_DEFINED% | Evaluates as true if the project has at least one lyric line.
> > %IF_ANY_LYRICS_ARE_NON_ASCII% | Evaluates as true if any of the defined lyrics are detected as having non ASCII text, in which case the %FIRST_LYRIC_WITH_NON_ASCII% macro will print the location of the first offending lyric.
> > %IF_IR_LEAD_ARRANGEMENT_DEFINED% | Evaluates as true if any pro guitar tracks are defined as a lead arrangement.
> > %IF_ACTIVE_TRACK_IS_IR_LEAD_ARRANGEMENT% | Evaluates as true if the active track is the first pro guitar track defined as a lead arrangement.
> > %IF_IR_RHYTHM_ARRANGEMENT_DEFINED% | Evaluates as true if any pro guitar tracks are defined as a rhythm arrangement.
> > %IF_ACTIVE_TRACK_IS_IR_RHYTHM_ARRANGEMENT% | Evaluates as true if the active track is the first pro guitar track defined as a rhythm arrangement.
> > %IF_IR_BASS_ARRANGEMENT_DEFINED% | Evaluates as true if any pro guitar tracks are defined as a bass arrangement.
> > %IF_ACTIVE_TRACK_IS_IR_BASS_ARRANGEMENT% | Evaluates as true if the active track is the first pro guitar track defined as a bass arrangement.
> > %IF_IR_SECTIONS_DEFINED% | Evaluates as true if the project contains at least one text event that would export as a section usable with IMMERROCK.
> > %IF_RS_SECTIONS_DEFINED% | Evaluates as true if the project contains at least one text event that would export as a section usable with Rocksmith.
> > %IF_IR_TRACK_HAS_CHORDS_MISSING_FINGERING% | Evaluates as true if at least one chord doesn't have complete fingering defined.
> > %IF_SEEK_POS_IS_IN_IR_SECTION% | Evaluates as true if the seek position is in portion of a chart that is defined as a section usable with IMMERROCK.
> > %IF_SEEK_POS_IS_IN_RS_SECTION% | Evaluates as true if the seek position is in portion of a chart that is defined as a section usable with Rocksmith.
> > %IF_IR_EXPORT_ENABLED% | Evaluates as true if the "Save separate IMMERROCK files" export preference is enabled.
> > %IF_RS_EXPORT_ENABLED% | Evaluates as true if either the "Save separate Rocksmith 1 files" or "Save separate Rocksmith 2 files" export preferences are enabled.
> > %IF_RS1_EXPORT_ENABLED% | Evaluates as true if the "Save separate Rocksmith 1 files" export preference is enabled.
> > %IF_RS2_EXPORT_ENABLED% | Evaluates as true if the "Save separate Rocksmith 2 files" export preference is enabled.
> > %IF_ACTIVE_TRACK_PG_NOTE_OCCURS_BEFORE_MILLIS_[NUMBER]% | Evaluates as true if the active pro guitar track has any notes starting before the specified timestamp of [NUMBER] milliseconds, in which case the %RS_FIRST_NOTE_OCCURRING_BEFORE_MILLIS% macro will print the location of the first offending note. If a note in an inactive track meets this condition, %IF_INACTIVE_TRACKS_HAVE_RS_ERRORS% will evaluate as true.
> > %IF_RS_PHRASE_DEFINED_MULTIPLE_TIMES_[NAME]% | Evaluates as true if a Rocksmith phrase named [NAME] is defined multiple times in the scope of any track.
> > %IF_RS_PHRASE_DEFINED_[NAME]% | Evaluates as true if a Rocksmith phrase named [NAME] is defined one or more times in the scope of any track.
> > %IF_RS_SECTION_DEFINED_[NAME]% | Evaluates as true if a Rocksmith section named [NAME] is defined one or more times in the scope of any track.
> > %IF_RS_NOTES_EXIST_BEFORE_PHRASE_[NAME]% | Evaluates as true if at least one pro guitar note starts before any instance of a Rocksmith phrase named [NAME] in the project.
> > %IF_RS_NOTES_AT_OR_AFTER_PHRASE_[NAME]% | Evaluates as true if at least one pro guitar note extends up to or beyond any instance of a Rocksmith phrase named [NAME] in the project.
> > %IF_MIN_NOTE_DISTANCE_NOT_BEAT_OR_MEASURE_BASED% | Evaluates as true if the minimum note distance defined in File>Preferences>Preferences is not configured as a 1/# beat or measure.
> > %IF_ACTIVE_TRACK_RS_ANY_PITCHED_SLIDES_LACK_LINKNEXT% | Evaluates as true if the active pro guitar track has any pitched slides that do not linknext to another note, in which case the %RS_FIRST_PITCHED_SLIDE_LACKING_LINKNEXT% macro will print the location of the first offending note. If a pitched slide in an inactive track meets this condition, %IF_INACTIVE_TRACKS_HAVE_RS_WARNINGS% will evaluate as true.
> > %IF_ACTIVE_TRACK_RS_ANY_TONE_CHANGES_ON_NOTE% | Evaluates as true if the active pro guitar track has any tone changes that occur at the start time of any note, in which case the %RS_FIRST_TONE_CHANGE_STARTING_ON_A_NOTE% macro will print the location of the first offending tone change. If a tone change in an inactive track meets this condition, %IF_INACTIVE_TRACKS_HAVE_RS_ERRORS% will evaluate as true.
> > %IF_RS_NOTES_TO_SOON_AFTER_COUNT_PHRASE% | Evaluates as true if any pro guitar track has notes begining earlier than one measure after the first COUNT Rocksmith phrase in the project.
> > %IF_RS_ONLY_ONE_TONE_CHANGE% | Evaluates as true if the active pro guitar track has only one tone change.
> > %IF_RS_NO_DEFAULT_TONE_DEFINED% | Evaluates as true if the active pro guitar track has no default tone defined.
> > %IF_TRACK_DIFF_HAS_NO_FHPS% | Evaluates as true if the active pro guitar track does not have any fret hand positions defined.
> > %IF_ACTIVE_TRACK_RS_ANY_NOTE_SUBCEEDS_FHP% | Evaluates as true if the active pro guitar track has any notes that use a fret lower than the fret hand position in effect, in which case %RS_FIRST_NOTE_SUBCEEDING_FHP% macro will print the location of the first offending note. If a note in an inactive track meets this condition, %IF_INACTIVE_TRACKS_HAVE_RS_ERRORS% will evaluate as true.
> > %IF_ACTIVE_TRACK_RS_ANY_NON_TAP_NOTE_EXCEEDS_FHP_BY_[NUMBER]% | Evaluates as true if the active pro guitar track has any notes, excluding tap notes, going >= [NUMBER] frets above the active fret hand position, in which case the %RS_FIRST_NON_TAP_NOTE_EXCEEDING_FHP% macro will print the location of the first offending note. If a note in an inactive track meets this condition, %IF_INACTIVE_TRACKS_HAVE_RS_ERRORS% will evaluate as true.
> > %IF_ACTIVE_TRACK_RS_ANY_PITCHED_SLIDES_LACK_END_FRET% | Evaluates as true if the active pro guitar track has any notes with pitched slide technique that don't define an end fret, in which case the %RS_FIRST_PITCHED_SLIDE_LACKING_END_FRET% macro will print the location of the first offending note. If a note in an inactive track meets this condition, %IF_INACTIVE_TRACKS_HAVE_RS_WARNINGS% will evaluate as true.
> > %IF_ACTIVE_TRACK_RS_ANY_BENDS_LACK_STRENGTH_DEFINITION% | Evaluates as true if the active pro guitar track has any notes with bend technique that don't define a bend strength, in which case the %RS_FIRST_BEND_LACKING_STRENGTH_DEFINITION% macro will print the location of the first offending note. If a note in an inactive track meets this condition, %IF_INACTIVE_TRACKS_HAVE_RS_WARNINGS% will evaluate as true.
> > %IF_ACTIVE_TRACK_RS_ANY_OPEN_NOTES_BEND% | Evaluates as true if the active pro guitar track has any open note that bend, in which case the %RS_FIRST_OPEN_NOTE_WITH_BEND% macro will print the location of the first offending note. If a note in an inactive track meets this condition, %IF_INACTIVE_TRACKS_HAVE_RS_WARNINGS% will evaluate as true.
> > %IF_LEFT_MOUSE_BUTTON_HELD% | Evaluates as true if the left mouse button is currently being held.
> > %IF_MOUSE_CONSTRAINED% | Evaluates as true if the mouse is currently being restricted to a specific region of the program window (ie. to prevent it from moving outside the beat marker area if clicking and dragging a beat marker), in which case the %MOUSE_CONSTRAINT% macro will print the coordinates of the region in (x1,y1) - (x2,y2) format.
> > %IF_SELECTED_BEAT_HAS_KEY_SIGNATURE% | Evaluates as true if the selected beat has a defined key signature change, in which case the %SELECTED_BEAT_KEY_SIGNATURE% macro will print the key signature.
> > %IF_FRET_VALUE_SHORTCUTS_LIMITED% | Evaluates as true if the string numbers that are affected by fret value shortcuts like CTRL+# (see pro guitar tutorial) is reduced to fewer than all strings. The %FRET_VALUE_SHORTCUTS_SETTING% macro prints a listing of which strings are currently influenced by such shortcuts.
> > %IF_RS_SECTION_COUNT_REACHES_[NUMBER]% | Evaluates as true if the total number of Rocksmith section applicable in the active track meets or exceeds the specified [NUMBER].
> > %IF_ANY_TEMPO_SUBCEEDS_[NUMBER]% | Evaluates as true if any beat in the project has a tempo lower than the specified [NUMBER] of beats per minute, in which case the %FIRST_BEAT_SUBCEEDING_TEMPO% macro will print the location of the first offending beat.
> > %IF_ACTIVE_TRACK_ANY_FHP_EXCEEDS_[NUMBER]% | Evaluates as true if the active pro guitar track has any fret hand positions higher than the specified fret [NUMBER], in which case the %RS_FIRST_FHP_EXCEEDING_NUMBER% macro will print the location of the first offending fret hand position. If a fret hand position in an inactive track meets this condition, %IF_INACTIVE_TRACKS_HAVE_RS_ERRORS% will evaluate as true.
> > %IF_ACTIVE_TRACK_RS_ANY_NOTE_EXCEEDS_FRET_[NUMBER]% | Evaluates as true if the active pro guitar track has any notes with a fret value higher than the specified fret [NUMBER], in which case the %RS_FIRST_NOTE_EXCEEDING_FRET% macro will print the location of the first offending note. If a note in an inactive track meets this condition, %IF_INACTIVE_TRACKS_HAVE_RS_ERRORS% will evaluate as true.
> > %IF_ACTIVE_TRACK_RS_ANY_NOTE_EXCEEDS_DIFF_[NUMBER]% | Evaluates as true if the active pro guitar track has any notes with a difficulty level higher than the specified difficulty [NUMBER], in which case the %RS_FIRST_NOTE_EXCEEDING_DIFF% macro will print the location of the first offending note. If a note in an inactive track meets this condition, %IF_INACTIVE_TRACKS_HAVE_RS_ERRORS% will evaluate as true.
> > %IF_ACTIVE_TRACK_RS_ANY_SLIDES_EXCEED_FRET_[NUMBER]% | Evaluates as true if the active pro guitar track has any pitched or unpitched slides that slide above the specified fret [NUMBER], in which case the %RS_FIRST_SLIDE_EXCEEDING_FRET% macro will print the location of the first offending note. If a slide in an inactive track meets this condition, %IF_INACTIVE_TRACKS_HAVE_RS_ERRORS% will evaluate as true.
> > %IF_RS_BASS_TRACK_STRING_COUNT_EXCEEDED% | Evaluates as true if any pro guitar track in the project is configured as a bass arrangement and uses more than the first four strings, as Rocksmith doesn't directly support this.
> > %IF_INACTIVE_TRACKS_HAVE_RS_WARNINGS% | Evaluates as true if any of several above-mentioned Rocksmith-specific conditional macros run prior to this invocation in the current render frame would evaluate as true for a track other than the active track, so that they can all be summarized in one line and citations relevant to the active track are displayed instead. Since this macro can only reflect the results of conditional macros that were invoked already, it should be placed below all relevant Rocksmith conditional macros in the panel.
> > %IF_INACTIVE_TRACKS_HAVE_RS_ERRORS% | Similar to %IF_INACTIVE_TRACKS_HAVE_RS_WARNINGS%, but applies to error messages instead of warning messages.
> > %IF_ACTIVE_TRACK_RS_ANY_TECH_NOTES_LACK_TARGET% | Evaluates as true if the active pro guitar track has any tech notes that don't overlap a pro guitar note, in which case the %RS_FIRST_TECH_NOTE_LACKING_TARGET% macro will print the location of the first offending tech note. If a tech note in an inactive track meets this condition, %IF_INACTIVE_TRACKS_HAVE_RS_WARNINGS% will evaluate as true.
> > %IF_ANY_LYRICS_EXTEND_OUTSIDE_LINES% | Evaluates as true if any lyrics in the project begins inside a lyric line but extends outside of the line, in which case the %FIRST_LYRIC_EXTENDING_OUTSIDE_LINE% macro will print the location of the first offending lyric.
> > %IF_CHART_HAS_ANY_NOTES% | Evaluates as true if the project has any notes or lyrics.
> > %IF_TEMPO_MAP_LOCKED% | Evaluates as true if the project's tempo map is locked.
> > %IF_ACTIVE_TRACK_RS_ANY_TECHNIQUES_MISSING_SUSTAIN% | Evaluates as true if the active pro guitar track has any pro guitar notes that have no sustain but do have a technique that requires sustain (bend, slide, vibrato or tremolo), in which case the %RS_FIRST_TECHNIQUE_MISSING_SUSTAIN% macro will print the location of the first offending note. If a note in an inactive track meets this condition, %IF_INACTIVE_TRACKS_HAVE_RS_WARNINGS% will evaluate as true.
> > %IF_IS_FINGERING_VIEW% | Evaluates as true if the active track is a pro guitar track and fingering view is enabled.
> > %IF_RS_TRACK_HAS_DYNAMIC_DIFFICULTY% | Evaluates as true if the active track is a pro guitar track and has dynamic difficulty (the difficulty limit is removed).
> > %IF_TRACK_HAS_UNSNAPPED_NOTES% | Evaluates as true if the active track has one or more notes that are not grid snapped (based on the current setting of the "Prefer MIDI friendly grid snaps" preference, to match the notes that would highlight when using the "Highlight non grid snapped notes" option in the Song menu), in which case the %TRACK_UNSNAPPED_NOTE_COUNT% macro will print the number of notes that are not grid snapped. In the case of pro guitar tracks, tech notes are not counted, only normal notes.
> > %IF_TRACK_HAS_NOTES_IN_MULTIPLE_DIFFS% | Evaluates as true if the active track has notes in at least two difficulties.

> > # Control macros

> > These macros are for special uses, such as affecting how text will be printed to the Notes panel.

> > Macro name | Purpose
> > %EMPTY% | If the line in notes.panel.txt did not result in any text to print for the line in the Notes panel, this macro allows an empty line to be printed to the Notes panel and the print position to be lowered so that the next line of printed text occurs below the empty space.
> > %MOVE_UP_ONE_PIXEL% | Raises the print position in the Notes panel by one pixel, to remove spacing, such as if you want to use hyphens to underline the previous printed line of text.
> > %MOVE_UP_PIXELS_[NUMBER]% | Raises the print position in the Notes panel by [NUMBER] pixels, to remove spacing, such as if you want to use hyphens to underline the previous printed line of text.
> > %MOVE_DOWN_ONE_PIXEL% | Lowers the print position in the Notes panel by one pixel, to allow better spacing in case two lines of printed text are too close and overlap each other.
> > %MOVE_DOWN_PIXELS_[NUMBER]% | Lowers the print position in the Notes panel by [NUMBER] pixels, to remove spacing, such as if you want to use hyphens to underline the previous printed line of text.
> > %MOVE_LEFT_ONE_PIXEL% | Moves the print position in the Notes panel left by one pixel, such as to allow better alignment of items in different lines.
> > %MOVE_LEFT_PIXELS_[NUMBER]% | Moves the print position in the Notes panel left by [NUMBER] pixels, such as to allow better alignment of items in different lines.
> > %MOVE_RIGHT_ONE_PIXEL% | Moves the print position in the Notes panel right by one pixel, such as to allow better alignment of items in different lines.
> > %MOVE_RIGHT_PIXELS_[NUMBER]% | Moves the print position in the Notes panel right by [NUMBER] pixels, such as to allow better alignment of items in different lines.
> > %FLUSH% | Prints the content of the line that has been processed up to this point, then resumes processing the line. Use this to print a line in progress so that a control macro that comes after the %FLUSH% statement, such as %TEXT_COLOR_[COLORNAME]%, can take effect mid-line.
> > %TEXT_COLOR_[COLORNAME]% | Changes the text color of newly printed text to [COLORNAME], which can be BLACK, WHITE, GRAY, RED, GREEN, BLUE, TURQUOISE, YELLOW, PURPLE, ORANGE, SILVER, CYAN or a 6 digit RGB code. For example: %TEXT_COLOR_RED% and %TEXT_COLOR_DAA520%. This color change is permanent until it is changed again.
> > %TEXT_BACKGROUND_COLOR_[COLORNAME]% | Similar to the %TEXT_COLOR_...% macro, changes the background color of newly printed text to [COLORNAME]. This color change is permanent until it is changed again. The default background color can be restored with %TEXT_BACKGROUND_COLOR_NONE%.
> > %TEXT_BACKGROUND_COLOR_NONE% | Removes the text background color, making it transparent as it is by default.
> > %ENDLINE% | Ends printing for the current line.
> > %ENDPANEL% | Ends printing for the entire panel.
> > %NEWLINE% | Moves the internal printing position to the beginning of the next line, allowing one line of the panel.txt file to print multiple lines instead of repeating conditional macros one panel line at a time.
> > %TIME_FORMAT_MS% | Changes the formatting of expansion macros that display timestamps (such as the seek position or a note that is cited by a conditional macro) to milliseconds.
> > %TIME_FORMAT_MM_SS_MS% | Changes the formatting of expansion macros that display timestamps (such as the seek position or a note that is cited by a conditional macro) to mm:ss.ms.
> > %DISPLAY_ERROR% | Temporarily changes the background color to red by default and the text color to white by default, both of which will return to the previously set colors at the end of the processing of the line of the panel.txt file. Use of the %NEWLINE% macro will allow temporary coloration to continue to be used for printed content. The eof_notes_panel_error_bg_color and eof_notes_panel_error_fg_color values can be edited in eof.cfg when EOF is not running to change the background and text colors respectively.
> > %DISPLAY_WARNING% | Temporarily changes the background color to yellow by default and the text color to black by default, both of which will return to the previously set colors at the end of the processing of the line of the panel.txt file. Use of the %NEWLINE% macro will allow temporary coloration to continue to be used for printed content. The eof_notes_panel_warning_bg_color and eof_notes_panel_warning_fg_color values can be edited in eof.cfg when EOF is not running to change the background and text colors respectively.
> > %DISPLAY_SUCCESS% | Temporarily changes the background color to green by default and the text color to black by default, both of which will return to the previously set colors at the end of the processing of the line of the panel.txt file. Use of the %NEWLINE% macro will allow temporary coloration to continue to be used for printed content. The eof_notes_panel_success_bg_color and eof_notes_panel_success_fg_color values can be edited in eof.cfg when EOF is not running to change the background and text colors respectively.
> > %DISPLAY_ALERT% | Temporarily changes the background color to blue by default and the text color to yellow by default, both of which will return to the previously set colors at the end of the processing of the line of the panel.txt file. Use of the %NEWLINE% macro will allow temporary coloration to continue to be used for printed content. The eof_notes_panel_alert_bg_color and eof_notes_panel_alert_fg_color values can be edited in eof.cfg when EOF is not running to change the background and text colors respectively.

> > # Symbol macros

> > These macros each result in a single symbol being printed to the Notes panel.

> > Macro name | Purpose
> > %PERCENT% | Prints the percent sign. This is the only way to print a percent sign because percent signs are otherwise used to name macros.
> > %BEND% | Prints the bend symbol.
> > %HARMONIC% | Prints the harmonic symbol.
> > %DOWNSTRUM% | Prints the down strum symbol.
> > %UPSTRUM% | Prints the up strum symbol.
> > %TREMOLO% | Prints the tremolo symbol.
> > %PHARMONIC% | Prints the pinch harmonic symbol.
> > %LINKNEXT% | Prints the linknext symbol.
> > %USLIDEUP% | Prints the unpitched slide up symbol.
> > %USLIDEDOWN% | Prints the unpitched slide down symbol.
> > %STOP% | Prints the stop symbol.
> > %PREBEND% | Prints the pre-bend symbol.

> > # Expansion macros

> > These macros are "expanded" into (replaced with) appropriate text which is printed to the Notes panel.

> > Macro name | Purpose
> > Track information
> > %TRACK_NAME% | Prints the name of the active track (ie. PART GUITAR).
> > %TRACK_ALT_NAME% | Prints the alternate name of the active track (the name that was defined with Track>Rename). If no such name is defined for the active track, "None" is printed.
> > %TRACK_DIFFICULTY% | Prints the difficulty level of the active track (which is set in Track>Set difficulty). If no difficulty is defined for the active track, "(Undefined)" is printed.
> > %TRACK_SECONDARY_DIFFICULTY% | If the active track is one of the tracks that has a second difficulty level (drums or vocals, see Track>Set difficulty), prints that level along with some text identifying what the difficulty type ("(Pro: " for pro drum difficulty or "(Harmony: " for harmony difficulty). If the active drum/vocal track has no secondary difficulty level defined, "Undefined" is printed after the dificulty type. If the active track is not a drum/vocal track, no text is printed.
> > %TRACK_SOLO_COUNT% | Prints the number of solo sections in the active track. If there aren't any, "None" is printed.
> > %TRACK_SOLO_NOTE_COUNT% | Prints the number of notes in the active track that are in solo sections, and the percentage of the track's total note count that represents. If there aren't any, "None" is printed.
> > %TRACK_SOLO_NOTE_STATS% | Prints statistics about the number of notes in the active track's solo sections: The minimum number among all solo sections, the maximum number among all solo sections and the mean number (the total number of solo notes divided by the number of solo sections). If there aren't any, "None" is printed.
> > %TRACK_SP_COUNT% | Prints the number of star power sections in the active track. If there aren't any, "None" is printed.
> > %TRACK_SP_NOTE_COUNT% | Prints the number of star power notes in the active track, and the percentage of the track's total note count that represents. If there aren't any, "None" is printed.
> > %SP_LYRIC_LINE_COUNT% | Prints the number of star power lyric lines in the vocal track, and the percentage of the vocal track's total lyric line count that represents. If there aren't any, "None" is printed.
> > %TRACK_SP_NOTE_STATS% | Prints statistics about the number of notes in the active track's star power sections: The minimum number among all star power sections, the maximum number among all star power sections and the mean number (the total number of star power notes divided by the number of star power sections). If there aren't any, "None" is printed.
> > %TRACK_SLIDER_COUNT% | Prints the number of slider sections in the active track. If there aren't any, "None" is printed.
> > %TRACK_SLIDER_NOTE_COUNT% | Prints the number of slider notes in the active track, and the percentage of the track's total note count that represents. If there aren't any, "None" is printed.
> > %TRACK_SLIDER_NOTE_STATS% | Prints statistics about the number of notes in the active track's slider sections: The minimum number among all slider sections, the maximum number among all slider sections and the mean number (the total number of slider notes divided by the number of slider sections). If there aren't any, "None" is printed.
> > Sound cue statuses
> > %METRONOME_STATUS% | Prints "On" if the metronome sound cue (see Edit>Metronome) is currently enabled, otherwise prints "Off".
> > %CLAPS_STATUS% | Prints "On" if the claps sound cue (see Edit>Claps) is currently enabled, otherwise prints "Off".
> > %VOCAL_TONES_STATUS% | Prints "On" if the vocal tones sound cue (see Edit>Vocal tones) is currently enabled, otherwise prints "Off".
> > %MIDI_TONES_STATUS% | Prints "On" if the MIDI tones sound cue (see Edit>MIDI tones) is currently enabled, otherwise prints "Off".
> > Beat information
> > %SELECTED_BEAT% | Prints the selected beat's number. The first beat in a project is always number 0.
> > %SELECTED_BEAT_TEMPO% | Prints the tempo of the selected beat. Only the number is printed, you must add the text "BPM" if that is what you want.
> > %HOVER_BEAT% | Prints the number of the beat that the mouse is currently hovering over. If no beat is being hovered over, "None" is printed.
> > %SELECTED_BEAT_KEY_SIGNATURE% | Prints the major key signature defined on the selected beat, followed by the minor key signature in parentheses. If no key signature is defined on the selected beat, "None maj (None min)" is printed.
> > %SELECTED_BEAT_POS% | Prints the position of the selected beat.
> > %SELECTED_BEAT_MEASURE% | Prints the measure number the selected beat is in. If no time signature is in effect at the selected beat's position (Beat>Time signature was not used to define a time signature on that or any previous beat), "(TS undefined)" is printed.
> > %BEAT_POSITION_IN_MEASURE% | Prints the beat number within a measure the selected beat is. If no time signature is in effect at the selected beat's position (Beat>Time signature was not used to define a time signature on that or any previous beat), "(TS undefined)" is printed.
> > %BEAT_COUNT% | Prints the number of beats present in the current project.
> > %MEASURE_COUNT% | Prints the number of measures present in the current project. If there are no time signatures defined in the project, "(No TS)" is printed.
> > Selected Note information
> > %SELECTED_NOTE% | Prints the selected note's/beat's number. The first note in a track is always number 0, but the numbering is shared among all difficulties in the track, so the first note in a difficulty will not be 0 if there's an earlier note in another difficulty in the same track. If no note is selected, "None" is printed.
> > %SELECTED_NOTE_POS% | Prints the position of the selected note. If no note is selected, "None" is printed.
> > %SELECTED_NOTE_LENGTH% | Prints the length of the selected note. If no note is selected, "None" is printed.
> > %SELECTED_NOTE_NAME% | Prints the name (ie. defined by Note>Edit Name) of the selected note. If the selected note has no defined name, no text is printed. If no note is selected, "None" is printed.
> > %SELECTED_NOTE_VALUE% | Prints the internal note value of the selected note. If the active track is the vocal track, this value is the pitch of the selected lyric. If the active track is not a vocal track, this is a bitmask defining which lanes the note uses. If no note is selected, "None" is printed.
> > %SELECTED_NOTE_FLAGS% | Prints the internal flags value of the selected note/lyric. If no note/lyric is selected, "None" is printed.
> > %SELECTED_LYRIC_TONE_NAME% | Prints the proper note name for the pitch, ie. C# or Db (taking the Song>Display semitones as flat setting into account). If no lyric is selected, or the active track is not the vocal track, "None" is printed.
> > %PRO_GUITAR_NOTE_FRETTING% | Prints a string defining the fret number used on each string by the selected pro guitar note. If no note is selected or the active track is not a pro guitar track, "None" is printed.
> > %SELECTED_CHORD_NAME_LOOKUP% | Prints a string indicating what chord name the selected note is detected to have, and what match number out of the total number of lookup matches the result is. If no note is selected, or there are no chord name matches found or the active track is not a pro guitar track, "None" is printed.
> > %PRO_GUITAR_NOTE_FINGERING% | Prints a string defining the finger number used on each string by the selected pro guitar note (see Note>Rocksmith>Edit frets/fingering). If no note is selected, or the active track is not a pro guitar track, "None" is printed.
> > %PRO_GUITAR_NOTE_TONES% | Prints a string defining the note name played on each string by the selected pro guitar note. If no note is selected or the active track is not a pro guitar track, "None" is printed.
> > %PRO_GUITAR_NOTE_MTONES% | Prints a string defining the MIDI note numbers that reflect the pitch played on each string for the selected pro guitar note.
> > %SELECTED_NOTE_NPS% | Prints the number of selected notes divided by the number of seconds between the start of the first selected note and the end of the last selected note, giving a generic rate of notes per second.
> > %PRO_GUITAR_TRACK_EFFECTIVE_FHP% | Prints the active pro guitar track's active fret hand position in if any, otherwise prints "None".
> > %PRO_GUITAR_TRACK_EFFECTIVE_TONE% | Prints the active pro guitar track's active tone if any, otherwise prints "None".
> > %ZOOM_LEVEL% | Prints the current zoom level as 1/#.
> > %ACTIVE_MIDI_TONES% | Prints a string representing which of the 6 MIDI channels EOF uses to play MIDI tones are currently playing a note.
> > %IR_ALBUM_ART_FILENAME% | Prints the filename of the first properly-named album art file in the project folder, which is the one that will export to subfolders during IMMERROCK export.
> > %PRINT_LYRIC_LINE_COUNT_STRING% | Prints the number of lyric lines that are defined in the vocal track.
> > %PRINT_IR_SECTION_COUNT_STRING% | Prints the number of text events formatted suitably to be treated as sections during IMMERROCK export.
> > %PRINT_RS_SECTION_COUNT_STRING% | Prints the number of text events formatted suitably to be treated as sections during Rocksmith export.
> > %PRINT_IR_MISSING_FINGERING_COUNT_STRING% | Prints the number of chords in the active pro guitar track that are missing finger placements and the total number of chords.
> > %PRINT_RS_MISSING_FINGERING_COUNT_STRING% | Same as %PRINT_IR_MISSING_FINGERING_COUNT_STRING%, but uses Rocksmith terminology of "finger definitions".
> > %SEEK_IR_SECTION_CONDITIONAL% | Prints the active section in effect at the current seek position, searching within sections applicable to the pro guitar tracks that will export to IMMERROCK due to their configured arrangement types.
> > %SEEK_RS_SECTION_CONDITIONAL% | Prints the active section in effect at the current seek position, searching within sections applicable to the pro guitar tracks that will export to Rocksmith.
> > %RS_FIRST_NOTE_OCCURRING_BEFORE_MILLIS% | Prints the location of the first culprit of the %IF_PG_NOTE_OCCURS_BEFORE_MILLIS_[NUMBER]% conditional macro (the first note that starts before the specified timestamp).
> > %RS_FIRST_PITCHED_SLIDE_LACKING_LINKNEXT% | Prints the location of the first culprit of the %IF_RS_ANY_PITCHED_SLIDES_LACK_LINKNEXT% conditional macro (the first note that has a pitched slide but does not link to the note that follows it).
> > %RS_FIRST_TONE_CHANGE_STARTING_ON_A_NOTE% | Prints the location of the first culprit of the %IF_RS_ANY_TONE_CHANGES_ON_NOTE% conditional macro (the first tone change that starts on the same time stamp as any pro guitar note).
> > %RS_FIRST_NOTE_SUBCEEDING_FHP% | Prints the location of the first culprit of the %IF_RS_ANY_NOTE_SUBCEEDS_FHP% conditional macro (the first note that uses a fret below the fret hand position in effect).
> > %RS_FIRST_NON_TAP_NOTE_EXCEEDING_FHP% | Prints the location of the first culprit of the %IF_RS_ANY_NON_TAP_NOTE_EXCEEDS_FHP_BY_[NUMBER]% conditional macro (the first note that is not a tap note and uses a fret that is at least the specified number of frets above the fret hand position in effect).
> > %RS_FIRST_PITCHED_SLIDE_LACKING_END_FRET% | Prints the location of the first culprit of the %IF_RS_ANY_PITCHED_SLIDES_LACK_END_FRET% conditional macro (the first note that is a pitched slide that is missing an end of slide position).
> > %RS_FIRST_BEND_LACKING_STRENGTH_DEFINITION% | Prints the location of the first culprit of the %IF_RS_ANY_BENDS_LACK_STRENGTH_DEFINITION% conditional macro (the first note that is a bend that does not define how many half/quarter steps the bend strength is).
> > %RS_FIRST_OPEN_NOTE_WITH_BEND% | Prints the location of the first culprit of the %IF_RS_ANY_OPEN_NOTES_BEND% macro (the first note that is an open note and has bend technique).
> > %LEFT_CLICK_X_COORD% | Prints the x coordinate of where the last left click was detected.
> > %LEFT_CLICK_Y_COORD% | Prints the y coordinate of where the last left click was detected.
> > %FIRST_BEAT_SUBCEEDING_TEMPO% | Prints the location of the first culprit of the %IF_ANY_TEMPO_SUBCEEDS_[NUMBER]% conditional macro (the first beat with a tempo slower than the specified BPM).
> > %RS_FIRST_FHP_EXCEEDING_NUMBER% | Prints the location of the first culprit of the %IF_ANY_FHP_EXCEEDS_[NUMBER]% conditional macro (the first fret hand position going above the specified number).
> > %RS_FIRST_NOTE_EXCEEDING_FRET% | Prints the location of the first culprit of the %IF_RS_ANY_NOTE_EXCEEDS_FRET_[NUMBER]% conditional macro (the first note using a fret higher than the specified number).
> > %RS_FIRST_NOTE_EXCEEDING_DIFF% | Prints the location of the first culprit of the %IF_RS_ANY_NOTE_EXCEEDS_DIFF_[NUMBER]% conditional macro (the first note in a difficulty number higher than the specified number).
> > %RS_FIRST_SLIDE_EXCEEDING_FRET% | Prints the location of the first culprit of the %IF_RS_ANY_SLIDES_EXCEED_FRET_[NUMBER]% conditional macro (the first note in a pro guitar track that slides above the specified number).
> > %FIRST_LYRIC_EXTENDING_OUTSIDE_LINE% | Prints the location of the first culprit of the %IF_ANY_LYRICS_EXTEND_OUTSIDE_LINES% conditional macro (the first lyric that begins within a lyric line but extends beyond the end of that line).
> > %RS_FIRST_TECHNIQUE_MISSING_SUSTAIN% | Prints the location of the first culprit of the %IF_RS_ANY_TECHNIQUES_MISSING_SUSTAIN% conditional macro (the first pro guitar note that has bend, pitched/unpitched slide, vibrato or tremolo status but has no sustain).
> > %% | Prints the percent sign.
> > Note information
> > %HOVER_NOTE% | Prints the number of the note that the mouse is currently hovering over. If no note is being hovered over, "None" is printed.
> > %SEEK_HOVER_NOTE% | Prints the number of the note that is at the seek position and would be altered by various modifications in Feedback input mode. If Feedback input mode is not in use or if the seek position is not at a note position, "None" is printed.
> > %COUNT_NOTES_SELECTED% | Prints the number of selected notes that are in the active track difficulty.
> > %TRACK_DIFF_NOTE_COUNT% | Prints the number of notes that exist in the active track difficulty.
> > %TRACK_FLATTENED_DIFF_NOTE_COUNT% | Prints the number of notes that exist in the active flattened track difficulty (taking dynamic difficulty into account).
> > %TRACK_DIFF_NUMBER_NOTES_WITH_GEM_COUNT_[NUMBER]% | Prints the number of notes in the track difficulty that have the specified [NUMBER] of gems, and the percentage of the track difficulty's total note count that represents. Specify 0 to print information for open strum notes.
> > %TRACK_DIFF_NOTE_COUNT_INSTANCES_[COMBINATION]% | Prints the number of notes in the track difficulty that have the specified [COMBINATION] of gems. Standard GRYBO gem colors can be specified (G is lane 1, R is lane 2, Y is lane 3, B is lane 4, O is lane 5, ie. %TRACK_DIFF_NOTE_COUNT_INSTANCES_GR% counts green+red chords), and S is for open strum. For pro guitar tracks, 'P' can be used to represent lane 6 (lane 6 gems are drawn in purple for Rock Band, Guitar Hero and Rocksmith color sets). For GHL tracks, the gem designations are W1, W2, W3, B1, B2, B3 and S for open strum. For drum tracks, cymbals/toms that must be present to be counted are available: "T3" = lane 3 tom, "T4" = lane 4 tom, "T5" = lane 5 tom, "C3" = lane 3 cymbal, "C4" = lane 4 cymbal, "C5" = lane 5 cymbal. These tom/cymbal designations are additive, ie. a designation of 3T5 will be specify any drum chord with a cymbal or tom on lane 3 and a tom on lane 5, and 3C3 will have the same result as C3 because both indicate a note where there must be cymbal on lane 3, which requires there to be a gem on lane 3. Lane numbers can also be designated by number instead of color ('1' is lane 1, '2' is lane 2, '3' is lane 3, '4' is lane 4, '5' is lane 5, '6' is lane 6). A pro guitar note being an open note doesn't prevent it from being detected as having gems on lanes, ie. an open E single note will be counted by both %TRACK_DIFF_NOTE_COUNT_INSTANCES_S% and %TRACK_DIFF_NOTE_COUNT_INSTANCES_1%.
> > %TRACK_DIFF_NOTE_COUNT_AND_RATIO_INSTANCES_[COMBINATION]% | Similar to %TRACK_DIFF_NOTE_COUNT_INSTANCES_[COMBINATION]%, but also prints the percentage of all notes in the active track difficulty that matching notes represent.
> > %TRACK_DIFF_COUNT_AND_RATIO_OPEN_CHORDS% | Prints the number of open chords (chords with at least one open string, at least one fretted string, and no frets higher than 3) in the active pro guitar track difficulty, and the percentage of the track difficulty's total note count that represents. If the active track is not a pro guitar track, "None" is printed.
> > %TRACK_DIFF_COUNT_AND_RATIO_BARRE_CHORDS% | Prints the number of barre chords (chords where the lowest used fret is played on multiple non-contiguous strings, with no strings played open between the lowest fret instances) in the active pro guitar track difficulty, and the percentage of the track difficulty's total note count that represents. If the active track is not a pro guitar track, "None" is printed.
> > %TRACK_DIFF_COUNT_AND_RATIO_STRING_MUTES% | Prints the number of fully string muted chords in the active pro guitar track difficulty, and the percentage of the track difficulty's total note count that represents. If the active track is not a pro guitar track, "None" is printed.
> > %TRACK_DIFF_NOTE_COUNT_AND_RATIO_EXPERT_PLUS_BASS% | Prints the number of expert+ bass notes in the active track difficulty, and the percentage of the track difficulty's total note count that represents. If the active track difficulty is not Expert in either of the drum tracks, "None" is printed.
> > %TRACK_DIFF_NOTE_COUNT_AND_RATIO_CYMBALS% | Prints the number of notes with cymbals in the active track difficulty, and the percentage of the track difficulty's total note count that represents. If the active track difficulty doesn't have any cymbals, "None" is printed.
> > %TRACK_DIFF_COUNT_AND_RATIO_PITCHED_LYRIC% | Prints the number of pitched lyrics (lyrics with a pitch between 36 and 84 whose text does not include a freestyle marker), and the percentage of the track difficulty's total note count that represents. If the vocal track is not active, "None" is printed.
> > %TRACK_DIFF_COUNT_AND_RATIO_UNPITCHED_LYRIC% | Prints the number of unpitched lyrics (lyrics with no defined pitch, not including pitched lyrics with a freestyle marker), and the percentage of the track difficulty's total note count that represents. If the vocal track is not active, "None" is printed.
> > %TRACK_DIFF_COUNT_AND_RATIO_PERCUSSION_LYRIC% | Prints the number of percussion lyrics, and the percentage of the track difficulty's total note count that represents. If the vocal track is not active, "None" is printed.
> > %TRACK_DIFF_COUNT_AND_RATIO_FREESTYLE_LYRIC% | Prints the number of freestyle lyrics (those whose text include a # or ^ freestyle marker), and the percentage of the track difficulty's total note count that represents. If the vocal track is not active, "None" is printed.
> > %TRACK_DIFF_COUNT_AND_RATIO_PITCH_SHIFT_LYRIC% | Prints the number of pitch shift lyrics (those whose text begins with the + pitch shift marker), and the percentage of the track difficulty's total note count that represents. If the vocal track is not active, "None" is printed.
> > %COUNT_LYRICS_WITH_PITCH_NUMBER_[PITCH]% | Prints the number of lyrics with the specified pitch. If the vocal track is not active, "None" is printed.
> > %TRACK_COUNT_HIGHLIGHTED_NOTES% | Prints the number of notes/lyrics in the active track that are dynamically (ie. with "Song>Highlight non grid snapped notes") or statically (ie. with Note>Highlight>On or by various functions) highlighted.
> > Pro guitar information
> > %PRO_GUITAR_TRACK_EFFECTIVE_FHP% | Prints the fret hand position in effect at the current seek position. If there is no fret hand position defined at or before the seek position, or if the active track is not a pro guitar track, "None" is printed.
> > %PRO_GUITAR_TRACK_EFFECTIVE_TONE% | Prints the name of the tone that is in effect at the current seek position of the active track. If there is no tone change at or before the current seek position, but there is a default tone defined, that tone name is printed in parentheses. If there is no tone change defined at/before the current seek position and no default tone defined, or if the active track is not a pro guitar track, "None" is printed.
> > %FRET_VALUE_SHORTCUTS_SETTING% | Prints a string indicating which strings will be affected by the keyboard functions to set/increment/decrement the fret number or toggle the ghost status of selected pro guitar notes.
> > Star power path information
> > %CH_SP_PATH_SCORE% | If a valid star power path is defined, prints the estimated score for the solution in Clone Hero. If no star power path is defined, or the defined path is invalid, "None" is printed.
> > %CH_SP_PATH_BASE_SCORE% | If a valid star power path is defined, prints the base score (point values of gems and sustains without any bonuses, used to calculate the number of awarded stars) for the solution in Clone Hero. If no star power path is defined, or the defined path is invalid, "None" is printed.
> > %CH_SP_PATH_AVG_MULTIPLIER% | If a valid star power path is defined, prints the average multiplier (the estimated in-game score (minus solo bonuses) divided by the base score) used to determine the number of awarded stars) for the solution in Clone Hero. If no star power path is defined, or the defined path is invalid, "None" is printed.
> > %CH_SP_PATH_STARS% | If a valid star power path is defined, prints the number of stars (ie. as "1 star" or "7 stars") estimated for this star power path in Clone Hero. If no star power path is defined, or the defined path is invalid, "None" is printed.
> > %CH_SP_PATH_DEPLOYMENT_NOTES% | If a valid star power path is defined, prints the estimated maximum number of notes that can be played during the star power deployments, and the percentage of the track difficulty's total note count that represents. If no star power path is defined, or the defined path is invalid, "None" is printed.
> > %CH_SP_SEEK_SP_PATH_STATUS% | Prints whether or not the seek position is within the estimated scope of any defined star power deployment, and if so, that deployment's start and stop timestamps.
> > %CH_SP_MAX_DEPLOYMENT_COUNT_AND_RATIO% | Prints the active track difficulty's maximum number of star power deployments and the ratio of deployments to notes, based on the currently defined star power phrases.
> > %CH_SP_METER_AFTER_LAST_NOTE_HIT% | Prints the star power meter level in effect after hitting the note immediately at/before the seek position.
> > Various information
> > %SEEK_POSITION% | Prints the current seek position in minutes:seconds.milliseconds format (or in seconds.milliseconds format if the "Display seek pos. in seconds" preference is enabled).
> > %SEEK_POSITION_SEC% | Prints the current seek position in seconds.milliseconds format, regardless of the current setting of the "Display seek pos. in seconds" preference.
> > %SEEK_POSITION_MIN_SEC% | Prints the current seek position in minutes:seconds.milliseconds format, regardless of the current setting of the "Display seek pos. in seconds" preference.
> > %SEEK_POSITION_PERCENT% | Prints the current seek position as a percentage of the chart's total length.
> > %START_POINT% | Prints the position of the start point (see Edit>Set start point). If no start point has been defined, "None" is printed.
> > %END_POINT% | Prints the position of the end point (see Edit>Set start point). If no end point has been defined, "None" is printed.
> > %INPUT_MODE_NAME% | Prints the name of the input mode currently in use (Defined in File>Preferences>Preferences), the default setting of which is "Piano Roll".
> > %PLAYBACK_SPEED% | Prints the playback speed in percent (the percent sign is not printed).
> > %GRID_SNAP_SETTING% | Prints the current grid snap setting. If a custom grid snap setting is in use, the number of intervals per-beat or per-measure is displayed as appropriate.
> > %NOTE_GAP% | Prints the current "Min. note length" preference.
> > %SELECTED_CATALOG_ENTRY% | Prints the currently selected fret catalog entry number out of the total catalog entry count. If there are no catalog entries, "0 of 0" is printed.
> > %SELECTED_CATALOG_ENTRY_NAME% | Prints the name of the currently selected fret catalog entry. If there are no catalog entries, or the active entry does not have a defined name, "None" is printed.
> > %LOADED_OGG_NAME% | Prints the relative file name (excludes the folder path) of the currently loaded OGG file. If no audio is loaded, "None" is printed.
> > %TEXT_FILE% | Prints relative path (not including the folder path) of the text file loaded for display in the Notes panel.
> > %KEY_INPUT_STATUS% | Prints the key status of CTRL, ALT and SHIFT (displays an asterisk * if the key is detected as being held), as well as the scan code and ASCII code of the last pressed key.
> > %WINDOW_HEIGHT% | Prints EOF's current program window height (set in File>Display>Display).
> > %WINDOW_WIDTH% | Prints EOF's current program window width (a default width set in File>Display>Display or a custom width set in File>Display>Set display width).
> > %ACTIVE_DIFFICULTY_NUMBER% | Prints the number of the active difficulty, where 0 is the lowest (ie. Easy in Rock Band) and 255 is the highest (ie. in Rocksmith).
> > %ACTIVE_DIFFICULTY_NAME% | Prints the name of the active difficulty, taking the "Use FoF difficulty naming" preference into account.
> > %3D_MAX_DEPTH% | Prints the current maximum depth of the 3D preview's camera (ie. how far back the displayed track goes), as controlled by ALT+numpad minus, ALT+numpad plus.
> > %MOUSE_X% | Prints the mouse X coordinate, as well as the relative X coordinate and name of whichever sub-window the mouse is in.
> > %MOUSE_Y% | Prints the mouse Y coordinate, as well as the relative Y coordinate and name of whichever sub-window the mouse is in.
> > %EOF_HOVER_PIECE% | Prints the lane number the mouse is currently hovered over, or -1 if the mouse isn't hovered directly over any lane.
> > %EOF_FPS% | Prints the number of frames per second rendered in the main loop of EOF (ie. doesn't count benchmarking, while dialogs are open, etc).
> > %GRID_SNAP_SEEK_POS_LENGTH_NPS% | Prints the length and effective note per second rate of the current grid snap length at the current seek position. If no grid snap is enabled, "None" is printed.
> > %PHASE_CANCELLATION% | Prints the "on" or "off" status of the phase cancellation audio feature.
> > %CENTER_ISOLATION% | Prints the "on" or "off" status of the center isolation audio feature.
> > %SEEK_SP_STATUS% | Prints whether or not the seek position is within a defined star power phrase, and if so, that phrase's start and stop timestamps. If not, "Seek pos is not within an SP phrase" is printed.
> > %SEEK_SP_STATUS_CONDITIONAL% | Similar to %SEEK_SP_STATUS% but prints nothing if the seek position is not within a star power phrase.
> > %SEEK_LYRIC_LINE_STATUS% | Prints whether or not the seek position is within a defined lyric line, and if so, that line's start and stop timestamps. If not, "Seek pos is not within a lyric line" is printed.
> > %SEEK_LYRIC_LINE_STATUS_CONDITIONAL% | Similar to %SEEK_LYRIC_LINE_STATUS% but prints nothing if the seek position is not within a lyric line.
> > %SEEK_SLIDER_STATUS% | Prints whether or not the seek position is within a defined slider phrase, and if so, that phrase's start and stop timestamps. If not, "Seek pos is not within a slider phrase" is printed.
> > %SEEK_SLIDER_STATUS_CONDITIONAL% | Similar to %SEEK_SLIDER_STATUS% but prints nothing if the seek position is not within a slider phrase.
> > %SEEK_SOLO_STATUS% | Prints whether or not the seek position is within a defined solo phrase, and if so, that phrase's start and stop timestamps. If not, "Seek pos is not within a solo phrase" is printed.
> > %SEEK_SOLO_STATUS_CONDITIONAL% | Similar to %SEEK_SOLO_STATUS% but prints nothing if the seek position is not within a solo phrase.
> > %SEEK_TRILL_STATUS% | Prints whether or not the seek position is within a defined trill phrase, and if so, that phrase's start and stop timestamps. If not, "Seek pos is not within a trill phrase" is printed. In the case of drum tracks, trill phrases are referred to as "special drum rolls".
> > %SEEK_TRILL_STATUS_CONDITIONAL% | Similar to %SEEK_TRILL_STATUS% but prints nothing if the seek position is not within a trill or special drum roll phrase.
> > %SEEK_TREMOLO_STATUS% | Prints whether or not the seek position is within a defined tremolo phrase, and if so, that phrase's start and stop timestamps. If not, "Seek pos is not within a tremolo phrase" is printed. In the case of drum tracks, tremolo phrases are referred to as "drum rolls".
> > %SEEK_TREMOLO_STATUS_CONDITIONAL% | Similar to %SEEK_TREMOLO_STATUS% but prints nothing if the seek position is not within a tremolo or drum roll phrase.
> > %SEEK_SLIDER_STATUS% | Prints whether or not the seek position is within a defined slider phrase, and if so, that phrase's start and stop timestamps. If not, "Seek pos is not within a slider phrase" is printed.
> > %SEEK_SLIDER_STATUS_CONDITIONAL% | Similar to %SEEK_SLIDER_STATUS% but prints nothing if the seek position is not within a slider phrase.
> > %SEEK_ARPEGGIO_STATUS% | Prints whether or not the seek position is within a defined arpeggio phrase, and if so, that phrase's start and stop timestamps. If not, "Seek pos is not within an arpeggio" is printed.
> > %SEEK_ARPEGGIO_STATUS_CONDITIONAL% | Similar to %SEEK_ARPEGGIO_STATUS% but prints nothing if the seek position is not within an arpeggio phrase.
> > %SEEK_HANDSHAPE_STATUS% | Prints whether or not the seek position is within a defined handshape phrase, and if so, that phrase's start and stop timestamps. If not, "Seek pos is not within a handshape" is printed.
> > %SEEK_HANDSHAPE_STATUS_CONDITIONAL% | Similar to %SEEK_HANDSHAPE_STATUS% but prints nothing if the seek position is not within a handshape phrase.
> > %PRINT_TRACK_UNSNAPPED_NOTE_COUNT% | Prints a string representing the number of unsnapped notes counted during the last processing of the %IF_TRACK_HAS_UNSNAPPED_NOTES% macro.
> > %FIRST_LYRIC_WITH_NON_ASCII% | Prints the location of the first culprit of the %IF_ANY_LYRICS_ARE_NON_ASCII% conditional macro (the first lyric containing non ASCII text).
> > %FIRST_LYRIC_OUTSIDE_LINE% | Prints the location of the first culprit of the %IF_ANY_LYRICS_ARE_OUTSIDE_LINES% conditional macro (the first lyric beginning outside of a lyric line).
> > %IR_TRACK_EFFECTIVE_HAND_MODE% | Prints the current IMMERROCK hand mode in effect at the seek position.