1 /* Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009 Dean Beeler, Jerome Fisher 2 * Copyright (C) 2011-2021 Dean Beeler, Jerome Fisher, Sergey V. Mikayev 3 * 4 * This program is free software: you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License as published by 6 * the Free Software Foundation, either version 2.1 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public License 15 * along with this program. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 #ifndef MT32EMU_INTERNALS_H 19 #define MT32EMU_INTERNALS_H 20 21 #include "Types.h" 22 23 // Debugging 24 25 // 0: Standard debug output is not stamped with the rendered sample count 26 // 1: Standard debug output is stamped with the rendered sample count 27 // NOTE: The "samplestamp" corresponds to the end of the last completed rendering run. 28 // This is important to bear in mind for debug output that occurs during a run. 29 #ifndef MT32EMU_DEBUG_SAMPLESTAMPS 30 #define MT32EMU_DEBUG_SAMPLESTAMPS 0 31 #endif 32 33 // 0: No debug output for initialisation progress 34 // 1: Debug output for initialisation progress 35 #ifndef MT32EMU_MONITOR_INIT 36 #define MT32EMU_MONITOR_INIT 0 37 #endif 38 39 // 0: No debug output for MIDI events 40 // 1: Debug output for weird MIDI events 41 #ifndef MT32EMU_MONITOR_MIDI 42 #define MT32EMU_MONITOR_MIDI 0 43 #endif 44 45 // 0: No debug output for note on/off 46 // 1: Basic debug output for note on/off 47 // 2: Comprehensive debug output for note on/off 48 #ifndef MT32EMU_MONITOR_INSTRUMENTS 49 #define MT32EMU_MONITOR_INSTRUMENTS 0 50 #endif 51 52 // 0: No debug output for partial allocations 53 // 1: Show partial stats when an allocation fails 54 // 2: Show partial stats with every new poly 55 // 3: Show individual partial allocations/deactivations 56 #ifndef MT32EMU_MONITOR_PARTIALS 57 #define MT32EMU_MONITOR_PARTIALS 0 58 #endif 59 60 // 0: No debug output for sysex 61 // 1: Basic debug output for sysex 62 #ifndef MT32EMU_MONITOR_SYSEX 63 #define MT32EMU_MONITOR_SYSEX 0 64 #endif 65 66 // 0: No debug output for sysex writes to the timbre areas 67 // 1: Debug output with the name and location of newly-written timbres 68 // 2: Complete dump of timbre parameters for newly-written timbres 69 #ifndef MT32EMU_MONITOR_TIMBRES 70 #define MT32EMU_MONITOR_TIMBRES 0 71 #endif 72 73 // 0: No TVA/TVF-related debug output. 74 // 1: Shows changes to TVA/TVF target, increment and phase. 75 #ifndef MT32EMU_MONITOR_TVA 76 #define MT32EMU_MONITOR_TVA 0 77 #endif 78 #ifndef MT32EMU_MONITOR_TVF 79 #define MT32EMU_MONITOR_TVF 0 80 #endif 81 82 // Configuration 83 84 // 0: Maximum speed at the cost of a bit lower emulation accuracy. 85 // 1: Maximum achievable emulation accuracy. 86 #ifndef MT32EMU_BOSS_REVERB_PRECISE_MODE 87 #define MT32EMU_BOSS_REVERB_PRECISE_MODE 0 88 #endif 89 90 namespace MT32Emu { 91 92 typedef Bit16s IntSample; 93 typedef Bit32s IntSampleEx; 94 typedef float FloatSample; 95 96 enum PolyState { 97 POLY_Playing, 98 POLY_Held, // This marks keys that have been released on the keyboard, but are being held by the pedal 99 POLY_Releasing, 100 POLY_Inactive 101 }; 102 103 enum ReverbMode { 104 REVERB_MODE_ROOM, 105 REVERB_MODE_HALL, 106 REVERB_MODE_PLATE, 107 REVERB_MODE_TAP_DELAY 108 }; 109 110 } // namespace MT32Emu 111 112 #endif // #ifndef MT32EMU_INTERNALS_H 113