Commit Graph

972 Commits

Author SHA1 Message Date
Robert Crossfield
1c73db207e AUDIO: Fix integer sign extension issue in RJP1 envelope scaling
Resolve an issue where the value was incorrectly treated as a signed integer during multiplication/division. This was causing fluctuations in volume, with levels varying up and down.

The original code reads the envelopeEnd(1 and 2) value as a byte, extends it to a word then ANDs it with 0x00FF before multiplying/dividing.
2024-03-21 08:58:13 +02:00
athrxx
8670158cc6 SCUMM: (IMS) - fix adlib detune for Samnmax
This didn't work before. I don't know if it is now accurate
but for now I rather do this than rewrite the driver...
2024-03-17 02:09:23 +01:00
athrxx
c5ab90d6e7 SCUMM: (IMS) - improve parameter faders
The volume and pitch faders should be fine, now.
I haven't fixed the speed fader, since the whole
handling of the speed setting would need to get
examined a bit closer. I think we're doing it wrong
(but maybe correctly for MI2/INDY4/DOTT?), but
this can be fixed separately...
2024-03-15 21:19:01 +01:00
Matthew Jimenez
5219c99400 GRAPHICS: Move PaletteManager definition to a separate header 2024-03-12 12:24:00 +02:00
athrxx
03a2bf85b0 AUDIO: (FM-TOWNS) - slightly adjust CD volume control
(Make it logaritmic instead of just linear. This improves the
music volume in Loom when using the distaff)
2024-03-03 15:01:37 +01:00
Lars Sundström
addbdc13c5 AUDIO: Fix problem where fluidsynth soundfont could not be loaded
The user can specify a custom soundfont to be used with fluidsynth.
There was previously a hack for the iOS7 backend to get the path to
the document folder where the user can put files in a sandboxed
environment. This hack was removed in commit:
cac0664757

The problem however occurred when creating a FSNode from the full
system path because FSNode uses makeFileNodePath, which already
prepends the root. So the full path is added twice which causes the
fileNode.exists() to fail.

Create the FSNode from the path to the soundfont and check if the
file exist. If so then return the full path.
2024-02-25 10:16:09 +01:00
polyesterswing
be904229ec AUDIO: Remove redundant probing function
since checking whether a particular format is supported is checked
within the constructor, a separate probing function is not required
2024-02-21 18:45:25 +01:00
polyesterswing
15a9c63565 AUDIO: Add libopenmpt support 2024-02-21 18:45:25 +01:00
polyesterswing
ea03d64b62 AUDIO: Rename impulsetracker to universaltracker 2024-02-21 18:45:25 +01:00
NoSFeRaTU
f19ac248bd MM: XEEN: Initial MT32/LAPC-1 support
Some non-essential subroutines in fxEndSubroutine is not implemented.
Support is currently the same as original game, so Roland GS and there are no conversion to GM.
Music tracks requires at least MT32-compatible device with support of capital tone fallback in ROM.
Game is also extensively uses extended sounds found in CM-32L for sound effects, MT-32 will produce silence for those.
So using in combination with real CM-32L or emulated one is the best for now.
2024-02-17 13:16:51 -10:00
Eugene Sandulenko
1d6f7b05ea
JANITORIAL: Clean up some English language 2024-01-21 00:28:44 +01:00
Cameron Cawley
288e1aaa3f COMMON: Remove use of fmin/fmax/fminf/fmaxf 2024-01-08 13:07:05 +01:00
Cameron Cawley
5b1b14ad80 COMMON: Mark more symbols as const 2023-12-26 20:23:59 +01:00
Le Philousophe
4ecccceca6 AUDIO: Move API to Path 2023-12-24 13:19:25 +01:00
Le Philousophe
ce961cabbc COMMON: Make soundfont a Path object 2023-12-24 13:19:25 +01:00
Thierry Crozat
cac0664757 AUDIO: Improve code to map the soundfont path to system path on iOS
The code looks a bit less hack-ish and also now supports using path
in the application bundle and not only in the documents folder. It
could also help for other backends using a sandoxed filesystem.
2023-12-03 16:17:32 +00:00
Thierry Crozat
f47d915ec0 AUDIO: Support specifying a soundfont in the ConfMan default domain 2023-12-03 16:17:32 +00:00
Thierry Crozat
6fc56a6333 AUDIO: Add lookup of fluidsynth soundfont using SearchMan or a soundfontpath config 2023-12-03 16:17:32 +00:00
Coen Rampen
f1abbff901 MIDI: Update FluidSynth settings
This updates the FluidSynth settings to the value ranges and defaults used by
the current version 2.3.4.

