Commit Graph
61 Commits
Author SHA1 Message Date
athrxx 74609d7fa5 SCUMM: (IMS/MT-32) - minor fixes for playback on real hardware
- avoid sending unnecessary sysex messages
- add a delay after certain sysex messages
(but without calling OSystem::delayMillis(), since
that has negative impact on the playback).
2022-10-22 22:20:41 +02:00
athrxx 8a487f0ff1 SCUMM: (SAMNMAX) - add some missing volume controls
(unsure if used)
2022-10-08 00:28:18 +02:00
athrxx f5c421e52a SCUMM: (IMS) - some cleanup and fixes
Move some Midi related code into the new drivers. I have
kept some handling for Mac and PCSpk for now, since I'll
have to do more research, before I touch them. But eventually
it would be nice to get rid of as much of these sound
type checks/exceptions in the common code as possible.

Also, I finally verified that Samnmax does actually init the
pitchbend factor to 2, but it can be set to 0 by control
change 16. In this case the pitchbend message will alter
the volume instead of the pitch. I don't know if that method
is used anywhere, though.
2022-10-08 00:28:15 +02:00
athrxx 70c2d07f19 SCUMM: (IMS) - minor fixes 2022-10-06 18:47:56 +02:00
athrxx 40b459164b SCUMM: (IMS) - add dedicated MT-32 sound driver
(fixes bug no. 1248 - "SAM: some MIDI channels missing on MT-32")

This is a very obvious bug if the speech is turned off (otherwise the speech will
kind of cover it up). In the SAMNMAX intro it is hardly playing anything.

The reason is that the newer sound system has an extra driver layer between the
imuse parts and the actual hardware which mananges the channels (similar to
what we already do for AdLib, Amiga, FM-Towns...). Whenever the songs are
attempting to use a Midi part > 9 our current system will fail.

I have written the MT-32 player to also handle the older games music and sound
effects. This will allow cleaning up various more hacks in the common sound code.
I have done only little cleanup here, since it is not the main purpose of the commit.

I will also write a GM driver. This is going to be easier. Currently, there is a only
some init and skeleton code for it, the rest is just pass-through...
2022-10-06 18:47:46 +02:00
athrxx 99dd6cb248 SCUMM: (IMS) - minor restructuring and cleanup
Currently, Roland MT-32 sound is broken for
SAMNMAX. Just try the intro song with shut off
speech. It is very obvious that it plays with a quite
reduced number of channels compared to the
original interpreter.

Now, due to the not-so-helpful code design (much
of the iMuse code has been drawn into the common
code) it has become increasingly difficult to fix Midi
related thing in iMuse. I have added more and more
crude hacks over time.

SAMNMAX requires more elaborate channel
allocation. To make it happen I have added driver
wrappers for Midi to the iMuse code.

Other than that, I have done only minor cleanup here.

