Merge branch 'master' into sysmgrtooltip_syschaninfo

This commit is contained in:
Eknous 2024-08-18 22:03:29 +04:00 committed by GitHub
commit e50b3438f2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
834 changed files with 780920 additions and 160607 deletions

View file

@ -124,7 +124,7 @@ const char* insTypes[DIV_INS_MAX+1][3]={
{"FM (OPN)",ICON_FA_AREA_CHART,ICON_FUR_INS_FM},
{"Game Boy",ICON_FA_GAMEPAD,ICON_FUR_INS_GB},
{"C64",ICON_FA_KEYBOARD_O,ICON_FUR_INS_C64},
{"Generic Sample",ICON_FA_VOLUME_UP,ICON_FUR_INS_AMIGA},
{_N("Generic Sample"),ICON_FA_VOLUME_UP,ICON_FUR_INS_AMIGA},
{"PC Engine",ICON_FA_ID_BADGE,ICON_FUR_INS_PCE},
{"AY-3-8910/SSG",ICON_FA_BAR_CHART,ICON_FUR_INS_AY},
{"AY8930",ICON_FA_BAR_CHART,ICON_FUR_INS_AY8930},
@ -146,13 +146,13 @@ const char* insTypes[DIV_INS_MAX+1][3]={
{"Atari Lynx",ICON_FA_BAR_CHART,ICON_FUR_INS_MIKEY},
{"VERA",ICON_FA_KEYBOARD_O,ICON_FUR_INS_VERA},
{"X1-010",ICON_FA_BAR_CHART,ICON_FUR_INS_X1_010},
{"VRC6 (saw)",ICON_FA_BAR_CHART,ICON_FUR_INS_VRC6_SAW},
{_("VRC6 (saw)"),ICON_FA_BAR_CHART,ICON_FUR_INS_VRC6_SAW},
{"ES5506",ICON_FA_VOLUME_UP,ICON_FUR_INS_ES5506},
{"MultiPCM",ICON_FA_VOLUME_UP,ICON_FUR_INS_MULTIPCM},
{"SNES",ICON_FA_VOLUME_UP,ICON_FUR_INS_SNES},
{"Sound Unit",ICON_FA_MICROCHIP,ICON_FUR_INS_SU},
{"Namco WSG",ICON_FA_PIE_CHART,ICON_FUR_INS_NAMCO},
{"OPL (drums)",ICON_FA_COFFEE,ICON_FUR_INS_OPL_DRUMS},
{_N("OPL (drums)"),ICON_FA_COFFEE,ICON_FUR_INS_OPL_DRUMS},
{"FM (OPM)",ICON_FA_AREA_CHART,ICON_FUR_INS_OPM},
{"NES",ICON_FA_GAMEPAD,ICON_FUR_INS_NES},
{"MSM6258",ICON_FA_VOLUME_UP,ICON_FUR_INS_MSM6258},
@ -176,19 +176,21 @@ const char* insTypes[DIV_INS_MAX+1][3]={
{"C140",ICON_FA_VOLUME_UP,ICON_FUR_INS_C140},
{"C219",ICON_FA_VOLUME_UP,ICON_FUR_INS_C219},
{"FM (ESFM)",ICON_FA_AREA_CHART,ICON_FUR_INS_ESFM},
{"PowerNoise (noise)",ICON_FUR_NOISE,ICON_FUR_INS_POWERNOISE},
{"PowerNoise (slope)",ICON_FUR_SAW,ICON_FUR_INS_POWERNOISE_SAW},
{_N("PowerNoise (noise)"),ICON_FUR_NOISE,ICON_FUR_INS_POWERNOISE},
{_N("PowerNoise (slope)"),ICON_FUR_SAW,ICON_FUR_INS_POWERNOISE_SAW},
{"Dave",ICON_FA_BAR_CHART,ICON_FUR_INS_DAVE},
{"Nintendo DS",ICON_FA_BAR_CHART,ICON_FUR_INS_NDS},
{"GBA DMA",ICON_FA_GAMEPAD,ICON_FUR_INS_GBA_DMA},
{"GBA MinMod",ICON_FA_VOLUME_UP,ICON_FUR_INS_GBA_MINMOD},
{"Bifurcator",ICON_FA_LINE_CHART,ICON_FUR_INS_BIFURCATOR},
{"SID2",ICON_FA_KEYBOARD_O,ICON_FUR_INS_SID2},
{NULL,ICON_FA_QUESTION,ICON_FA_QUESTION}
};
const char* sampleLoopModes[DIV_SAMPLE_LOOP_MAX]={
"Forward",
"Backward",
"Ping pong"
_N("Forward"),
_N("Backward"),
_N("Ping pong")
};
const char* sampleDepths[DIV_SAMPLE_DEPTH_MAX]={
@ -212,25 +214,25 @@ const char* sampleDepths[DIV_SAMPLE_DEPTH_MAX]={
};
const char* resampleStrats[]={
"none",
"linear",
"cubic spline",
"blep synthesis",
"sinc",
"best possible"
_N("none"),
_N("linear"),
_N("cubic spline"),
_N("blep synthesis"),
_N("sinc"),
_N("best possible")
};
const char* fxColorsNames[]={
"Invalid",
"Pitch",
"Volume",
"Panning",
"Song",
"Time",
"Speed",
"System (Primary)",
"System (Secondary)",
"Miscellaneous"
_N("Invalid"),
_N("Pitch"),
_N("Volume"),
_N("Panning"),
_N("Song"),
_N("Time"),
_N("Speed"),
_N("System (Primary)"),
_N("System (Secondary)"),
_N("Miscellaneous")
};
const char* chanNames[]={
@ -402,8 +404,8 @@ const FurnaceGUIColors fxColors[256]={
GUI_COLOR_PATTERN_EFFECT_PANNING,
GUI_COLOR_PATTERN_EFFECT_PANNING,
GUI_COLOR_PATTERN_EFFECT_PANNING,
GUI_COLOR_PATTERN_EFFECT_INVALID,
GUI_COLOR_PATTERN_EFFECT_INVALID,
GUI_COLOR_PATTERN_EFFECT_PANNING,
GUI_COLOR_PATTERN_EFFECT_PANNING,
GUI_COLOR_PATTERN_EFFECT_INVALID,
GUI_COLOR_PATTERN_EFFECT_INVALID,
GUI_COLOR_PATTERN_EFFECT_INVALID,
@ -501,7 +503,7 @@ const FurnaceGUIColors fxColors[256]={
GUI_COLOR_PATTERN_EFFECT_INVALID,
GUI_COLOR_PATTERN_EFFECT_INVALID,
GUI_COLOR_PATTERN_EFFECT_INVALID,
GUI_COLOR_PATTERN_EFFECT_INVALID,
GUI_COLOR_PATTERN_EFFECT_VOLUME, // DC
GUI_COLOR_PATTERN_EFFECT_INVALID,
GUI_COLOR_PATTERN_EFFECT_INVALID,
GUI_COLOR_PATTERN_EFFECT_MISC, // DF
@ -536,8 +538,8 @@ const FurnaceGUIColors fxColors[256]={
GUI_COLOR_PATTERN_EFFECT_VOLUME, // FA
GUI_COLOR_PATTERN_EFFECT_INVALID, // FB
GUI_COLOR_PATTERN_EFFECT_TIME, // FC
GUI_COLOR_PATTERN_EFFECT_INVALID, // FD
GUI_COLOR_PATTERN_EFFECT_INVALID, // FE
GUI_COLOR_PATTERN_EFFECT_SPEED, // FD
GUI_COLOR_PATTERN_EFFECT_SPEED, // FE
GUI_COLOR_PATTERN_EFFECT_SONG // FF
};
@ -546,269 +548,278 @@ const FurnaceGUIColors fxColors[256]={
// format: ("ACTION_ENUM", "Action name", defaultBind)
const FurnaceGUIActionDef guiActions[GUI_ACTION_MAX]={
D("GLOBAL_MIN", "---Global", NOT_AN_ACTION),
D("NEW", "New", FURKMOD_CMD|SDLK_n),
D("OPEN", "Open file", FURKMOD_CMD|SDLK_o),
D("OPEN_BACKUP", "Restore backup", 0),
D("SAVE", "Save file", FURKMOD_CMD|SDLK_s),
D("SAVE_AS", "Save as", FURKMOD_CMD|FURKMOD_SHIFT|SDLK_s),
D("EXPORT", "Export", 0),
D("UNDO", "Undo", FURKMOD_CMD|SDLK_z),
D("GLOBAL_MIN", _N("---Global"), NOT_AN_ACTION),
D("NEW", _N("New"), FURKMOD_CMD|SDLK_n),
D("OPEN", _N("Open file"), FURKMOD_CMD|SDLK_o),
D("OPEN_BACKUP", _N("Restore backup"), 0),
D("SAVE", _N("Save file"), FURKMOD_CMD|SDLK_s),
D("SAVE_AS", _N("Save as"), FURKMOD_CMD|FURKMOD_SHIFT|SDLK_s),
D("EXPORT", _N("Export"), 0),
D("UNDO", _N("Undo"), FURKMOD_CMD|SDLK_z),
#ifdef __APPLE__
D("REDO", "Redo", FURKMOD_CMD|FURKMOD_SHIFT|SDLK_z),
D("REDO", _N("Redo"), FURKMOD_CMD|FURKMOD_SHIFT|SDLK_z),
#else
D("REDO", "Redo", FURKMOD_CMD|SDLK_y),
D("REDO", _N("Redo"), FURKMOD_CMD|SDLK_y),
#endif
D("QUIT", "Exit", 0),
D("PLAY_TOGGLE", "Play/Stop (toggle)", SDLK_RETURN),
D("PLAY", "Play", 0),
D("STOP", "Stop", 0),
D("PLAY_START", "Play (from beginning)", SDLK_F5),
D("PLAY_REPEAT", "Play (repeat pattern)", 0),
D("PLAY_CURSOR", "Play from cursor", FURKMOD_SHIFT|SDLK_RETURN),
D("STEP_ONE", "Step row", FURKMOD_CMD|SDLK_RETURN),
D("OCTAVE_UP", "Octave up", SDLK_KP_MULTIPLY),
D("OCTAVE_DOWN", "Octave down", SDLK_KP_DIVIDE),
D("INS_UP", "Previous instrument", FURKMOD_SHIFT|SDLK_KP_DIVIDE),
D("INS_DOWN", "Next instrument", FURKMOD_SHIFT|SDLK_KP_MULTIPLY),
D("STEP_UP", "Increase edit step", FURKMOD_CMD|SDLK_KP_MULTIPLY),
D("STEP_DOWN", "Decrease edit step", FURKMOD_CMD|SDLK_KP_DIVIDE),
D("TOGGLE_EDIT", "Toggle edit mode", SDLK_SPACE),
D("METRONOME", "Metronome", FURKMOD_CMD|SDLK_m),
D("REPEAT_PATTERN", "Toggle repeat pattern", 0),
D("FOLLOW_ORDERS", "Follow orders", 0),
D("FOLLOW_PATTERN", "Follow pattern", 0),
D("FULLSCREEN", "Toggle full-screen", SDLK_F11),
D("TX81Z_REQUEST", "Request voice from TX81Z", 0),
D("PANIC", "Panic", SDLK_F12),
D("CLEAR", "Clear song data", 0),
D("QUIT", _N("Exit"), 0),
D("PLAY_TOGGLE", _N("Play/Stop (toggle)"), SDLK_RETURN),
D("PLAY", _N("Play"), 0),
D("STOP", _N("Stop"), 0),
D("PLAY_START", _N("Play (from beginning)"), SDLK_F5),
D("PLAY_REPEAT", _N("Play (repeat pattern)"), 0),
D("PLAY_CURSOR", _N("Play from cursor"), FURKMOD_SHIFT|SDLK_RETURN),
D("STEP_ONE", _N("Step row"), FURKMOD_CMD|SDLK_RETURN),
D("OCTAVE_UP", _N("Octave up"), SDLK_KP_MULTIPLY),
D("OCTAVE_DOWN", _N("Octave down"), SDLK_KP_DIVIDE),
D("INS_UP", _N("Previous instrument"), FURKMOD_SHIFT|SDLK_KP_DIVIDE),
D("INS_DOWN", _N("Next instrument"), FURKMOD_SHIFT|SDLK_KP_MULTIPLY),
D("STEP_UP", _N("Increase edit step"), FURKMOD_CMD|SDLK_KP_MULTIPLY),
D("STEP_DOWN", _N("Decrease edit step"), FURKMOD_CMD|SDLK_KP_DIVIDE),
D("TOGGLE_EDIT", _N("Toggle edit mode"), SDLK_SPACE),
D("METRONOME", _N("Metronome"), FURKMOD_CMD|SDLK_m),
D("REPEAT_PATTERN", _N("Toggle repeat pattern"), 0),
D("FOLLOW_ORDERS", _N("Follow orders"), 0),
D("FOLLOW_PATTERN", _N("Follow pattern"), 0),
D("FULLSCREEN", _N("Toggle full-screen"), SDLK_F11),
D("TX81Z_REQUEST", _N("Request voice from TX81Z"), 0),
D("PANIC", _N("Panic"), SDLK_F12),
D("CLEAR", _N("Clear song data"), 0),
D("COMMAND_PALETTE", "Command Palette", FURKMOD_CMD|SDLK_p),
D("COMMAND_PALETTE", _N("Command Palette"), FURKMOD_CMD|SDLK_p),
D("CMDPAL_MIN", "", NOT_AN_ACTION),
D("CMDPAL_RECENT", "Recent files (Palette)", 0),
D("CMDPAL_INSTRUMENTS", "Instruments (Palette)", 0),
D("CMDPAL_SAMPLES", "Samples (Palette)", 0),
D("CMDPAL_INSTRUMENT_CHANGE", "Change instrument (Palette)", 0),
D("CMDPAL_ADD_CHIP", "Add chip (Palette)", 0),
D("CMDPAL_RECENT", _N("Recent files (Palette)"), 0),
D("CMDPAL_INSTRUMENTS", _N("Instruments (Palette)"), 0),
D("CMDPAL_SAMPLES", _N("Samples (Palette)"), 0),
D("CMDPAL_INSTRUMENT_CHANGE", _N("Change instrument (Palette)"), 0),
D("CMDPAL_ADD_CHIP", _N("Add chip (Palette)"), 0),
D("CMDPAL_MAX", "", NOT_AN_ACTION),
D("WINDOW_EDIT_CONTROLS", "Edit Controls", 0),
D("WINDOW_ORDERS", "Orders", 0),
D("WINDOW_INS_LIST", "Instrument List", 0),
D("WINDOW_INS_EDIT", "Instrument Editor", 0),
D("WINDOW_SONG_INFO", "Song Information", 0),
D("WINDOW_SPEED", "Speed", 0),
D("WINDOW_PATTERN", "Pattern", 0),
D("WINDOW_WAVE_LIST", "Wavetable List", 0),
D("WINDOW_WAVE_EDIT", "Wavetable Editor", 0),
D("WINDOW_SAMPLE_LIST", "Sample List", 0),
D("WINDOW_SAMPLE_EDIT", "Sample Editor", 0),
D("WINDOW_ABOUT", "About", 0),
D("WINDOW_EDIT_CONTROLS", _N("Edit Controls"), 0),
D("WINDOW_ORDERS", _N("Orders"), 0),
D("WINDOW_INS_LIST", _N("Instrument List"), 0),
D("WINDOW_INS_EDIT", _N("Instrument Editor"), 0),
D("WINDOW_SONG_INFO", _N("Song Information"), 0),
D("WINDOW_SPEED", _N("Speed"), 0),
D("WINDOW_PATTERN", _N("Pattern"), 0),
D("WINDOW_WAVE_LIST", _N("Wavetable List"), 0),
D("WINDOW_WAVE_EDIT", _N("Wavetable Editor"), 0),
D("WINDOW_SAMPLE_LIST", _N("Sample List"), 0),
D("WINDOW_SAMPLE_EDIT", _N("Sample Editor"), 0),
D("WINDOW_ABOUT", _N("About"), 0),
#ifdef __APPLE__
D("WINDOW_SETTINGS", "Settings", FURKMOD_CMD|SDLK_COMMA),
D("WINDOW_SETTINGS", _N("Settings"), FURKMOD_CMD|SDLK_COMMA),
#else
D("WINDOW_SETTINGS", "Settings", 0),
D("WINDOW_SETTINGS", _N("Settings"), 0),
#endif
D("WINDOW_MIXER", "Mixer", 0),
D("WINDOW_DEBUG", "Debug Menu", FURKMOD_CMD|FURKMOD_SHIFT|SDLK_d),
D("WINDOW_OSCILLOSCOPE", "Oscilloscope (master)", 0),
D("WINDOW_VOL_METER", "Volume Meter", 0),
D("WINDOW_STATS", "Statistics", 0),
D("WINDOW_COMPAT_FLAGS", "Compatibility Flags", 0),
D("WINDOW_PIANO", "Piano", 0),
D("WINDOW_NOTES", "Song Comments", 0),
D("WINDOW_CHANNELS", "Channels", 0),
D("WINDOW_PAT_MANAGER", "Pattern Manager", 0),
D("WINDOW_SYS_MANAGER", "Chip Manager", 0),
D("WINDOW_REGISTER_VIEW", "Register View", 0),
D("WINDOW_LOG", "Log Viewer", 0),
D("WINDOW_EFFECT_LIST", "Effect List", 0),
D("WINDOW_CHAN_OSC", "Oscilloscope (per-channel)", 0),
D("WINDOW_SUBSONGS", "Subsongs", 0),
D("WINDOW_FIND", "Find/Replace", FURKMOD_CMD|SDLK_f),
D("WINDOW_CLOCK", "Clock", 0),
D("WINDOW_GROOVES", "Grooves", 0),
D("WINDOW_XY_OSC", "Oscilloscope (X-Y)", 0),
D("WINDOW_MEMORY", "Memory Composition", 0),
D("WINDOW_CS_PLAYER", "Command Stream Player", 0),
D("WINDOW_MIXER", _N("Mixer"), 0),
D("WINDOW_DEBUG", _N("Debug Menu"), FURKMOD_CMD|FURKMOD_SHIFT|SDLK_d),
D("WINDOW_OSCILLOSCOPE", _N("Oscilloscope (master)"), 0),
D("WINDOW_VOL_METER", _N("Volume Meter"), 0),
D("WINDOW_STATS", _N("Statistics"), 0),
D("WINDOW_COMPAT_FLAGS", _N("Compatibility Flags"), 0),
D("WINDOW_PIANO", _N("Piano"), 0),
D("WINDOW_NOTES", _N("Song Comments"), 0),
D("WINDOW_CHANNELS", _N("Channels"), 0),
D("WINDOW_PAT_MANAGER", _N("Pattern Manager"), 0),
D("WINDOW_SYS_MANAGER", _N("Chip Manager"), 0),
D("WINDOW_REGISTER_VIEW", _N("Register View"), 0),
D("WINDOW_LOG", _N("Log Viewer"), 0),
D("WINDOW_EFFECT_LIST", _N("Effect List"), 0),
D("WINDOW_CHAN_OSC", _N("Oscilloscope (per-channel)"), 0),
D("WINDOW_SUBSONGS", _N("Subsongs"), 0),
D("WINDOW_FIND", _N("Find/Replace"), FURKMOD_CMD|SDLK_f),
D("WINDOW_CLOCK", _N("Clock"), 0),
D("WINDOW_GROOVES", _N("Grooves"), 0),
D("WINDOW_XY_OSC", _N("Oscilloscope (X-Y)"), 0),
D("WINDOW_MEMORY", _N("Memory Composition"), 0),
D("WINDOW_CS_PLAYER", _N("Command Stream Player"), 0),
D("WINDOW_USER_PRESETS", _N("User Presets"), 0),
D("COLLAPSE_WINDOW", "Collapse/expand current window", 0),
D("CLOSE_WINDOW", "Close current window", FURKMOD_SHIFT|SDLK_ESCAPE),
D("COLLAPSE_WINDOW", _N("Collapse/expand current window"), 0),
D("CLOSE_WINDOW", _N("Close current window"), FURKMOD_SHIFT|SDLK_ESCAPE),
D("GLOBAL_MAX", "", NOT_AN_ACTION),
D("PAT_MIN", "---Pattern", NOT_AN_ACTION),
D("PAT_NOTE_UP", "Transpose (+1)", FURKMOD_CMD|SDLK_F2),
D("PAT_NOTE_DOWN", "Transpose (-1)", FURKMOD_CMD|SDLK_F1),
D("PAT_OCTAVE_UP", "Transpose (+1 octave)", FURKMOD_CMD|SDLK_F4),
D("PAT_OCTAVE_DOWN", "Transpose (-1 octave)", FURKMOD_CMD|SDLK_F3),
D("PAT_VALUE_UP", "Increase values (+1)", FURKMOD_CMD|FURKMOD_SHIFT|SDLK_F2),
D("PAT_VALUE_DOWN", "Increase values (-1)", FURKMOD_CMD|FURKMOD_SHIFT|SDLK_F1),
D("PAT_VALUE_UP_COARSE", "Increase values (+16)", FURKMOD_CMD|FURKMOD_SHIFT|SDLK_F4),
D("PAT_VALUE_DOWN_COARSE", "Increase values (-16)", FURKMOD_CMD|FURKMOD_SHIFT|SDLK_F3),
D("PAT_SELECT_ALL", "Select all", FURKMOD_CMD|SDLK_a),
D("PAT_CUT", "Cut", FURKMOD_CMD|SDLK_x),
D("PAT_COPY", "Copy", FURKMOD_CMD|SDLK_c),
D("PAT_PASTE", "Paste", FURKMOD_CMD|SDLK_v),
D("PAT_PASTE_MIX", "Paste Mix (foreground)", FURKMOD_CMD|FURKMOD_SHIFT|SDLK_v),
D("PAT_PASTE_MIX_BG", "Paste Mix (background)", 0),
D("PAT_PASTE_FLOOD", "Paste Flood", 0),
D("PAT_PASTE_OVERFLOW", "Paste Overflow", 0),
D("PAT_CURSOR_UP", "Move cursor up", SDLK_UP),
D("PAT_CURSOR_DOWN", "Move cursor down", SDLK_DOWN),
D("PAT_CURSOR_LEFT", "Move cursor left", SDLK_LEFT),
D("PAT_CURSOR_RIGHT", "Move cursor right", SDLK_RIGHT),
D("PAT_CURSOR_UP_ONE", "Move cursor up by one (override Edit Step)", FURKMOD_SHIFT|SDLK_HOME),
D("PAT_CURSOR_DOWN_ONE", "Move cursor down by one (override Edit Step)", FURKMOD_SHIFT|SDLK_END),
D("PAT_CURSOR_LEFT_CHANNEL", "Move cursor to previous channel", 0),
D("PAT_CURSOR_RIGHT_CHANNEL", "Move cursor to next channel", 0),
D("PAT_CURSOR_NEXT_CHANNEL", "Move cursor to next channel (overflow)", 0),
D("PAT_CURSOR_PREVIOUS_CHANNEL", "Move cursor to previous channel (overflow)", 0),
D("PAT_CURSOR_BEGIN", "Move cursor to beginning of pattern", SDLK_HOME),
D("PAT_CURSOR_END", "Move cursor to end of pattern", SDLK_END),
D("PAT_CURSOR_UP_COARSE", "Move cursor up (coarse)", SDLK_PAGEUP),
D("PAT_CURSOR_DOWN_COARSE", "Move cursor down (coarse)", SDLK_PAGEDOWN),
D("PAT_SELECTION_UP", "Expand selection upwards", FURKMOD_SHIFT|SDLK_UP),
D("PAT_SELECTION_DOWN", "Expand selection downwards", FURKMOD_SHIFT|SDLK_DOWN),
D("PAT_SELECTION_LEFT", "Expand selection to the left", FURKMOD_SHIFT|SDLK_LEFT),
D("PAT_SELECTION_RIGHT", "Expand selection to the right", FURKMOD_SHIFT|SDLK_RIGHT),
D("PAT_SELECTION_UP_ONE", "Expand selection upwards by one (override Edit Step)", 0),
D("PAT_SELECTION_DOWN_ONE", "Expand selection downwards by one (override Edit Step)", 0),
D("PAT_SELECTION_BEGIN", "Expand selection to beginning of pattern", 0),
D("PAT_SELECTION_END", "Expand selection to end of pattern", 0),
D("PAT_SELECTION_UP_COARSE", "Expand selection upwards (coarse)", FURKMOD_SHIFT|SDLK_PAGEUP),
D("PAT_SELECTION_DOWN_COARSE", "Expand selection downwards (coarse)", FURKMOD_SHIFT|SDLK_PAGEDOWN),
D("PAT_DELETE", "Delete", SDLK_DELETE),
D("PAT_PULL_DELETE", "Pull delete", SDLK_BACKSPACE),
D("PAT_INSERT", "Insert", SDLK_INSERT),
D("PAT_MUTE_CURSOR", "Mute channel at cursor", FURKMOD_ALT|SDLK_F9),
D("PAT_SOLO_CURSOR", "Solo channel at cursor", FURKMOD_ALT|SDLK_F10),
D("PAT_UNMUTE_ALL", "Unmute all channels", FURKMOD_ALT|FURKMOD_SHIFT|SDLK_F9),
D("PAT_NEXT_ORDER", "Go to next order", 0),
D("PAT_PREV_ORDER", "Go to previous order", 0),
D("PAT_COLLAPSE", "Collapse channel at cursor", 0),
D("PAT_INCREASE_COLUMNS", "Increase effect columns", 0),
D("PAT_DECREASE_COLUMNS", "Decrease effect columns", 0),
D("PAT_INTERPOLATE", "Interpolate", 0),
D("PAT_FADE", "Fade", 0),
D("PAT_INVERT_VALUES", "Invert values", 0),
D("PAT_FLIP_SELECTION", "Flip selection", 0),
D("PAT_COLLAPSE_ROWS", "Collapse rows", 0),
D("PAT_EXPAND_ROWS", "Expand rows", 0),
D("PAT_COLLAPSE_PAT", "Collapse pattern", 0),
D("PAT_EXPAND_PAT", "Expand pattern", 0),
D("PAT_COLLAPSE_SONG", "Collapse song", 0),
D("PAT_EXPAND_SONG", "Expand song", 0),
D("PAT_LATCH", "Set note input latch", 0),
D("PAT_SCROLL_MODE", "Change mobile scroll mode", 0),
D("PAT_CLEAR_LATCH", "Clear note input latch", 0),
D("PAT_MIN", _N("---Pattern"), NOT_AN_ACTION),
D("PAT_NOTE_UP", _N("Transpose (+1)"), FURKMOD_CMD|SDLK_F2),
D("PAT_NOTE_DOWN", _N("Transpose (-1)"), FURKMOD_CMD|SDLK_F1),
D("PAT_OCTAVE_UP", _N("Transpose (+1 octave)"), FURKMOD_CMD|SDLK_F4),
D("PAT_OCTAVE_DOWN", _N("Transpose (-1 octave)"), FURKMOD_CMD|SDLK_F3),
D("PAT_VALUE_UP", _N("Increase values (+1)"), FURKMOD_CMD|FURKMOD_SHIFT|SDLK_F2),
D("PAT_VALUE_DOWN", _N("Increase values (-1)"), FURKMOD_CMD|FURKMOD_SHIFT|SDLK_F1),
D("PAT_VALUE_UP_COARSE", _N("Increase values (+16)"), FURKMOD_CMD|FURKMOD_SHIFT|SDLK_F4),
D("PAT_VALUE_DOWN_COARSE", _N("Increase values (-16)"), FURKMOD_CMD|FURKMOD_SHIFT|SDLK_F3),
D("PAT_SELECT_ALL", _N("Select all"), FURKMOD_CMD|SDLK_a),
D("PAT_CUT", _N("Cut"), FURKMOD_CMD|SDLK_x),
D("PAT_COPY", _N("Copy"), FURKMOD_CMD|SDLK_c),
D("PAT_PASTE", _N("Paste"), FURKMOD_CMD|SDLK_v),
D("PAT_PASTE_MIX", _N("Paste Mix (foreground)"), FURKMOD_CMD|FURKMOD_SHIFT|SDLK_v),
D("PAT_PASTE_MIX_BG", _N("Paste Mix (background)"), 0),
D("PAT_PASTE_FLOOD", _N("Paste Flood"), 0),
D("PAT_PASTE_OVERFLOW", _N("Paste Overflow"), 0),
D("PAT_CURSOR_UP", _N("Move cursor up"), SDLK_UP),
D("PAT_CURSOR_DOWN", _N("Move cursor down"), SDLK_DOWN),
D("PAT_CURSOR_LEFT", _N("Move cursor left"), SDLK_LEFT),
D("PAT_CURSOR_RIGHT", _N("Move cursor right"), SDLK_RIGHT),
D("PAT_CURSOR_UP_ONE", _N("Move cursor up by one (override Edit Step)"), FURKMOD_SHIFT|SDLK_HOME),
D("PAT_CURSOR_DOWN_ONE", _N("Move cursor down by one (override Edit Step)"), FURKMOD_SHIFT|SDLK_END),
D("PAT_CURSOR_LEFT_CHANNEL", _N("Move cursor to previous channel"), 0),
D("PAT_CURSOR_RIGHT_CHANNEL", _N("Move cursor to next channel"), 0),
D("PAT_CURSOR_NEXT_CHANNEL", _N("Move cursor to next channel (overflow)"), 0),
D("PAT_CURSOR_PREVIOUS_CHANNEL", _N("Move cursor to previous channel (overflow)"), 0),
D("PAT_CURSOR_BEGIN", _N("Move cursor to beginning of pattern"), SDLK_HOME),
D("PAT_CURSOR_END", _N("Move cursor to end of pattern"), SDLK_END),
D("PAT_CURSOR_UP_COARSE", _N("Move cursor up (coarse)"), SDLK_PAGEUP),
D("PAT_CURSOR_DOWN_COARSE", _N("Move cursor down (coarse)"), SDLK_PAGEDOWN),
D("PAT_SELECTION_UP", _N("Expand selection upwards"), FURKMOD_SHIFT|SDLK_UP),
D("PAT_SELECTION_DOWN", _N("Expand selection downwards"), FURKMOD_SHIFT|SDLK_DOWN),
D("PAT_SELECTION_LEFT", _N("Expand selection to the left"), FURKMOD_SHIFT|SDLK_LEFT),
D("PAT_SELECTION_RIGHT", _N("Expand selection to the right"), FURKMOD_SHIFT|SDLK_RIGHT),
D("PAT_SELECTION_UP_ONE", _N("Expand selection upwards by one (override Edit Step)"), 0),
D("PAT_SELECTION_DOWN_ONE", _N("Expand selection downwards by one (override Edit Step)"), 0),
D("PAT_SELECTION_BEGIN", _N("Expand selection to beginning of pattern"), 0),
D("PAT_SELECTION_END", _N("Expand selection to end of pattern"), 0),
D("PAT_SELECTION_UP_COARSE", _N("Expand selection upwards (coarse)"), FURKMOD_SHIFT|SDLK_PAGEUP),
D("PAT_SELECTION_DOWN_COARSE", _N("Expand selection downwards (coarse)"), FURKMOD_SHIFT|SDLK_PAGEDOWN),
D("PAT_MOVE_UP", _N("Move selection up"), FURKMOD_ALT|SDLK_UP),
D("PAT_MOVE_DOWN", _N("Move selection down"), FURKMOD_ALT|SDLK_DOWN),
D("PAT_MOVE_LEFT_CHANNEL", _N("Move selection to previous channel"), FURKMOD_ALT|SDLK_LEFT),
D("PAT_MOVE_RIGHT_CHANNEL", _N("Move selection to next channel"), FURKMOD_ALT|SDLK_RIGHT),
D("PAT_DELETE", _N("Delete"), SDLK_DELETE),
D("PAT_PULL_DELETE", _N("Pull delete"), SDLK_BACKSPACE),
D("PAT_INSERT", _N("Insert"), SDLK_INSERT),
D("PAT_MUTE_CURSOR", _N("Mute channel at cursor"), FURKMOD_ALT|SDLK_F9),
D("PAT_SOLO_CURSOR", _N("Solo channel at cursor"), FURKMOD_ALT|SDLK_F10),
D("PAT_UNMUTE_ALL", _N("Unmute all channels"), FURKMOD_ALT|FURKMOD_SHIFT|SDLK_F9),
D("PAT_NEXT_ORDER", _N("Go to next order"), 0),
D("PAT_PREV_ORDER", _N("Go to previous order"), 0),
D("PAT_COLLAPSE", _N("Collapse channel at cursor"), 0),
D("PAT_INCREASE_COLUMNS", _N("Increase effect columns"), 0),
D("PAT_DECREASE_COLUMNS", _N("Decrease effect columns"), 0),
D("PAT_INTERPOLATE", _N("Interpolate"), 0),
D("PAT_FADE", _N("Fade"), 0),
D("PAT_INVERT_VALUES", _N("Invert values"), 0),
D("PAT_FLIP_SELECTION", _N("Flip selection"), 0),
D("PAT_COLLAPSE_ROWS", _N("Collapse rows"), 0),
D("PAT_EXPAND_ROWS", _N("Expand rows"), 0),
D("PAT_COLLAPSE_PAT", _N("Collapse pattern"), 0),
D("PAT_EXPAND_PAT", _N("Expand pattern"), 0),
D("PAT_COLLAPSE_SONG", _N("Collapse song"), 0),
D("PAT_EXPAND_SONG", _N("Expand song"), 0),
D("PAT_LATCH", _N("Set note input latch"), 0),
D("PAT_SCROLL_MODE", _N("Change mobile scroll mode"), 0),
D("PAT_CLEAR_LATCH", _N("Clear note input latch"), 0),
D("PAT_ABSORB_INSTRUMENT", _N("Set current instrument to channel's current instrument column"), 0),
D("PAT_MAX", "", NOT_AN_ACTION),
D("INS_LIST_MIN", "---Instrument list", NOT_AN_ACTION),
D("INS_LIST_ADD", "Add instrument", SDLK_INSERT),
D("INS_LIST_DUPLICATE", "Duplicate instrument", FURKMOD_CMD|SDLK_d),
D("INS_LIST_OPEN", "Open instrument", 0),
D("INS_LIST_OPEN_REPLACE", "Open instrument (replace current)", 0),
D("INS_LIST_SAVE", "Save instrument", 0),
D("INS_LIST_SAVE_DMP", "Save instrument (.dmp)", 0),
D("INS_LIST_MOVE_UP", "Move instrument up in list", FURKMOD_SHIFT|SDLK_UP),
D("INS_LIST_MOVE_DOWN", "Move instrument down in list", FURKMOD_SHIFT|SDLK_DOWN),
D("INS_LIST_DELETE", "Delete instrument", 0),
D("INS_LIST_EDIT", "Edit instrument", FURKMOD_SHIFT|SDLK_RETURN),
D("INS_LIST_UP", "Instrument cursor up", SDLK_UP),
D("INS_LIST_DOWN", "Instrument cursor down", SDLK_DOWN),
D("INS_LIST_DIR_VIEW", "Instruments: toggle folders/standard view", FURKMOD_CMD|SDLK_v),
D("INS_LIST_MIN", _N("---Instrument list"), NOT_AN_ACTION),
D("INS_LIST_ADD", _N("Add instrument"), SDLK_INSERT),
D("INS_LIST_DUPLICATE", _N("Duplicate instrument"), FURKMOD_CMD|SDLK_d),
D("INS_LIST_OPEN", _N("Open instrument"), 0),
D("INS_LIST_OPEN_REPLACE", _N("Open instrument (replace current)"), 0),
D("INS_LIST_SAVE", _N("Save instrument"), 0),
D("INS_LIST_SAVE_DMP", _N("Save instrument (.dmp)"), 0),
D("INS_LIST_MOVE_UP", _N("Move instrument up in list"), FURKMOD_SHIFT|SDLK_UP),
D("INS_LIST_MOVE_DOWN", _N("Move instrument down in list"), FURKMOD_SHIFT|SDLK_DOWN),
D("INS_LIST_DELETE", _N("Delete instrument"), 0),
D("INS_LIST_EDIT", _N("Edit instrument"), FURKMOD_SHIFT|SDLK_RETURN),
D("INS_LIST_UP", _N("Instrument cursor up"), SDLK_UP),
D("INS_LIST_DOWN", _N("Instrument cursor down"), SDLK_DOWN),
D("INS_LIST_DIR_VIEW", _N("Instruments: toggle folders/standard view"), FURKMOD_CMD|SDLK_v),
D("INS_LIST_SAVE_ALL", _N("Save all instruments"), 0),
D("INS_LIST_MAX", "", NOT_AN_ACTION),
D("WAVE_LIST_MIN", "---Wavetable list", NOT_AN_ACTION),
D("WAVE_LIST_ADD", "Add wavetable", SDLK_INSERT),
D("WAVE_LIST_DUPLICATE", "Duplicate wavetable", FURKMOD_CMD|SDLK_d),
D("WAVE_LIST_OPEN", "Open wavetable", 0),
D("WAVE_LIST_OPEN_REPLACE", "Open wavetable (replace current)", 0),
D("WAVE_LIST_SAVE", "Save wavetable", 0),
D("WAVE_LIST_SAVE_DMW", "Save wavetable (.dmw)", 0),
D("WAVE_LIST_SAVE_RAW", "Save wavetable (raw)", 0),
D("WAVE_LIST_MOVE_UP", "Move wavetable up in list", FURKMOD_SHIFT|SDLK_UP),
D("WAVE_LIST_MOVE_DOWN", "Move wavetable down in list", FURKMOD_SHIFT|SDLK_DOWN),
D("WAVE_LIST_DELETE", "Delete wavetable", 0),
D("WAVE_LIST_EDIT", "Edit wavetable", FURKMOD_SHIFT|SDLK_RETURN),
D("WAVE_LIST_UP", "Wavetable cursor up", SDLK_UP),
D("WAVE_LIST_DOWN", "Wavetable cursor down", SDLK_DOWN),
D("WAVE_LIST_DIR_VIEW", "Wavetables: toggle folders/standard view", FURKMOD_CMD|SDLK_v),
D("WAVE_LIST_MIN", _N("---Wavetable list"), NOT_AN_ACTION),
D("WAVE_LIST_ADD", _N("Add wavetable"), SDLK_INSERT),
D("WAVE_LIST_DUPLICATE", _N("Duplicate wavetable"), FURKMOD_CMD|SDLK_d),
D("WAVE_LIST_OPEN", _N("Open wavetable"), 0),
D("WAVE_LIST_OPEN_REPLACE", _N("Open wavetable (replace current)"), 0),
D("WAVE_LIST_SAVE", _N("Save wavetable"), 0),
D("WAVE_LIST_SAVE_DMW", _N("Save wavetable (.dmw)"), 0),
D("WAVE_LIST_SAVE_RAW", _N("Save wavetable (raw)"), 0),
D("WAVE_LIST_MOVE_UP", _N("Move wavetable up in list"), FURKMOD_SHIFT|SDLK_UP),
D("WAVE_LIST_MOVE_DOWN", _N("Move wavetable down in list"), FURKMOD_SHIFT|SDLK_DOWN),
D("WAVE_LIST_DELETE", _N("Delete wavetable"), 0),
D("WAVE_LIST_EDIT", _N("Edit wavetable"), FURKMOD_SHIFT|SDLK_RETURN),
D("WAVE_LIST_UP", _N("Wavetable cursor up"), SDLK_UP),
D("WAVE_LIST_DOWN", _N("Wavetable cursor down"), SDLK_DOWN),
D("WAVE_LIST_DIR_VIEW", _N("Wavetables: toggle folders/standard view"), FURKMOD_CMD|SDLK_v),
D("WAVE_LIST_SAVE_ALL", _N("Save all wavetables"), 0),
D("WAVE_LIST_MAX", "", NOT_AN_ACTION),
D("SAMPLE_LIST_MIN", "---Sample list", NOT_AN_ACTION),
D("SAMPLE_LIST_ADD", "Add sample", SDLK_INSERT),
D("SAMPLE_LIST_DUPLICATE", "Duplicate sample", FURKMOD_CMD|SDLK_d),
D("SAMPLE_LIST_OPEN", "Open sample", 0),
D("SAMPLE_LIST_OPEN_REPLACE", "Open sample (replace current)", 0),
D("SAMPLE_LIST_OPEN_RAW", "Import raw sample data", 0),
D("SAMPLE_LIST_OPEN_REPLACE_RAW", "Import raw sample data (replace current)", 0),
D("SAMPLE_LIST_SAVE", "Save sample", 0),
D("SAMPLE_LIST_SAVE_RAW", "Save sample (raw)", 0),
D("SAMPLE_LIST_MOVE_UP", "Move sample up in list", FURKMOD_SHIFT|SDLK_UP),
D("SAMPLE_LIST_MOVE_DOWN", "Move sample down in list", FURKMOD_SHIFT|SDLK_DOWN),
D("SAMPLE_LIST_DELETE", "Delete sample", 0),
D("SAMPLE_LIST_EDIT", "Edit sample", FURKMOD_SHIFT|SDLK_RETURN),
D("SAMPLE_LIST_UP", "Sample cursor up", SDLK_UP),
D("SAMPLE_LIST_DOWN", "Sample cursor down", SDLK_DOWN),
D("SAMPLE_LIST_PREVIEW", "Sample preview", 0),
D("SAMPLE_LIST_STOP_PREVIEW", "Stop sample preview", 0),
D("SAMPLE_LIST_DIR_VIEW", "Samples: Toggle folders/standard view", FURKMOD_CMD|SDLK_v),
D("SAMPLE_LIST_MAKE_MAP", "Samples: Make me a drum kit", 0),
D("SAMPLE_LIST_MIN", _N("---Sample list"), NOT_AN_ACTION),
D("SAMPLE_LIST_ADD", _N("Add sample"), SDLK_INSERT),
D("SAMPLE_LIST_DUPLICATE", _N("Duplicate sample"), FURKMOD_CMD|SDLK_d),
D("SAMPLE_LIST_OPEN", _N("Open sample"), 0),
D("SAMPLE_LIST_OPEN_REPLACE", _N("Open sample (replace current)"), 0),
D("SAMPLE_LIST_OPEN_RAW", _N("Import raw sample data"), 0),
D("SAMPLE_LIST_OPEN_REPLACE_RAW", _N("Import raw sample data (replace current)"), 0),
D("SAMPLE_LIST_SAVE", _N("Save sample"), 0),
D("SAMPLE_LIST_SAVE_RAW", _N("Save sample (raw)"), 0),
D("SAMPLE_LIST_MOVE_UP", _N("Move sample up in list"), FURKMOD_SHIFT|SDLK_UP),
D("SAMPLE_LIST_MOVE_DOWN", _N("Move sample down in list"), FURKMOD_SHIFT|SDLK_DOWN),
D("SAMPLE_LIST_DELETE", _N("Delete sample"), 0),
D("SAMPLE_LIST_EDIT", _N("Edit sample"), FURKMOD_SHIFT|SDLK_RETURN),
D("SAMPLE_LIST_UP", _N("Sample cursor up"), SDLK_UP),
D("SAMPLE_LIST_DOWN", _N("Sample cursor down"), SDLK_DOWN),
D("SAMPLE_LIST_PREVIEW", _N("Sample preview"), 0),
D("SAMPLE_LIST_STOP_PREVIEW", _N("Stop sample preview"), 0),
D("SAMPLE_LIST_DIR_VIEW", _N("Samples: Toggle folders/standard view"), FURKMOD_CMD|SDLK_v),
D("SAMPLE_LIST_MAKE_MAP", _N("Samples: Make me a drum kit"), 0),
D("SAMPLE_LIST_SAVE_ALL", _N("Save all samples"), 0),
D("SAMPLE_LIST_MAX", "", NOT_AN_ACTION),
D("SAMPLE_MIN", "---Sample editor", NOT_AN_ACTION),
D("SAMPLE_SELECT", "Sample editor mode: Select", FURKMOD_SHIFT|SDLK_i),
D("SAMPLE_DRAW", "Sample editor mode: Draw", FURKMOD_SHIFT|SDLK_d),
D("SAMPLE_CUT", "Sample editor: Cut", FURKMOD_CMD|SDLK_x),
D("SAMPLE_COPY", "Sample editor: Copy", FURKMOD_CMD|SDLK_c),
D("SAMPLE_PASTE", "Sample editor: Paste", FURKMOD_CMD|SDLK_v),
D("SAMPLE_PASTE_REPLACE", "Sample editor: Paste replace", FURKMOD_CMD|FURKMOD_SHIFT|SDLK_v),
D("SAMPLE_PASTE_MIX", "Sample editor: Paste mix", FURKMOD_CMD|FURKMOD_ALT|SDLK_v),
D("SAMPLE_SELECT_ALL", "Sample editor: Select all", FURKMOD_CMD|SDLK_a),
D("SAMPLE_RESIZE", "Sample editor: Resize", FURKMOD_CMD|SDLK_r),
D("SAMPLE_RESAMPLE", "Sample editor: Resample", FURKMOD_CMD|SDLK_e),
D("SAMPLE_AMPLIFY", "Sample editor: Amplify", FURKMOD_CMD|SDLK_b),
D("SAMPLE_NORMALIZE", "Sample editor: Normalize", FURKMOD_CMD|SDLK_n),
D("SAMPLE_FADE_IN", "Sample editor: Fade in", FURKMOD_CMD|SDLK_i),
D("SAMPLE_FADE_OUT", "Sample editor: Fade out", FURKMOD_CMD|SDLK_o),
D("SAMPLE_SILENCE", "Sample editor: Apply silence", FURKMOD_SHIFT|SDLK_DELETE),
D("SAMPLE_INSERT", "Sample editor: Insert silence", SDLK_INSERT),
D("SAMPLE_DELETE", "Sample editor: Delete", SDLK_DELETE),
D("SAMPLE_TRIM", "Sample editor: Trim", FURKMOD_CMD|SDLK_DELETE),
D("SAMPLE_REVERSE", "Sample editor: Reverse", FURKMOD_CMD|SDLK_t),
D("SAMPLE_INVERT", "Sample editor: Invert", FURKMOD_CMD|FURKMOD_SHIFT|SDLK_t),
D("SAMPLE_SIGN", "Sample editor: Signed/unsigned exchange", FURKMOD_CMD|SDLK_u),
D("SAMPLE_FILTER", "Sample editor: Apply filter", FURKMOD_CMD|SDLK_f),
D("SAMPLE_CROSSFADE_LOOP", "Sample editor: Crossfade loop points", NOT_AN_ACTION),
D("SAMPLE_PREVIEW", "Sample editor: Preview sample", 0),
D("SAMPLE_STOP_PREVIEW", "Sample editor: Stop sample preview", 0),
D("SAMPLE_ZOOM_IN", "Sample editor: Zoom in", FURKMOD_CMD|SDLK_EQUALS),
D("SAMPLE_ZOOM_OUT", "Sample editor: Zoom out", FURKMOD_CMD|SDLK_MINUS),
D("SAMPLE_ZOOM_AUTO", "Sample editor: Toggle auto-zoom", FURKMOD_CMD|SDLK_0),
D("SAMPLE_MAKE_INS", "Sample editor: Create instrument from sample", 0),
D("SAMPLE_SET_LOOP", "Sample editor: Set loop to selection", FURKMOD_CMD|SDLK_l),
D("SAMPLE_CREATE_WAVE", "Sample editor: Create wavetable from selection", FURKMOD_CMD|SDLK_w),
D("SAMPLE_MIN", _N("---Sample editor"), NOT_AN_ACTION),
D("SAMPLE_SELECT", _N("Sample editor mode: Select"), FURKMOD_SHIFT|SDLK_i),
D("SAMPLE_DRAW", _N("Sample editor mode: Draw"), FURKMOD_SHIFT|SDLK_d),
D("SAMPLE_CUT", _N("Sample editor: Cut"), FURKMOD_CMD|SDLK_x),
D("SAMPLE_COPY", _N("Sample editor: Copy"), FURKMOD_CMD|SDLK_c),
D("SAMPLE_PASTE", _N("Sample editor: Paste"), FURKMOD_CMD|SDLK_v),
D("SAMPLE_PASTE_REPLACE", _N("Sample editor: Paste replace"), FURKMOD_CMD|FURKMOD_SHIFT|SDLK_v),
D("SAMPLE_PASTE_MIX", _N("Sample editor: Paste mix"), FURKMOD_CMD|FURKMOD_ALT|SDLK_v),
D("SAMPLE_SELECT_ALL", _N("Sample editor: Select all"), FURKMOD_CMD|SDLK_a),
D("SAMPLE_RESIZE", _N("Sample editor: Resize"), FURKMOD_CMD|SDLK_r),
D("SAMPLE_RESAMPLE", _N("Sample editor: Resample"), FURKMOD_CMD|SDLK_e),
D("SAMPLE_AMPLIFY", _N("Sample editor: Amplify"), FURKMOD_CMD|SDLK_b),
D("SAMPLE_NORMALIZE", _N("Sample editor: Normalize"), FURKMOD_CMD|SDLK_n),
D("SAMPLE_FADE_IN", _N("Sample editor: Fade in"), FURKMOD_CMD|SDLK_i),
D("SAMPLE_FADE_OUT", _N("Sample editor: Fade out"), FURKMOD_CMD|SDLK_o),
D("SAMPLE_SILENCE", _N("Sample editor: Apply silence"), FURKMOD_SHIFT|SDLK_DELETE),
D("SAMPLE_INSERT", _N("Sample editor: Insert silence"), SDLK_INSERT),
D("SAMPLE_DELETE", _N("Sample editor: Delete"), SDLK_DELETE),
D("SAMPLE_TRIM", _N("Sample editor: Trim"), FURKMOD_CMD|SDLK_DELETE),
D("SAMPLE_REVERSE", _N("Sample editor: Reverse"), FURKMOD_CMD|SDLK_t),
D("SAMPLE_INVERT", _N("Sample editor: Invert"), FURKMOD_CMD|FURKMOD_SHIFT|SDLK_t),
D("SAMPLE_SIGN", _N("Sample editor: Signed/unsigned exchange"), FURKMOD_CMD|SDLK_u),
D("SAMPLE_FILTER", _N("Sample editor: Apply filter"), FURKMOD_CMD|SDLK_f),
D("SAMPLE_CROSSFADE_LOOP", _N("Sample editor: Crossfade loop points"), NOT_AN_ACTION),
D("SAMPLE_PREVIEW", _N("Sample editor: Preview sample"), 0),
D("SAMPLE_STOP_PREVIEW", _N("Sample editor: Stop sample preview"), 0),
D("SAMPLE_ZOOM_IN", _N("Sample editor: Zoom in"), FURKMOD_CMD|SDLK_EQUALS),
D("SAMPLE_ZOOM_OUT", _N("Sample editor: Zoom out"), FURKMOD_CMD|SDLK_MINUS),
D("SAMPLE_ZOOM_AUTO", _N("Sample editor: Toggle auto-zoom"), FURKMOD_CMD|SDLK_0),
D("SAMPLE_MAKE_INS", _N("Sample editor: Create instrument from sample"), 0),
D("SAMPLE_SET_LOOP", _N("Sample editor: Set loop to selection"), FURKMOD_CMD|SDLK_l),
D("SAMPLE_CREATE_WAVE", _N("Sample editor: Create wavetable from selection"), FURKMOD_CMD|SDLK_w),
D("SAMPLE_MAX", "", NOT_AN_ACTION),
D("ORDERS_MIN", "---Orders", NOT_AN_ACTION),
D("ORDERS_UP", "Previous order", SDLK_UP),
D("ORDERS_DOWN", "Next order", SDLK_DOWN),
D("ORDERS_LEFT", "Order cursor left", SDLK_LEFT),
D("ORDERS_RIGHT", "Order cursor right", SDLK_RIGHT),
D("ORDERS_INCREASE", "Increase order value", 0),
D("ORDERS_DECREASE", "Decrease order value", 0),
D("ORDERS_EDIT_MODE", "Switch order edit mode", 0),
D("ORDERS_LINK", "Order: toggle alter entire row", FURKMOD_CMD|SDLK_l),
D("ORDERS_ADD", "Add order", SDLK_INSERT),
D("ORDERS_DUPLICATE", "Duplicate order", FURKMOD_CMD|SDLK_d),
D("ORDERS_DEEP_CLONE", "Deep clone order", FURKMOD_CMD|FURKMOD_SHIFT|SDLK_d),
D("ORDERS_DUPLICATE_END", "Copy current order to end of song", FURKMOD_CMD|SDLK_e),
D("ORDERS_DEEP_CLONE_END", "Deep clone current order to end of song", FURKMOD_CMD|FURKMOD_SHIFT|SDLK_e),
D("ORDERS_REMOVE", "Remove order", SDLK_DELETE),
D("ORDERS_MOVE_UP", "Move order up", FURKMOD_SHIFT|SDLK_UP),
D("ORDERS_MOVE_DOWN", "Move order down", FURKMOD_SHIFT|SDLK_DOWN),
D("ORDERS_REPLAY", "Replay order", 0),
D("ORDERS_MIN", _N("---Orders"), NOT_AN_ACTION),
D("ORDERS_UP", _N("Previous order"), SDLK_UP),
D("ORDERS_DOWN", _N("Next order"), SDLK_DOWN),
D("ORDERS_LEFT", _N("Order cursor left"), SDLK_LEFT),
D("ORDERS_RIGHT", _N("Order cursor right"), SDLK_RIGHT),
D("ORDERS_INCREASE", _N("Increase order value"), 0),
D("ORDERS_DECREASE", _N("Decrease order value"), 0),
D("ORDERS_EDIT_MODE", _N("Switch order edit mode"), 0),
D("ORDERS_LINK", _N("Order: toggle alter entire row"), FURKMOD_CMD|SDLK_l),
D("ORDERS_ADD", _N("Add order"), SDLK_INSERT),
D("ORDERS_DUPLICATE", _N("Duplicate order"), FURKMOD_CMD|SDLK_d),
D("ORDERS_DEEP_CLONE", _N("Deep clone order"), FURKMOD_CMD|FURKMOD_SHIFT|SDLK_d),
D("ORDERS_DUPLICATE_END", _N("Copy current order to end of song"), FURKMOD_CMD|SDLK_e),
D("ORDERS_DEEP_CLONE_END", _N("Deep clone current order to end of song"), FURKMOD_CMD|FURKMOD_SHIFT|SDLK_e),
D("ORDERS_REMOVE", _N("Remove order"), SDLK_DELETE),
D("ORDERS_MOVE_UP", _N("Move order up"), FURKMOD_SHIFT|SDLK_UP),
D("ORDERS_MOVE_DOWN", _N("Move order down"), FURKMOD_SHIFT|SDLK_DOWN),
D("ORDERS_REPLAY", _N("Replay order"), 0),
D("ORDERS_MAX", "", NOT_AN_ACTION),
};
#undef D
@ -952,10 +963,15 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={
D(GUI_COLOR_FM_SSG,"",ImVec4(1.0f,1.0f,1.0f,1.0f)),
D(GUI_COLOR_FM_WAVE,"",ImVec4(1.0f,1.0f,1.0f,1.0f)),
D(GUI_COLOR_MACRO_HIGHLIGHT,"",ImVec4(1.0f,1.0f,1.0f,1.0f)),
D(GUI_COLOR_MACRO_VOLUME,"",ImVec4(0.2f,1.0f,0.0f,1.0f)),
D(GUI_COLOR_MACRO_PITCH,"",ImVec4(1.0f,0.8f,0.0f,1.0f)),
D(GUI_COLOR_MACRO_OTHER,"",ImVec4(0.0f,0.9f,1.0f,1.0f)),
D(GUI_COLOR_MACRO_WAVE,"",ImVec4(1.0f,0.4f,0.0f,1.0f)),
D(GUI_COLOR_MACRO_NOISE,"",ImVec4(0.8f,0.8f,0.8f,1.0f)),
D(GUI_COLOR_MACRO_FILTER,"",ImVec4(0.4f,0.2f,1.0f,1.0f)),
D(GUI_COLOR_MACRO_ENVELOPE,"",ImVec4(0.0f,1.0f,0.5f,1.0f)),
D(GUI_COLOR_MACRO_GLOBAL,"",ImVec4(1.0f,0.1f,0.1f,1.0f)),
D(GUI_COLOR_INSTR_STD,"",ImVec4(0.6f,1.0f,0.5f,1.0f)),
D(GUI_COLOR_INSTR_FM,"",ImVec4(0.6f,0.9f,1.0f,1.0f)),
@ -1019,6 +1035,8 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={
D(GUI_COLOR_INSTR_NDS,"",ImVec4(0.7f,0.7f,0.8f,1.0f)),
D(GUI_COLOR_INSTR_GBA_DMA,"",ImVec4(0.6f,0.4f,1.0f,1.0f)),
D(GUI_COLOR_INSTR_GBA_MINMOD,"",ImVec4(0.5f,0.45f,0.7f,1.0f)),
D(GUI_COLOR_INSTR_BIFURCATOR,"",ImVec4(0.8925f,0.8925f,0.8925f,1.0f)),
D(GUI_COLOR_INSTR_SID2,"",ImVec4(0.6f,0.75f,1.0f,1.0f)),
D(GUI_COLOR_INSTR_UNKNOWN,"",ImVec4(0.3f,0.3f,0.3f,1.0f)),
D(GUI_COLOR_CHANNEL_BG,"",ImVec4(0.4f,0.6f,0.8f,1.0f)),
@ -1265,6 +1283,8 @@ const int availableSystems[]={
DIV_SYSTEM_DAVE,
DIV_SYSTEM_NDS,
DIV_SYSTEM_5E01,
DIV_SYSTEM_BIFURCATOR,
DIV_SYSTEM_SID2,
0 // don't remove this last one!
};
@ -1358,6 +1378,8 @@ const int chipsSpecial[]={
DIV_SYSTEM_DAVE,
DIV_SYSTEM_NDS,
DIV_SYSTEM_5E01,
DIV_SYSTEM_BIFURCATOR,
DIV_SYSTEM_SID2,
0 // don't remove this last one!
};
@ -1397,11 +1419,11 @@ const int* chipCategories[]={
};
const char* chipCategoryNames[]={
"All chips",
"FM",
"Square",
"Wavetable",
"Special",
"Sample",
_N("All chips"),
_N("FM"),
_N("Square"),
_N("Wavetable"),
_N("Special"),
_N("Sample"),
NULL
};