diff options
Diffstat (limited to 'audio/miles.h')
-rw-r--r-- | audio/miles.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/audio/miles.h b/audio/miles.h new file mode 100644 index 0000000000..23d5998fba --- /dev/null +++ b/audio/miles.h @@ -0,0 +1,83 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +#ifndef AUDIO_MILES_MIDIDRIVER_H +#define AUDIO_MILES_MIDIDRIVER_H + +#include "audio/mididrv.h" +#include "common/error.h" +#include "common/stream.h" + +namespace Audio { + +#define MILES_MIDI_CHANNEL_COUNT 16 + +// Miles Audio supported controllers for control change messages +#define MILES_CONTROLLER_SELECT_PATCH_BANK 114 +#define MILES_CONTROLLER_PROTECT_VOICE 112 +#define MILES_CONTROLLER_PROTECT_TIMBRE 113 +#define MILES_CONTROLLER_MODULATION 1 +#define MILES_CONTROLLER_VOLUME 7 +#define MILES_CONTROLLER_EXPRESSION 11 +#define MILES_CONTROLLER_PANNING 10 +#define MILES_CONTROLLER_SUSTAIN 64 +#define MILES_CONTROLLER_PITCH_RANGE 6 +#define MILES_CONTROLLER_RESET_ALL 121 +#define MILES_CONTROLLER_ALL_NOTES_OFF 123 +#define MILES_CONTROLLER_PATCH_REVERB 59 +#define MILES_CONTROLLER_PATCH_BENDER 60 +#define MILES_CONTROLLER_REVERB_MODE 61 +#define MILES_CONTROLLER_REVERB_TIME 62 +#define MILES_CONTROLLER_REVERB_LEVEL 63 +#define MILES_CONTROLLER_RHYTHM_KEY_TIMBRE 58 + +// 3 SysEx controllers, each range 5 +// 32-36 for 1st queue +// 37-41 for 2nd queue +// 42-46 for 3rd queue +#define MILES_CONTROLLER_SYSEX_RANGE_BEGIN 32 +#define MILES_CONTROLLER_SYSEX_RANGE_END 46 + +#define MILES_CONTROLLER_SYSEX_QUEUE_COUNT 3 +#define MILES_CONTROLLER_SYSEX_QUEUE_SIZE 32 + +#define MILES_CONTROLLER_SYSEX_COMMAND_ADDRESS1 0 +#define MILES_CONTROLLER_SYSEX_COMMAND_ADDRESS2 1 +#define MILES_CONTROLLER_SYSEX_COMMAND_ADDRESS3 2 +#define MILES_CONTROLLER_SYSEX_COMMAND_DATA 3 +#define MILES_CONTROLLER_SYSEX_COMMAND_SEND 4 + +#define MILES_CONTROLLER_XMIDI_RANGE_BEGIN 110 +#define MILES_CONTROLLER_XMIDI_RANGE_END 120 + +// Miles Audio actually used 0x4000, because they didn't shift the 2 bytes properly +#define MILES_PITCHBENDER_DEFAULT 0x2000 + +extern MidiDriver *MidiDriver_Miles_AdLib_create(const Common::String &filenameAdLib, const Common::String &filenameOPL3, Common::SeekableReadStream *streamAdLib = nullptr, Common::SeekableReadStream *streamOPL3 = nullptr); + +extern MidiDriver *MidiDriver_Miles_MT32_create(const Common::String &instrumentDataFilename); + +extern void MidiDriver_Miles_MT32_processXMIDITimbreChunk(MidiDriver_BASE *driver, const byte *timbreListPtr, uint32 timbreListSize); + +} // End of namespace Audio + +#endif // AUDIO_MILES_MIDIDRIVER_H |