furnace/src/gui/guiConst.cpp

419 lines
14 KiB
C++

/**
* Furnace Tracker - multi-system chiptune tracker
* Copyright (C) 2021-2022 tildearrow and contributors
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
// guiConst: constants used in the GUI like arrays, strings and other stuff
#include "guiConst.h"
#include "gui.h"
#include "../engine/song.h"
const int opOrder[4]={
0, 2, 1, 3
};
const char* noteNames[180]={
"c_5", "c+5", "d_5", "d+5", "e_5", "f_5", "f+5", "g_5", "g+5", "a_5", "a+5", "b_5",
"c_4", "c+4", "d_4", "d+4", "e_4", "f_4", "f+4", "g_4", "g+4", "a_4", "a+4", "b_4",
"c_3", "c+3", "d_3", "d+3", "e_3", "f_3", "f+3", "g_3", "g+3", "a_3", "a+3", "b_3",
"c_2", "c+2", "d_2", "d+2", "e_2", "f_2", "f+2", "g_2", "g+2", "a_2", "a+2", "b_2",
"c_1", "c+1", "d_1", "d+1", "e_1", "f_1", "f+1", "g_1", "g+1", "a_1", "a+1", "b_1",
"C-0", "C#0", "D-0", "D#0", "E-0", "F-0", "F#0", "G-0", "G#0", "A-0", "A#0", "B-0",
"C-1", "C#1", "D-1", "D#1", "E-1", "F-1", "F#1", "G-1", "G#1", "A-1", "A#1", "B-1",
"C-2", "C#2", "D-2", "D#2", "E-2", "F-2", "F#2", "G-2", "G#2", "A-2", "A#2", "B-2",
"C-3", "C#3", "D-3", "D#3", "E-3", "F-3", "F#3", "G-3", "G#3", "A-3", "A#3", "B-3",
"C-4", "C#4", "D-4", "D#4", "E-4", "F-4", "F#4", "G-4", "G#4", "A-4", "A#4", "B-4",
"C-5", "C#5", "D-5", "D#5", "E-5", "F-5", "F#5", "G-5", "G#5", "A-5", "A#5", "B-5",
"C-6", "C#6", "D-6", "D#6", "E-6", "F-6", "F#6", "G-6", "G#6", "A-6", "A#6", "B-6",
"C-7", "C#7", "D-7", "D#7", "E-7", "F-7", "F#7", "G-7", "G#7", "A-7", "A#7", "B-7",
"C-8", "C#8", "D-8", "D#8", "E-8", "F-8", "F#8", "G-8", "G#8", "A-8", "A#8", "B-8",
"C-9", "C#9", "D-9", "D#9", "E-9", "F-9", "F#9", "G-9", "G#9", "A-9", "A#9", "B-9"
};
const char* noteNamesG[180]={
"c_5", "c+5", "d_5", "d+5", "e_5", "f_5", "f+5", "g_5", "g+5", "a_5", "a+5", "h_5",
"c_4", "c+4", "d_4", "d+4", "e_4", "f_4", "f+4", "g_4", "g+4", "a_4", "a+4", "h_4",
"c_3", "c+3", "d_3", "d+3", "e_3", "f_3", "f+3", "g_3", "g+3", "a_3", "a+3", "h_3",
"c_2", "c+2", "d_2", "d+2", "e_2", "f_2", "f+2", "g_2", "g+2", "a_2", "a+2", "h_2",
"c_1", "c+1", "d_1", "d+1", "e_1", "f_1", "f+1", "g_1", "g+1", "a_1", "a+1", "h_1",
"C-0", "C#0", "D-0", "D#0", "E-0", "F-0", "F#0", "G-0", "G#0", "A-0", "A#0", "H-0",
"C-1", "C#1", "D-1", "D#1", "E-1", "F-1", "F#1", "G-1", "G#1", "A-1", "A#1", "H-1",
"C-2", "C#2", "D-2", "D#2", "E-2", "F-2", "F#2", "G-2", "G#2", "A-2", "A#2", "H-2",
"C-3", "C#3", "D-3", "D#3", "E-3", "F-3", "F#3", "G-3", "G#3", "A-3", "A#3", "H-3",
"C-4", "C#4", "D-4", "D#4", "E-4", "F-4", "F#4", "G-4", "G#4", "A-4", "A#4", "H-4",
"C-5", "C#5", "D-5", "D#5", "E-5", "F-5", "F#5", "G-5", "G#5", "A-5", "A#5", "H-5",
"C-6", "C#6", "D-6", "D#6", "E-6", "F-6", "F#6", "G-6", "G#6", "A-6", "A#6", "H-6",
"C-7", "C#7", "D-7", "D#7", "E-7", "F-7", "F#7", "G-7", "G#7", "A-7", "A#7", "H-7",
"C-8", "C#8", "D-8", "D#8", "E-8", "F-8", "F#8", "G-8", "G#8", "A-8", "A#8", "H-8",
"C-9", "C#9", "D-9", "D#9", "E-9", "F-9", "F#9", "G-9", "G#9", "A-9", "A#9", "H-9"
};
const char* pitchLabel[11]={
"1/6", "1/5", "1/4", "1/3", "1/2", "1x", "2x", "3x", "4x", "5x", "6x"
};
const int altValues[24]={
0, 10, 1, 11, 2, 3, 12, 4, 13, 5, 14, 6, 7, 15, 8, -1, 9, -1, -1, -1, -1, -1, -1, -1
};
const char* insTypes[DIV_INS_MAX]={
"Standard",
"FM (4-operator)",
"Game Boy",
"C64",
"Amiga/Sample",
"PC Engine",
"AY-3-8910/SSG",
"AY8930",
"TIA",
"SAA1099",
"VIC",
"PET",
"VRC6",
"FM (OPLL)",
"FM (OPL)",
"FDS",
"Virtual Boy",
"Namco 163",
"Konami SCC/Bubble System WSG",
"FM (OPZ)",
"POKEY",
"PC Beeper",
"WonderSwan",
"Atari Lynx",
"VERA",
"X1-010",
"VRC6 (saw)"
};
const char* sampleDepths[17]={
"1-bit PCM",
"1-bit DPCM",
NULL,
NULL,
"QSound ADPCM",
"ADPCM-A",
"ADPCM-B",
"X68000 ADPCM",
"8-bit PCM",
NULL, // "BRR",
"VOX",
NULL,
NULL,
NULL,
NULL,
NULL,
"16-bit PCM"
};
const char* resampleStrats[]={
"none",
"linear",
"cubic spline",
"blep synthesis",
"sinc",
"best possible"
};
const char* guiActions[GUI_ACTION_MAX][2]={
{"GLOBAL_MIN", "---Global"},
{"OPEN", "Open file"},
{"OPEN_BACKUP", "Restore backup"},
{"SAVE", "Save file"},
{"SAVE_AS", "Save as"},
{"UNDO", "Undo"},
{"REDO", "Redo"},
{"PLAY_TOGGLE", "Play/Stop (toggle)"},
{"PLAY", "Play"},
{"STOP", "Stop"},
{"PLAY_REPEAT", "Play (repeat pattern)"},
{"PLAY_CURSOR", "Play from cursor"},
{"STEP_ONE", "Step row"},
{"OCTAVE_UP", "Octave up"},
{"OCTAVE_DOWN", "Octave down"},
{"INS_UP", "Previous instrument"},
{"INS_DOWN", "Next instrument"},
{"STEP_UP", "Increase edit step"},
{"STEP_DOWN", "Decrease edit step"},
{"TOGGLE_EDIT", "Toggle edit mode"},
{"METRONOME", "Metronome"},
{"REPEAT_PATTERN", "Toggle repeat pattern"},
{"FOLLOW_ORDERS", "Follow orders"},
{"FOLLOW_PATTERN", "Follow pattern"},
{"PANIC", "Panic"},
{"WINDOW_EDIT_CONTROLS", "Edit Controls"},
{"WINDOW_ORDERS", "Orders"},
{"WINDOW_INS_LIST", "Instrument List"},
{"WINDOW_INS_EDIT", "Instrument Editor"},
{"WINDOW_SONG_INFO", "Song Information"},
{"WINDOW_PATTERN", "Pattern"},
{"WINDOW_WAVE_LIST", "Wavetable List"},
{"WINDOW_WAVE_EDIT", "Wavetable Editor"},
{"WINDOW_SAMPLE_LIST", "Sample List"},
{"WINDOW_SAMPLE_EDIT", "Sample Editor"},
{"WINDOW_ABOUT", "About"},
{"WINDOW_SETTINGS", "Settings"},
{"WINDOW_MIXER", "Mixer"},
{"WINDOW_DEBUG", "Debug Menu"},
{"WINDOW_OSCILLOSCOPE", "Oscilloscope"},
{"WINDOW_VOL_METER", "Volume Meter"},
{"WINDOW_STATS", "Statistics"},
{"WINDOW_COMPAT_FLAGS", "Compatibility Flags"},
{"WINDOW_PIANO", "Piano"},
{"WINDOW_NOTES", "Song Comments"},
{"WINDOW_CHANNELS", "Channels"},
{"WINDOW_REGISTER_VIEW", "Register View"},
{"COLLAPSE_WINDOW", "Collapse/expand current window"},
{"CLOSE_WINDOW", "Close current window"},
{"GLOBAL_MAX", ""},
{"PAT_MIN", "---Pattern"},
{"PAT_NOTE_UP", "Transpose (+1)"},
{"PAT_NOTE_DOWN", "Transpose (-1)"},
{"PAT_OCTAVE_UP", "Transpose (+1 octave)"},
{"PAT_OCTAVE_DOWN", "Transpose (-1 octave)"},
{"PAT_SELECT_ALL", "Select all"},
{"PAT_CUT", "Cut"},
{"PAT_COPY", "Copy"},
{"PAT_PASTE", "Paste"},
{"PAT_PASTE_MIX", "Paste Mix (foreground)"},
{"PAT_PASTE_MIX_BG", "Paste Mix (background)"},
{"PAT_PASTE_FLOOD", "Paste Flood"},
{"PAT_PASTE_OVERFLOW", "Paste Overflow"},
{"PAT_CURSOR_UP", "Move cursor up"},
{"PAT_CURSOR_DOWN", "Move cursor down"},
{"PAT_CURSOR_LEFT", "Move cursor left"},
{"PAT_CURSOR_RIGHT", "Move cursor right"},
{"PAT_CURSOR_UP_ONE", "Move cursor up by one (override Edit Step)"},
{"PAT_CURSOR_DOWN_ONE", "Move cursor down by one (override Edit Step)"},
{"PAT_CURSOR_LEFT_CHANNEL", "Move cursor to previous channel"},
{"PAT_CURSOR_RIGHT_CHANNEL", "Move cursor to next channel"},
{"PAT_CURSOR_NEXT_CHANNEL", "Move cursor to previous channel (overflow)"},
{"PAT_CURSOR_PREVIOUS_CHANNEL", "Move cursor to next channel (overflow)"},
{"PAT_CURSOR_BEGIN", "Move cursor to beginning of pattern"},
{"PAT_CURSOR_END", "Move cursor to end of pattern"},
{"PAT_CURSOR_UP_COARSE", "Move cursor up (coarse)"},
{"PAT_CURSOR_DOWN_COARSE", "Move cursor down (coarse)"},
{"PAT_SELECTION_UP", "Expand selection upwards"},
{"PAT_SELECTION_DOWN", "Expand selection downwards"},
{"PAT_SELECTION_LEFT", "Expand selection to the left"},
{"PAT_SELECTION_RIGHT", "Expand selection to the right"},
{"PAT_SELECTION_UP_ONE", "Expand selection upwards by one (override Edit Step)"},
{"PAT_SELECTION_DOWN_ONE", "Expand selection downwards by one (override Edit Step)"},
{"PAT_SELECTION_BEGIN", "Expand selection to beginning of pattern"},
{"PAT_SELECTION_END", "Expand selection to end of pattern"},
{"PAT_SELECTION_UP_COARSE", "Expand selection upwards (coarse)"},
{"PAT_SELECTION_DOWN_COARSE", "Expand selection downwards (coarse)"},
{"PAT_DELETE", "Delete"},
{"PAT_PULL_DELETE", "Pull delete"},
{"PAT_INSERT", "Insert"},
{"PAT_MUTE_CURSOR", "Mute channel at cursor"},
{"PAT_SOLO_CURSOR", "Solo channel at cursor"},
{"PAT_UNMUTE_ALL", "Unmute all channels"},
{"PAT_NEXT_ORDER", "Go to next order"},
{"PAT_PREV_ORDER", "Go to previous order"},
{"PAT_COLLAPSE", "Collapse channel at cursor"},
{"PAT_INCREASE_COLUMNS", "Increase effect columns"},
{"PAT_DECREASE_COLUMNS", "Decrease effect columns"},
{"PAT_INTERPOLATE", "Interpolate"},
{"PAT_FADE", "Fade"},
{"PAT_INVERT_VALUES", "Invert values"},
{"PAT_FLIP_SELECTION", "Flip selection"},
{"PAT_COLLAPSE_ROWS", "Collapse rows"},
{"PAT_EXPAND_ROWS", "Expand rows"},
{"PAT_COLLAPSE_PAT", "Collapse pattern"},
{"PAT_EXPAND_PAT", "Expand pattern"},
{"PAT_COLLAPSE_SONG", "Collapse song"},
{"PAT_EXPAND_SONG", "Expand song"},
{"PAT_LATCH", "Set note input latch"},
{"PAT_MAX", ""},
{"INS_LIST_MIN", "---Instrument list"},
{"INS_LIST_ADD", "Add"},
{"INS_LIST_DUPLICATE", "Duplicate"},
{"INS_LIST_OPEN", "Open"},
{"INS_LIST_SAVE", "Save"},
{"INS_LIST_MOVE_UP", "Move up"},
{"INS_LIST_MOVE_DOWN", "Move down"},
{"INS_LIST_DELETE", "Delete"},
{"INS_LIST_EDIT", "Edit"},
{"INS_LIST_UP", "Cursor up"},
{"INS_LIST_DOWN", "Cursor down"},
{"INS_LIST_MAX", ""},
{"WAVE_LIST_MIN", "---Wavetable list"},
{"WAVE_LIST_ADD", "Add"},
{"WAVE_LIST_DUPLICATE", "Duplicate"},
{"WAVE_LIST_OPEN", "Open"},
{"WAVE_LIST_SAVE", "Save"},
{"WAVE_LIST_MOVE_UP", "Move up"},
{"WAVE_LIST_MOVE_DOWN", "Move down"},
{"WAVE_LIST_DELETE", "Delete"},
{"WAVE_LIST_EDIT", "Edit"},
{"WAVE_LIST_UP", "Cursor up"},
{"WAVE_LIST_DOWN", "Cursor down"},
{"WAVE_LIST_MAX", ""},
{"SAMPLE_LIST_MIN", "---Sample list"},
{"SAMPLE_LIST_ADD", "Add"},
{"SAMPLE_LIST_DUPLICATE", "Duplicate"},
{"SAMPLE_LIST_OPEN", "Open"},
{"SAMPLE_LIST_SAVE", "Save"},
{"SAMPLE_LIST_MOVE_UP", "Move up"},
{"SAMPLE_LIST_MOVE_DOWN", "Move down"},
{"SAMPLE_LIST_DELETE", "Delete"},
{"SAMPLE_LIST_EDIT", "Edit"},
{"SAMPLE_LIST_UP", "Cursor up"},
{"SAMPLE_LIST_DOWN", "Cursor down"},
{"SAMPLE_LIST_PREVIEW", "Preview"},
{"SAMPLE_LIST_STOP_PREVIEW", "Stop preview"},
{"SAMPLE_LIST_MAX", ""},
{"SAMPLE_MIN", "---Sample editor"},
{"SAMPLE_SELECT", "Edit mode: Select"},
{"SAMPLE_DRAW", "Edit mode: Draw"},
{"SAMPLE_CUT", "Cut"},
{"SAMPLE_COPY", "Copy"},
{"SAMPLE_PASTE", "Paste"},
{"SAMPLE_PASTE_REPLACE", "Paste replace"},
{"SAMPLE_PASTE_MIX", "Paste mix"},
{"SAMPLE_SELECT_ALL", "Select all"},
{"SAMPLE_RESIZE", "Resize"},
{"SAMPLE_RESAMPLE", "Resample"},
{"SAMPLE_AMPLIFY", "Amplify"},
{"SAMPLE_NORMALIZE", "Normalize"},
{"SAMPLE_FADE_IN", "Fade in"},
{"SAMPLE_FADE_OUT", "Fade out"},
{"SAMPLE_SILENCE", "Apply silence"},
{"SAMPLE_INSERT", "Insert silence"},
{"SAMPLE_DELETE", "Delete"},
{"SAMPLE_TRIM", "Trim"},
{"SAMPLE_REVERSE", "Reverse"},
{"SAMPLE_INVERT", "Invert"},
{"SAMPLE_SIGN", "Signed/unsigned exchange"},
{"SAMPLE_FILTER", "Apply filter"},
{"SAMPLE_PREVIEW", "Preview sample"},
{"SAMPLE_STOP_PREVIEW", "Stop sample preview"},
{"SAMPLE_ZOOM_IN", "Zoom in"},
{"SAMPLE_ZOOM_OUT", "Zoom out"},
{"SAMPLE_ZOOM_AUTO", "Toggle auto-zoom"},
{"SAMPLE_MAX", ""},
{"ORDERS_MIN", "---Orders"},
{"ORDERS_UP", "Previous order"},
{"ORDERS_DOWN", "Next order"},
{"ORDERS_LEFT", "Cursor left"},
{"ORDERS_RIGHT", "Cursor right"},
{"ORDERS_INCREASE", "Increase value"},
{"ORDERS_DECREASE", "Decrease value"},
{"ORDERS_EDIT_MODE", "Switch edit mode"},
{"ORDERS_LINK", "Toggle alter entire row"},
{"ORDERS_ADD", "Add"},
{"ORDERS_DUPLICATE", "Duplicate"},
{"ORDERS_DEEP_CLONE", "Deep clone"},
{"ORDERS_DUPLICATE_END", "Duplicate to end of song"},
{"ORDERS_DEEP_CLONE_END", "Deep clone to end of song"},
{"ORDERS_REMOVE", "Remove"},
{"ORDERS_MOVE_UP", "Move up"},
{"ORDERS_MOVE_DOWN", "Move down"},
{"ORDERS_REPLAY", "Replay"},
{"ORDERS_MAX", ""},
};
// define systems.
const int availableSystems[]={
DIV_SYSTEM_YM2612,
DIV_SYSTEM_YM2612_EXT,
DIV_SYSTEM_SMS,
DIV_SYSTEM_GB,
DIV_SYSTEM_PCE,
DIV_SYSTEM_NES,
DIV_SYSTEM_C64_8580,
DIV_SYSTEM_C64_6581,
DIV_SYSTEM_YM2151,
DIV_SYSTEM_SEGAPCM,
DIV_SYSTEM_SEGAPCM_COMPAT,
DIV_SYSTEM_YM2610,
DIV_SYSTEM_YM2610_EXT,
DIV_SYSTEM_YM2610_FULL,
DIV_SYSTEM_YM2610_FULL_EXT,
DIV_SYSTEM_YM2610B,
DIV_SYSTEM_YM2610B_EXT,
DIV_SYSTEM_KONTAKT_5,
DIV_SYSTEM_AY8910,
DIV_SYSTEM_AMIGA,
DIV_SYSTEM_PCSPKR,
DIV_SYSTEM_HDA,
DIV_SYSTEM_OPLL,
DIV_SYSTEM_OPLL_DRUMS,
DIV_SYSTEM_VRC7,
DIV_SYSTEM_OPL,
DIV_SYSTEM_OPL_DRUMS,
DIV_SYSTEM_OPL2,
DIV_SYSTEM_OPL2_DRUMS,
DIV_SYSTEM_OPL3,
DIV_SYSTEM_OPL3_DRUMS,
DIV_SYSTEM_TIA,
DIV_SYSTEM_SAA1099,
DIV_SYSTEM_AY8930,
DIV_SYSTEM_LYNX,
DIV_SYSTEM_QSOUND,
DIV_SYSTEM_X1_010,
DIV_SYSTEM_SWAN,
DIV_SYSTEM_VERA,
DIV_SYSTEM_BUBSYS_WSG,
DIV_SYSTEM_N163,
DIV_SYSTEM_PET,
DIV_SYSTEM_VIC20,
DIV_SYSTEM_VRC6,
0 // don't remove this last one!
};
const char* kStages[]={
"Error while loading plugin: Use of force prohibited.",
"I said this is NOT Kontakt 5!",
"But I said this is not Kontakt 5!",
"You are the one who cannot realize this ain't Kontakt 5!",
"\"What are you smoking\" Are you serious! I am a furnace!",
"In your DAW, silly. You really thought Furnace was a DAW?",
"Okay, okay, if I load your Kontakt 5 will you be happy?",
"Fatal Python error: init_import_site: Failed to import the site module\n\
Python runtime state: initialized\n\
Traceback (most recent call last):\n\
File \"/usr/lib/python3.9/site.py\", line 589, in <module>\n\
button_clicked()\n\
ButtonClickedException",
"Wait, there's more! Wanna see Kontakt 5 for real?",
"Loading Kontakt 5 in 3...",
"2...",
};
const char* kButtons[]={
"It IS Kontakt 5!",
"But it is Kontakt 5!",
"I repeat, this IS Kontakt 5! Are you blind or what?",
"But look at the file name! What are you smoking!",
"Who cares where is my damn Kontakt 5!",
"Then why is there a Kontakt 5 option in the menu!",
"Yes! Pretty please with a cherry on top!",
"Oh fuck you for wasting my day!",
"Not anymore! I'm so pissed off!",
"Shut the hell up! I'm past my bed time!",
"Smash every button in the keyboard"
};