Reverb
- Room size: 0.00-1.20 / 0.20 to 0.00-1.00 / 0.20
- Width: 0-100 / 1 to 0.0-100.0 / 0.5
Chorus
- Level: 0.00-1.00 / 1.00 to 0.00 - 10.00 / 2.00
- Speed: 0.30-5.00 / 0.30 to 0.10-5.00 / 0.30
- Depth: 0.0-21.0 / 8.0 to 0.0-256.0 / 8.0
2023-11-25 22:26:53 +01:00
Kaloyan Chehlarski
df1fc611cd Revert "AUDIO: Optimize case for !inStereo && outStereo"
This reverts commit f4e399cf4f.
2023-11-21 15:01:14 +02:00
sluicebox
01ab50eae6 AUDIO: FM-TOWNS/PC-98: Fix array init. PVS-Studio V512
The intent was to initialize a two dimensional array but instead only
the first 257 of 510 bytes were initialized.
2023-11-19 20:29:44 -08:00
Le Philousophe
a700883e6f JANITORIAL: Fix spaces vs tab mismatch 2023-11-19 11:35:35 +01:00
Miro Kropacek
f4e399cf4f AUDIO: Optimize case for !inStereo && outStereo 2023-11-18 21:00:40 +01:00
Coen Rampen
36001426dc ULTIMA/NUVIE: Rework music code
This commit adds a MidiParser implementation for Ultima 6's
M format and MidiDrivers for AdLib and MT-32. This replaces
the old implementation based on AdPlug, which supports
AdLib only and does not have ScummVM's support for various
OPL emulators and devices.

Music for Savage Empire and Martian Dreams has been
temporarily disabled, because these games use a different
music format and there is no MidiParser yet.
2023-11-09 18:19:25 +01:00
Coen Rampen
8915aa3277 Revert "ULTIMA/NUVIE: Rework music code"
This reverts commit 911173f34e.
2023-11-07 22:06:52 +01:00
Coen Rampen
911173f34e ULTIMA/NUVIE: Rework music code
This commit adds a MidiParser implementation for Ultima 6's
M format and MidiDrivers for AdLib and MT-32. This replaces
the old implementation based on AdPlug, which supports
AdLib only and does not have ScummVM's support for various
OPL emulators and devices.

