aboutsummaryrefslogtreecommitdiff
path: root/engines/agi/sound_midi.cpp
AgeCommit message (Collapse)Author
2011-03-28AUDIO: Add Audio::MidiPlayer::createDriver(), let some engines use itMax Horn
2011-03-25AUDIO: Move more common code to Audio::MidiPlayerMax Horn
This also should fix some regressions from the previous commits, related to MidiParser's either being leaked, or being deleted and then used again (i.e., crashing). I tested as many games as I had available, but further testing of all affected engines is called for anyway.
2011-03-24AGI: Change SoundGenMIDI to derive from Audio::MidiPlayerMax Horn
As a side effect, this fixes the incorrect handling of 'All Note Off' in SoundGenMIDI::send.
2011-03-23ENGINES: Remove unused MIDI pass-through codeMax Horn
2011-03-23ENGINES: Further simplify pseudo MidiDrivers; fix some regressionsMax Horn
The regression affected AGOS and maybe some others; specifically, the real MidiDriver would have been deleted twice -- I previously missed that the Engine instances takes care of freeing the real MidiDriver, not the MidiPlayer wrapping it. This commit should clarify the ownership of the real MidiDriver for most pseudo MidiDrivers.
2011-03-23AUDIO: Change several fake MidiDrivers to MidiDriver_BASE subclassesMax Horn
Many engines follow the advice in audio/midiparser.h and create a "pseudo-MidiDriver" subclass. But MidiParser really only needs a tiny subset of the MidiDriver capabilities, namely those found in MidiDriver_BASE. So we try to subclass from that whenever possible; this allows us to remove many stub methods, and enables further future simplifications.
2011-03-22AUDIO: Add pure virtual MidiDriver::isOpen() methodMax Horn
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.
2011-02-09AUDIO: Rename sound/ dir to audio/Max Horn
svn-id: r55850
2010-11-19COMMON: Split common/stream.h into several headersMax Horn
svn-id: r54385
2010-10-23ALL: Fix indention (whitespaces -> tabs)Max Horn
svn-id: r53738
2010-10-12AGI: Fix bug #3017908 with MIDI musicEugene Sandulenko
Bug #3017908: "AGI: No music with the new MIDI patch" Thanks to Raziel^ for pinpointing the bug. svn-id: r53166
2010-09-15MIDI: Send a reset MIDI device signal on startup.Johannes Schickel
This is currently done in the engine code. I adapted AGI, AGOS, DRACI, GROOVIE, LURE, MADE, QUEEN, SAGA, SKY, TINSEL and TOUCHE to send a reset device on startup. The sound output still works fine (started up a game from every engine), so this should hopefully not introduce any regressions. As far as I can tell it seems that SCUMM does send a proper device reset, so I did not touch it. KYRA only sends a proper reset for MT-32 currently. I am not sure about SCI though. This fixes bug #3066826 "SIMON: MIDI notes off when using RTL after SCI". svn-id: r52736
2010-09-14AGI: Fix compilation.Travis Howell
svn-id: r52719
2010-09-14AGI: Improve support for MT-32 in the MIDI output.Johannes Schickel
Formerly the AGI MIDI code did not setup the channel mask properly, in case "native_mt32" was set. This resulted in one missing channel (i.e. channel 0), since the MT-32 only responds to data for channels 1-9. svn-id: r52718
2010-08-24AGI: Fix bug #3017908: "AGI: No music with the new MIDI patch"Eugene Sandulenko
Fixed by performing proper MIDI initialization. svn-id: r52332
2010-06-21Patch #1956501: "GUI/LAUNCHER: Midi device selection"Max Horn
svn-id: r50128
2010-06-15Remove unnecessary svn:executable propertiesWillem Jan Palenstijn
svn-id: r49870
2010-06-15AGI: Split all sound generators into separate modules.Eugene Sandulenko
Now the sound subsystem of the engine finally is possible to grasp. Also now it is obvious why CoCo3 sounds are not functioning. svn-id: r49757
2010-06-15AGI: Implement FR #1913900.Eugene Sandulenko
FR #1913900: "AGI: MIDI support". Currently it gets selected when Adlib is chosen. Finding a better way to do it is a todo. Also default instrument mapping is plain. Based on original code by Jens. Christian Restemeier. svn-id: r49751