1 #pragma once 2 3 #include <stdint.h> 4 #include <stdbool.h> 5 6 enum // PUSHBUTTONS 7 { 8 // reserved 9 PB_RES_1, 10 PB_RES_2, 11 PB_RES_3, 12 PB_RES_4, 13 PB_RES_5, 14 PB_RES_6, 15 PB_RES_7, 16 PB_RES_8, 17 18 // POSITION EDITOR 19 PB_POSED_POS_UP, 20 PB_POSED_POS_DOWN, 21 PB_POSED_INS, 22 PB_POSED_PATT_UP, 23 PB_POSED_PATT_DOWN, 24 PB_POSED_DEL, 25 PB_POSED_LEN_UP, 26 PB_POSED_LEN_DOWN, 27 PB_POSED_REP_UP, 28 PB_POSED_REP_DOWN, 29 30 // SONG/PATTERN 31 PB_BPM_UP, 32 PB_BPM_DOWN, 33 PB_SPEED_UP, 34 PB_SPEED_DOWN, 35 PB_EDITADD_UP, 36 PB_EDITADD_DOWN, 37 PB_PATT_UP, 38 PB_PATT_DOWN, 39 PB_PATTLEN_UP, 40 PB_PATTLEN_DOWN, 41 PB_PATT_EXPAND, 42 PB_PATT_SHRINK, 43 44 // LOGO 45 PB_LOGO, 46 PB_BADGE, 47 48 // MAIN MENU 49 PB_ABOUT, 50 PB_NIBBLES, 51 PB_KILL, 52 PB_TRIM, 53 PB_EXTEND_VIEW, 54 PB_TRANSPOSE, 55 PB_INST_ED_EXT, 56 PB_SMP_ED_EXT, 57 PB_ADV_EDIT, 58 PB_ADD_CHANNELS, 59 PB_SUB_CHANNELS, 60 PB_PLAY_SONG, 61 PB_PLAY_PATT, 62 PB_STOP, 63 PB_RECORD_SONG, 64 PB_RECORD_PATT, 65 PB_DISK_OP, 66 PB_INST_ED, 67 PB_SMP_ED, 68 PB_CONFIG, 69 PB_HELP, 70 PB_EXIT_EXT_PATT, 71 72 // INSTRUMENT SWITCHER 73 PB_RANGE1, 74 PB_RANGE2, 75 PB_RANGE3, 76 PB_RANGE4, 77 PB_RANGE5, 78 PB_RANGE6, 79 PB_RANGE7, 80 PB_RANGE8, 81 PB_RANGE9, 82 PB_RANGE10, 83 PB_RANGE11, 84 PB_RANGE12, 85 PB_RANGE13, 86 PB_RANGE14, 87 PB_RANGE15, 88 PB_RANGE16, 89 PB_SWAP_BANK, 90 PB_SAMPLE_LIST_UP, 91 PB_SAMPLE_LIST_DOWN, 92 93 // NIBBLES SCREEN 94 PB_NIBBLES_PLAY, 95 PB_NIBBLES_HELP, 96 PB_NIBBLES_HIGHS, 97 PB_NIBBLES_EXIT, 98 99 // ADVANCED EDIT 100 PB_REMAP_TRACK, 101 PB_REMAP_PATTERN, 102 PB_REMAP_SONG, 103 PB_REMAP_BLOCK, 104 105 // ABOUT SCREEN 106 PB_EXIT_ABOUT, 107 108 // HELP SCREEN 109 PB_HELP_EXIT, 110 PB_HELP_SCROLL_UP, 111 PB_HELP_SCROLL_DOWN, 112 113 // PATTERN EDITOR 114 PB_CHAN_SCROLL_LEFT, 115 PB_CHAN_SCROLL_RIGHT, 116 117 // TRANSPOSE 118 PB_TRANSP_CUR_INS_TRK_UP, 119 PB_TRANSP_CUR_INS_TRK_DN, 120 PB_TRANSP_CUR_INS_TRK_12UP, 121 PB_TRANSP_CUR_INS_TRK_12DN, 122 PB_TRANSP_ALL_INS_TRK_UP, 123 PB_TRANSP_ALL_INS_TRK_DN, 124 PB_TRANSP_ALL_INS_TRK_12UP, 125 PB_TRANSP_ALL_INS_TRK_12DN, 126 PB_TRANSP_CUR_INS_PAT_UP, 127 PB_TRANSP_CUR_INS_PAT_DN, 128 PB_TRANSP_CUR_INS_PAT_12UP, 129 PB_TRANSP_CUR_INS_PAT_12DN, 130 PB_TRANSP_ALL_INS_PAT_UP, 131 PB_TRANSP_ALL_INS_PAT_DN, 132 PB_TRANSP_ALL_INS_PAT_12UP, 133 PB_TRANSP_ALL_INS_PAT_12DN, 134 PB_TRANSP_CUR_INS_SNG_UP, 135 PB_TRANSP_CUR_INS_SNG_DN, 136 PB_TRANSP_CUR_INS_SNG_12UP, 137 PB_TRANSP_CUR_INS_SNG_12DN, 138 PB_TRANSP_ALL_INS_SNG_UP, 139 PB_TRANSP_ALL_INS_SNG_DN, 140 PB_TRANSP_ALL_INS_SNG_12UP, 141 PB_TRANSP_ALL_INS_SNG_12DN, 142 PB_TRANSP_CUR_INS_BLK_UP, 143 PB_TRANSP_CUR_INS_BLK_DN, 144 PB_TRANSP_CUR_INS_BLK_12UP, 145 PB_TRANSP_CUR_INS_BLK_12DN, 146 PB_TRANSP_ALL_INS_BLK_UP, 147 PB_TRANSP_ALL_INS_BLK_DN, 148 PB_TRANSP_ALL_INS_BLK_12UP, 149 PB_TRANSP_ALL_INS_BLK_12DN, 150 151 // SAMPLE EDITOR 152 PB_SAMP_SCROLL_LEFT, 153 PB_SAMP_SCROLL_RIGHT, 154 PB_SAMP_PNOTE_UP, 155 PB_SAMP_PNOTE_DOWN, 156 PB_SAMP_STOP, 157 PB_SAMP_PWAVE, 158 PB_SAMP_PRANGE, 159 PB_SAMP_PDISPLAY, 160 PB_SAMP_SHOW_RANGE, 161 PB_SAMP_RANGE_ALL, 162 PB_SAMP_CLR_RANGE, 163 PB_SAMP_ZOOM_OUT, 164 PB_SAMP_SHOW_ALL, 165 PB_SAMP_SAVE_RNG, 166 PB_SAMP_CUT, 167 PB_SAMP_COPY, 168 PB_SAMP_PASTE, 169 PB_SAMP_CROP, 170 PB_SAMP_VOLUME, 171 PB_SAMP_XFADE, 172 PB_SAMP_EXIT, 173 PB_SAMP_CLEAR, 174 PB_SAMP_MIN, 175 PB_SAMP_REPEAT_UP, 176 PB_SAMP_REPEAT_DOWN, 177 PB_SAMP_REPLEN_UP, 178 PB_SAMP_REPLEN_DOWN, 179 180 // SAMPLE EDITOR EXTENSION 181 PB_SAMP_EXT_CLEAR_COPYBUF, 182 PB_SAMP_EXT_CONV, 183 PB_SAMP_EXT_ECHO, 184 PB_SAMP_EXT_BACKWARDS, 185 PB_SAMP_EXT_CONV_W, 186 PB_SAMP_EXT_MORPH, 187 PB_SAMP_EXT_COPY_INS, 188 PB_SAMP_EXT_COPY_SMP, 189 PB_SAMP_EXT_XCHG_INS, 190 PB_SAMP_EXT_XCHG_SMP, 191 PB_SAMP_EXT_RESAMPLE, 192 PB_SAMP_EXT_MIX_SAMPLE, 193 194 // INSTRUMENT EDITOR 195 PB_INST_VDEF1, 196 PB_INST_VDEF2, 197 PB_INST_VDEF3, 198 PB_INST_VDEF4, 199 PB_INST_VDEF5, 200 PB_INST_VDEF6, 201 PB_INST_PDEF1, 202 PB_INST_PDEF2, 203 PB_INST_PDEF3, 204 PB_INST_PDEF4, 205 PB_INST_PDEF5, 206 PB_INST_PDEF6, 207 PB_INST_VP_ADD, 208 PB_INST_VP_DEL, 209 PB_INST_VS_UP, 210 PB_INST_VS_DOWN, 211 PB_INST_VREPS_UP, 212 PB_INST_VREPS_DOWN, 213 PB_INST_VREPE_UP, 214 PB_INST_VREPE_DOWN, 215 PB_INST_PP_ADD, 216 PB_INST_PP_DEL, 217 PB_INST_PS_UP, 218 PB_INST_PS_DOWN, 219 PB_INST_PREPS_UP, 220 PB_INST_PREPS_DOWN, 221 PB_INST_PREPE_UP, 222 PB_INST_PREPE_DOWN, 223 PB_INST_VOL_DOWN, 224 PB_INST_VOL_UP, 225 PB_INST_PAN_DOWN, 226 PB_INST_PAN_UP, 227 PB_INST_FTUNE_DOWN, 228 PB_INST_FTUNE_UP, 229 PB_INST_FADEOUT_DOWN, 230 PB_INST_FADEOUT_UP, 231 PB_INST_VIBSPEED_DOWN, 232 PB_INST_VIBSPEED_UP, 233 PB_INST_VIBDEPTH_DOWN, 234 PB_INST_VIBDEPTH_UP, 235 PB_INST_VIBSWEEP_DOWN, 236 PB_INST_VIBSWEEP_UP, 237 PB_INST_EXIT, 238 PB_INST_OCT_UP, 239 PB_INST_HALFTONE_UP, 240 PB_INST_OCT_DOWN, 241 PB_INST_HALFTONE_DOWN, 242 243 // INSTRUMENT EDITOR EXTENSION 244 PB_INST_EXT_MIDI_CH_DOWN, 245 PB_INST_EXT_MIDI_CH_UP, 246 PB_INST_EXT_MIDI_PRG_DOWN, 247 PB_INST_EXT_MIDI_PRG_UP, 248 PB_INST_EXT_MIDI_BEND_DOWN, 249 PB_INST_EXT_MIDI_BEND_UP, 250 251 // TRIM SCREEN 252 PB_TRIM_CALC, 253 PB_TRIM_TRIM, 254 255 // CONFIG LEFT PANEL 256 PB_CONFIG_RESET, 257 PB_CONFIG_LOAD, 258 PB_CONFIG_SAVE, 259 PB_CONFIG_EXIT, 260 261 // CONFIG AUDIO 262 PB_CONFIG_AUDIO_RESCAN, 263 PB_CONFIG_AUDIO_OUTPUT_DOWN, 264 PB_CONFIG_AUDIO_OUTPUT_UP, 265 PB_CONFIG_AUDIO_INPUT_DOWN, 266 PB_CONFIG_AUDIO_INPUT_UP, 267 PB_CONFIG_AMP_DOWN, 268 PB_CONFIG_AMP_UP, 269 PB_CONFIG_MASTVOL_DOWN, 270 PB_CONFIG_MASTVOL_UP, 271 272 // CONFIG LAYOUT 273 PB_CONFIG_PAL_R_DOWN, 274 PB_CONFIG_PAL_R_UP, 275 PB_CONFIG_PAL_G_DOWN, 276 PB_CONFIG_PAL_G_UP, 277 PB_CONFIG_PAL_B_DOWN, 278 PB_CONFIG_PAL_B_UP, 279 PB_CONFIG_PAL_CONT_DOWN, 280 PB_CONFIG_PAL_CONT_UP, 281 282 // CONFIG MISCELLANEOUS 283 PB_CONFIG_QUANTIZE_UP, 284 PB_CONFIG_QUANTIZE_DOWN, 285 PB_CONFIG_MIDICHN_UP, 286 PB_CONFIG_MIDICHN_DOWN, 287 PB_CONFIG_MIDITRANS_UP, 288 PB_CONFIG_MIDITRANS_DOWN, 289 PB_CONFIG_MIDISENS_DOWN, 290 PB_CONFIG_MIDISENS_UP, 291 292 #ifdef HAS_MIDI 293 // CONFIG MIDI 294 PB_CONFIG_MIDI_INPUT_DOWN, 295 PB_CONFIG_MIDI_INPUT_UP, 296 #endif 297 298 // DISK OP. 299 PB_DISKOP_SAVE, 300 PB_DISKOP_DELETE, 301 PB_DISKOP_RENAME, 302 PB_DISKOP_MAKEDIR, 303 PB_DISKOP_REFRESH, 304 PB_DISKOP_SET_PATH, 305 PB_DISKOP_SHOW_ALL, 306 PB_DISKOP_EXIT, 307 PB_DISKOP_ROOT, 308 PB_DISKOP_PARENT, 309 #ifdef _WIN32 310 PB_DISKOP_DRIVE1, 311 PB_DISKOP_DRIVE2, 312 PB_DISKOP_DRIVE3, 313 PB_DISKOP_DRIVE4, 314 PB_DISKOP_DRIVE5, 315 PB_DISKOP_DRIVE6, 316 PB_DISKOP_DRIVE7, 317 PB_DISKOP_DRIVE8, 318 #endif 319 PB_DISKOP_LIST_UP, 320 PB_DISKOP_LIST_DOWN, 321 322 // WAV RENDERER 323 PB_WAV_RENDER, 324 PB_WAV_EXIT, 325 PB_WAV_FREQ_UP, 326 PB_WAV_FREQ_DOWN, 327 PB_WAV_AMP_UP, 328 PB_WAV_AMP_DOWN, 329 PB_WAV_START_UP, 330 PB_WAV_START_DOWN, 331 PB_WAV_END_UP, 332 PB_WAV_END_DOWN, 333 334 NUM_PUSHBUTTONS 335 }; 336 337 enum 338 { 339 PUSHBUTTON_UNPRESSED = 0, 340 PUSHBUTTON_PRESSED = 1 341 }; 342 343 // amount of frames to wait 344 #define BUTTON_DOWN_DELAY 25 345 346 // font #1/#2 special characters (used for buttons) 347 #define ARROW_UP_STRING "\x05" 348 #define ARROW_DOWN_STRING "\x03" 349 #define ARROW_LEFT_STRING "\x1E" 350 #define ARROW_RIGHT_STRING "\x1F" 351 #define SMALL_1_STRING "\x08" 352 #define SMALL_2_STRING "\x09" 353 #define SMALL_3_STRING "\x0A" 354 #define SMALL_4_STRING "\x0B" 355 #define SMALL_5_STRING "\x0C" 356 #define SMALL_6_STRING "\x0D" 357 358 typedef struct pushButton_t // DO NOT TOUCH! 359 { 360 uint16_t x, y, w, h; 361 uint8_t preDelay, delayFrames; 362 char *caption, *caption2; 363 void (*callbackFuncOnDown)(void); 364 void (*callbackFuncOnUp)(void); 365 uint8_t state; 366 bool bitmapFlag, visible; 367 const uint8_t *bitmapUnpressed; 368 const uint8_t *bitmapPressed; 369 } pushButton_t; 370 371 void drawPushButton(uint16_t pushButtonID); 372 void showPushButton(uint16_t pushButtonID); 373 void hidePushButton(uint16_t pushButtonID); 374 void handlePushButtonsWhileMouseDown(void); 375 bool testPushButtonMouseDown(void); 376 int16_t testPushButtonMouseRelease(bool runCallback); 377