Music for Savage Empire and Martian Dreams has been
temporarily disabled, because these games use a different
music format and there is no MidiParser yet.
2023-11-07 20:58:54 +01:00
Kaloyan Chehlarski
25c3efb0e2 AUDIO: Fix memory leak in WMA
Coverity CID 1338118
2023-11-02 11:41:22 +02:00
Kaloyan Chehlarski
d67fcb5e8b AUDIO: Fix memory leak in AIFF
Coverity CID 1490097
2023-11-02 11:41:21 +02:00
sluicebox
8ba3a70961 COMMON: Fix memory leak in MidiDriver. PVS-Studio V773 2023-10-30 11:22:10 -07:00
Walter Agazzi
641374b5ed AUDIO: Detect and skip BFW chunks in WAV files
Modern WAV files may contain extra chunks before the FMT header,
as specified in the Broadcast Wave Format extension.
These chunks must be skipped to properly read the header.
2023-10-21 16:13:20 +03:00
Eugene Sandulenko
359c027b01
AUDIO: Initialize class variables. CID 1519100 2023-09-19 19:48:56 +02:00
Eugene Sandulenko
8b01125399
AUDIO: Fix incorrect null check. CID 1519099 2023-09-19 19:48:56 +02:00
elasota
8bb2afd217 AUDIO: Change default GM device to "auto" 2023-08-28 22:06:19 +02:00
Orgad Shaneh
406960afeb AUDIO: Use inline member initialization in SoundHandle 2023-08-24 21:02:22 +03:00
Kaloyan Chehlarski
0263447aa1 AUDIO: Drain leftover RateConverter buffer data
This commit fixes an issue where RateConverter would
sometimes chop off the very end of an audio stream. This
happened when the RateConverter would have some
data left in its internal buffer, but the source stream was
already fully read. The base RateConverter class now has
a needsDraining() function which indicates leftover data,
and relevant code now uses it when needed.
2023-08-16 20:41:58 +03:00
Le Philousophe
2e68867e98 AUDIO: Remove dynamic load of EAS for Android and fix DLS loading
Android 7 prevents loading of private libraries like AES.
DLS support was also broken because of a change in API.
2023-08-06 14:10:50 +02:00
Cameron Cawley
37764d86fc AUDIO: Support building the EAS MIDI driver on non-Android platforms 2023-08-06 14:10:50 +02:00
Misty De Meo
ea8ee0291c
AUDIO: remove unused variable assignment in dbopl 2023-06-17 10:12:30 -07:00
Walter Agazzi
9f802a181e AUDIO: Skip JUNK padding in WAV files
Some wave files may contain a JUNK chunk before the
'fmt ' chunk, used for padding. This should be skipped when reading the header.
2023-05-28 13:56:59 +03:00
Donovan Watteau
6c14baa394 AUDIO: Fix -Wformat warning in QDM2 2023-05-14 22:57:11 +02:00
Kaloyan Chehlarski
0f045a4ce4 AUDIO: Add rate adjustment functionality to Mixer
Extended the Mixer class to support manually setting the
sample rate of a channel.
2023-05-14 22:04:56 +02:00
Kaloyan Chehlarski
5ca776639f AUDIO: Allow adjusting of rate in RateConverter
The RateConverter class has been modified to allow for
variable input and output rates. The optimized code paths
for copy/simple conversions are retained, but have been moved
inside separate functions instead of subclasses. The templatization
of the stereo parameters has been maintained, and is implemented
via the newly-added RateConverter_Impl template class.
Internal variables have been renamed to be more readable. The
flow() function has been renamed to convert(). The drain()
function has been removed, since it was never implemented
or used anywhere.
2023-05-14 22:04:56 +02:00
Le Philousophe
40ac45cf1f AUDIO: Add more symbol exception for Windows needed for mingw 2023-05-05 23:30:52 +02:00
Coen Rampen
ca111f3170 AUDIO: Enable dual OPL2 for hardware OPL3
This adds emulation for the dual OPL2 FM synthesis chip configuration to the
supported hardware OPL3 options: RetroWave OPL3 and OPL3LPT. This enables
stereo AdLib playback for SCI (and possibly other engines) on these devices.

This was already implemented for the OPL3 emulators (Dosbox and Nuked) and
ALSA. Generic code has been added to the OPL class to add similar emulation
for the other OPL3 options; this can also be easily added to any future OPL3
hardware or emulators which do not already have dual OPL2 support.
2023-04-27 18:14:24 +02:00
Thierry Crozat
a0e32ee370 IOS7: Remove support for non-sandboxed mode 2023-04-26 22:31:31 +01:00
sluicebox
8db3779f7d AUDIO: Fix crash when OPL driver isn't loaded
Fixes segfault when logging that an OPL driver doesn't support the
emulation type requested by a game.

The code used driver id as an array index, but this is incorrect
because array indexes depends on which drivers are compiled in.

This issue was identified and fixed in 2015, but this line was missed:
6f01600e12

Fixes the crash in bug #14413
2023-04-15 15:42:57 -07:00
Donovan Watteau
f7990d0d15 AUDIO: Fix mikmod.h longjmp usage on Windows arm64 2023-04-10 22:39:44 +02:00
Donovan Watteau
791547f10d AUDIO: Fix mikmod.h build on Windows
setjmp() and unlink() symbols may be triggered on Windows.
2023-04-10 20:14:22 +02:00
Eugene Sandulenko
5f77af4cbe
AUDIO: Added probe method to MOD/XM/S3M player 2023-03-25 01:55:23 +01:00
Eugene Sandulenko
ab1ad5fd8a
AUDIO: Add missing override keyword 2023-03-25 01:55:23 +01:00