- Changed default value for MIDI latency in CoreAudioDriver to ensure correct timing in ClockSync mode.
Fixed several portability issues regarding endianness:
- introduced QSynth::convertSamplesFromNativeEndian() method to simplify conversion of samples produced by Synth to an arbitrary byte order
- AudioFileWriter now ensures .wav files being written in little endian as required
- for consistency with mt32emu_smf2wav, AudioFileWriter now writes .raw files in big endian
- changed little endian audio formats to native endian in some audio drivers
Updated mt32emu_alsadrv:
- added quick hack to support analog output emulation modes
- now doesn't produces white noise on big endian systems
In mt32emu_win32drv:
- fixed unstable behaviour when closing an internal synth session
- improved debugging output a bit
- moved driver related notes to dedicated NEWS.txt file
Improved command line in mt32emu_qt:
- implemented new command line options "-profile" and "-max_sessions"
- added short help for command line syntax
- better error handling
- Fixed not exiting upon finishing maximum number of sessions when a synth remains active
- ROM set handling in mt32emu_qt made less confusing
- fixed weirdness in behaviour when saving a non-default profiles
- Added an option to use alternative channel assignment automatically on opening a synth in mt32emu_qt
  This seems useful when routing MIDI messages from a MIDI controller that always uses MIDI channel 1, e.g. some keyboards
- Minor optimisation in default implementation of ReportHandler::showLCDMessage()
- SynthStateMonitor no longer uses timer, instead, it updates upon rendering a block of audio data which corresponds to actual change of synth state
- SynthStateMonitor::handleUpdate() now invoked not frequently than 30 millis
- Started major API refactoring: most internals which cannot (shouldn't) be accessed by clients are now hidden, also this reduces namespace pollution
- Synth::getPartial() turned to Synth::getPartialStates() making direct access to Partial unnecessary
- Synth::getPart() made private
- Introduced getPartStates() and getPlayingNotes() in Synth to facilitate visualisation of synth state while avoiding access to internal classes
- Adopted mt32emu_qt for using new clarified API
- Added missing initialisation of new arrays in SynthStateMonitor
- Added Synth::getPatchName() method
- Synth::getPlayingNotes() now checks whether the synth is opened
- QSynth updated to reflect these changes
- Fixed some warnings in MT32EMU_USE_FLOAT_SAMPLES mode
- Fixed compiling when MT32EMU_DEBUG_SAMPLESTAMPS defined
- Fixed compiling in MT32EMU_REDUCE_REVERB_MEMORY=0 mode
- Fixed compiling in MT32EMU_BOSS_REVERB_PRECISE_MODE defined