Actually, I would have liked to withdraw much more
of the iMuse code from the common code and move
it to SCUMM (basically all the MidiChannel
stuff which is exclusively used by iMuse. But it turns
out that it is so thoroughly intertwined (the major
blocker here being the AdLib driver) that it requires
more thought and effort and would just distract me
from fixing the SAMNMAX sound.
2022-10-06 18:47:40 +02:00
athrxx e052fee77f SCUMM: (IMS) - cleanup sound init process
Reduce abuse of the property function to set init vars.
Better distinction between drivers to prevent a GM init on
the Mac driver (which could happen depending on the
launcher sound setting).
2022-09-13 22:13:53 +02:00
athrxx f5bfc7b60a SCUMM: (IMS) - improve transpose precision
(I have checked some more drivers. It seems that the AdLib and PC Speaker
drivers of the earlier games have larger boundaries, the MT-32 drivers have
smaller ones)
2022-09-13 22:13:43 +02:00
athrxx 1b4d3ea3ed SCUMM: (IMS) - cleanup
(also fix Amiga regression)
2022-09-08 22:42:04 +02:00
athrxx 0b8d7cf0f4 SCUMM: (IMS) - fix transpose clipping boundaries
These are a bit different between DOTT and the earlier
games.
2022-09-08 20:49:42 +02:00
athrxx ee4fb8749d SCUMM: (IMS) - properly distinguish between PC Speaker and AdLib 2022-09-07 23:07:34 +02:00
athrxx ec03fd5243 SCUMM: (SAMNMAX) - fix GM/AdLib distinction
In SAMNMAX the player wouldn't properly distinguish between GM and AdLib, because the sound all have the same 'Midi' tag. Now, this gets tested in a way than works for all targets.
2022-09-07 22:43:54 +02:00
athrxx 162e1bb764 SCUMM: (DOTT) - fix AdLib transpose/detune
Continued bug fixing for ticket no. 13460 ("Incorrect MIDI
pitch bending"). This time the AdLib part (which applies
to FM-Towns, too, since it is more or less the same driver).
This fixes the sound when the bird is dropping from the
sky in the DOTT intro.

Also separate the GM code for SAMNMAX a bit after
checking the original code.
2022-09-06 22:01:21 +02:00
athrxx 3ef9ec5560 SCUMM: (DOTT) - fix bug no. 13460 (Incorrect MIDI pitch bending)
(General Midi Part only)

The bug report says that the AdLib part is broken, too. I am not sure about that device. For GM it was very obvious, though...
2022-09-04 13:32:38 +02:00
Eugene Sandulenko abea37c9bb ALL: Update ScummVM project license to GPLv3+ 2021-12-26 18:48:43 +01:00
Orgad Shaneh ed5489929c SCUMM: Use nullptr
Using clang-tidy modernize-use-nullptr
2021-11-14 15:51:59 +02:00
athrxx 5f4c1e86c9 SCUMM: fix regression from 0876537f
(there could still be use after delete cases)
2021-08-10 21:03:33 +02:00
athrxx 0876537f06 SCUMM: (DOTT) - fix bug no. 12776 ("Use after free error in DOTT intro") 2021-08-10 19:44:14 +02:00
Mathias Parnaudeau ac1d5352be SCUMM: Fix format-truncation warning in IMUSE player
The size in snprintf includes the final null character, so here
3 bytes are not enough to store a space, 2 digits and the null
character.
The compiler complained and the output used to display 1 digit
instead of 2, for each byte.
Extend this size from 3 to 4 in the snprintf call.
2021-04-30 00:05:24 +01:00
Orgad Shaneh a21f7d8e96 SCUMM: Fix compiler warning 2021-04-19 22:11:06 +03:00
sluicebox 93eeffc84d JANITORIAL: Update old bug tracker numbers 2021-03-03 02:15:05 +02:00
D G Turner 84d0a294af SCUMM: Replace Various String Functions with Common String Usage
This removes the dependency on the unsafe strcpy and strcat string
functions with usage of Common::String instead.
2019-09-15 20:20:03 +01:00
athrxx aecf194880 SCUMM: (iMUSE/Amiga) - minor fixes
- At at least one place in INDY4 the game attempts to send a Roland MT-32 patch to the Amiga driver. This will fail and thus not cause any harm, but I have added a check nonetheless. The original Amiga driver ignores sysex messages that don't have the iMuse manufacturer id 7D.
- In INDY4 the iMuse player thinks it has a percussion channel due to the fact that it plays ROL resources. This should also be irrelevant for the actual playback, but I have added a check for that, too.
2019-07-22 20:17:38 +02:00
Torbjörn Andersson 1e23d43006 SCUMM: Silence GCC memset() warnings
Recent GCC versions complain if you memset() a class or struct that
contain non-POD data types. Get around that by either initializing
the object when created, or by adding a reset() method.
2019-07-14 14:58:19 +03:00
Colin Snover 2e061d95c5 COMMON: Move VER macro for serializer into common code 2018-01-31 17:58:01 +01:00
Colin Snover 9916b26383 SCUMM: Replace UB-triggering serialization code with Common::Serializer
Fixes Trac#10342.
2018-01-31 17:58:01 +01:00
Eugene Sandulenko f2134a0dc2 SCUMM: Fix IMUSE initialization 2016-11-19 17:39:43 +01:00
Johannes Schickel 3847465163 SCUMM: Make GPL headers consistent in themselves. 2014-02-18 02:39:38 +01:00
Johannes Schickel 58f542d434 SCUMM: Implement support for Monkey Island 2 Mac music.
This is a initial RE of the audio output Monkey Island 2 Mac uses. Support
for special sound effects is not in there yet.
2012-09-20 02:12:41 +02:00
Johannes Schickel 6c9f9f8356 SCUMM: Extend comment about SysEx manufacturer 0x97. 2012-09-20 01:59:51 +02:00
Willem Jan Palenstijn 9e4d3234c5 SCUMM: Revert "Removed a duplicate variable assignment"
This reverts commit 747ebffd17,
and adds a FIXME.
2011-11-04 10:04:42 +01:00
Filippos Karapetis 747ebffd17 SCUMM: Removed a duplicate variable assignment 2011-11-04 00:42:38 +02:00
Johannes Schickel 25c0f0a772 SCUMM: Adapt iMuse code formatting to our standards. 2011-07-11 22:53:41 +02:00
Johannes Schickel 0a94fc5b7b SCUMM: Only try to load MT-32 instruments when we have a MIDI output in iMuse.
This fixes the melody in Indy4's intro with the PC Speaker output.
2011-07-10 05:13:03 +02:00
Max Horn 88913c0139 ALL: Remove trailing whitespaces
This tries to make our code a bit more compliant with our code formatting
conventions. For future use, this is the command I used:
  git ls-files "*.cpp" "*.h" | xargs sed -i -e 's/[ \t]*$//'
2011-06-20 00:59:48 +02:00
athrxx 3d42141e9d SCUMM: implement some missing (very low relevance) imuse code
1) Don't skip transpose setting in sysex command 0. There are only a few sounds where this setting is used (mainly sfx).

