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
This reverses the stereo channels for all sfx streams, meant for
hardware devices which expect an inverse order. Use it for the Wii
and Gamecube port since it's reversed since day one :P
svn-id: r52357
Formerly we did not read the first chunk of MP3 data after seeking. This
resulted in incorrect sound output in the Freddy Pharkas demo when the
sound was compressed with MP3 for example.
svn-id: r52272
- Start rewriting audio code for FM-TOWNS versions of Loom, Indy3 and Monkey Island 1 using the recently added code in towns_audio.cpp (Zak should work the same way, but I can't test, since I don't own that one).
- All sound types (pcm, euphony and cd audio) now support volume and balance control (e.g. try walking into/out of the kitchen and opening/closing the door in the Scumm Bar in Monkey Island 1 or walking into/out of the circus tent).
- Pcm sounds now support proper loop start/end and note offsets (e.g. try out the hammer sound in the forge in LOOM for example).
- some other minor improvements
- The FM-Towns versions of Indy 4 and Monkey Island 2 are not affected. I don't have Monkey Island 2, but I presume that it will work like Indy 4. Adding support for these will be a separate task, since they work quite differently.
svn-id: r52198
These devices are not able to create appropriate drivers.
The only purpose for now is having proper gui options and flags and music types for the device detector.
The corresponding GUIO flags for the new devices have been added, too.
svn-id: r51995
- FM-Towns euphony driver completely rewritten based on KYRA FM-Towns and LOOM towns disasm.
- Split all the emu and driver code from sound_towns.cpp into different files to make things a bit less confusing.
- Move the driver code to common space since the exact same euphony driver is used by LOOM which means we could get rid of the outdated and incomplete ym2612 driver/emu implementation (which doesn't even do things like instrument loading, pan position, etc). I haven't tried to add this to the Scumm engine yet, since I am not familiar with it and my priority was to get the driver finished first. But from the look of disasm it shouldn't be difficult to do.
- Introduce a generic FM-Towns audio interface based on FM-Towns system file disasm which was necessary for the euphony driver rewrite. Every FM-Towns game I have seen so far seems to access the audio hardware via these system functions. This interface implementation will also allow reasonably simple creation of new FM-Towns audio drivers (e.g. this could be used for Kings Quest 5 FM-Towns or others).
- Move the PC98 driver to common space, too, since I have a strong feeling that this driver is also used in the PC98 version of Future Wars
- This also improves KYRA FM-Towns music quality, sound effects accuracy and music fading.
svn-id: r51645
If getDeviceHandle() gets a music driver id it will pick the driver's
first device, which should hopefully be a sensible default. E.g. it's
once again possible to use "-e alsa" rather than the much more
cumbersome "-e 'alsa_Emu10k1 WaveTable'".
svn-id: r51297
Before in case MDT_PREFER_MT32 nor MDT_PREFER_GM was specified
the code used "auto" as key name for ConfMan.get, instead of
passing "auto" directly to getDeviceHandle.
svn-id: r50472
It formerly only used the global "mt32_device" and "gm_device"
values, but we also allow game specific values, thus we take
that into account now.
Also formerly the the check for the first available MT32/GM
device only used the device handle of the mt32_device/gm_device
instead of the list of devices it iterates over. Fixed that too.
Last but not least that whole detection code looks strange to me,
it seems we only use mt32_device and gm_device for fallback
detection, at least when the music_driver matches it will always
be used. So I wonder why we have those at all?
svn-id: r50471
Along with it documented that "0" is a special device handle
for the invalid device. Now getDeviceHandle returns 0, when
the identified device could not be found.
Also getMusicType now returns MT_INVALID (newly introduced),
when a non existing device was specified.
svn-id: r50470