Age | Commit message (Collapse) | Author |
|
|
|
This code is currently not complete, but contains enough code to
allow several engines to switch their pseudo MidiDrivers to be
based on this class, greatly reducing code duplication.
|
|
The actual MidiDriver derives from it. MidiDriver_BASE only
provides the minimal API necessary for transmitting MIDI data.
The idea is that this is all MidiParser needs, thus allowing
us to simplify the various MidiPlayer classes in our engines.
|
|
|
|
This in turn enables modifying MidiDriver_MPU401::close() to allow
it to be called on a midi driver that has not yet been opened.
The specific issue that triggered me to make these changes was a
crash-upon-quit in HUGO, caused by it instantiating a midi driver,
then encountering an error (missing hugo.dat) *before* having
opened the new midi driver; the general cleanup code then tries
to close the (not yet opened) midi driver -> kaboom
Also fixed some engines which were leaking MidiDriver instances.
|
|
Is it just me or is overwriting-but-not-marking-as-virtual
irritating?
|
|
Tip of the day: git grep -w PI
|
|
|
|
|
|
The ARM specific rate converters work with 8bit volume vars. Limit
volumes to 0xff to prevent crackling.
|
|
|
|
|
|
The RateConverter::flow result was never used, pipe it through
Channel::mix to MixerImpl::mixCallback, so backends can decide
if they want to waste cpu cycles while playing empty buffers.
|
|
|
|
This assertion was introduced with 633b8ed27784. I change the code to first
convert all parameters to the audio stream's framerate to avoid a possible use
of operator- on two AudioTimestamps with different framerates.
|
|
svn-id: r55850
|