2) Make MI2 and INDY4 read certain player start parameters from the sound resource. The start parameters usually  match our default parameters (exception: e.g. LeChuck's Fortress). The use of these parameters has been dropped in DOTT (they use default parameters like we do).
2011-05-29 01:03:55 +02:00
strangerke 69b1485a22 GIT: Clean up: Suppress SVN tags, now useless 2011-05-12 01:16:22 +02:00
Max Horn 29847ea42d AUDIO: Change several fake MidiDrivers to MidiDriver_BASE subclasses
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-23 15:25:47 +01:00
Max Horn 756f592b61 SCUMM: Remove unused iMuse MIDI 'passthrough' code 2011-03-23 15:25:46 +01:00
Max Horn 42ab839dd6 AUDIO: Rename sound/ dir to audio/
svn-id: r55850
2011-02-09 01:09:01 +00:00
Florian Kagerer a48e19eaef SCUMM: minor cleanup
svn-id: r52792
2010-09-18 11:26:10 +00:00
Florian Kagerer 29a5c6a45b SCUMM/FM-TOWNS: start rewriting audio code
- 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
2010-08-18 21:38:43 +00:00
Johannes Schickel 0d995c5920 Rename all "Adlib" uses to "AdLib" to match the real name of the sound card / company.
Check this for reference:
http://en.wikipedia.org/wiki/Ad_Lib,_Inc.
http://www.crossfire-designs.de/images/articles/soundcards/adlib.jpg (note the upper left of the card)

This commit does not touch "adlib" and "ADLIB" uses!

Also it does not update all the SCUMM detection entries, which still use "Adlib".

svn-id: r47279
2010-01-12 21:07:56 +00:00
Torbjörn Andersson 72eb9ec9ea Fixed a bunch of cppcheck warnings. Mostly about checking if a pointer is null
before freeing it, which isn't necessary.

svn-id: r46941
2010-01-03 19:37:43 +00:00
Travis Howell 40504d7810 Add patch #2876221 - FBEAR: Fix for MIDI piano notes (DOS version), with minor change.
svn-id: r46081
2009-11-22 11:58:14 +00:00
Torbjörn Andersson 0999534749 The error() and warning() functions add ! and newline automatically. (I didn't
look at debug() and debugC(), since I'm really bored with this now. :-)

svn-id: r41061
2009-05-31 10:02:16 +00:00
Nicola Mettifogo 258901bab9 Merged common/stdafx.h into common/scummsys.h. All referencing files have been updated.
svn-id: r28966
2007-09-19 08:40:12 +00:00
Max Horn 218e132e37 Updated legal headers in source files, based on what Pidgin (the IM client formerly knowns as Gaim) does; added new (incomplete) COPYRIGHT file; updated copyright dates in a few spots
svn-id: r27024
2007-05-30 21:56:52 +00:00
Max Horn 4db72c8762 Unified how we deal with (and how we generate) MIDI sysex messages -- in particular, we now always do so w/o framing the message (documented this with a Doxygen comment in the MidiDriver class)
svn-id: r25630
2007-02-16 13:30:41 +00:00
Torbjörn Andersson 7e0d08f52a Replaced cryptic error() with an assertion.
svn-id: r24681
2006-11-12 02:27:20 +00:00