Paul Gofman
17f94ab563
dmsynth: Force debug info in critical sections.
2024-02-15 11:23:57 +01:00
Fabian Maurer
0459802ac1
dmsynth: Leave critical section when out of memory (Coverity).
2024-01-17 11:00:27 +01:00
Anton Baskanov
88c7e93575
dmsynth: Use time instead of position to order events.
...
Different time values can map to the same position.
2023-11-23 22:51:07 +01:00
Anton Baskanov
2c08013b8c
dmsynth: Preserve event order when positions are equal.
...
Fixes hanging notes that occur when noteon gets reordered with noteoff.
2023-11-23 22:51:07 +01:00
Anton Baskanov
b0ad8b8cfb
dmsynth: Use FLUID_MOD_KEY for CONN_SRC_KEYNUMBER.
...
Fixes incorrect EG key number scale and offset that caused missing
lower notes of some instruments (e.g. Acoustic Grand Piano).
2023-11-15 23:03:52 +01:00
Anton Baskanov
02853687c2
dmsynth: Fall back to the Standard drum set when there is no matching instrument or region.
2023-11-15 23:03:52 +01:00
Anton Baskanov
f58bdd865d
dmsynth: Factor out instrument and region search.
2023-11-15 23:03:52 +01:00
Anton Baskanov
3fd64a726a
dmsynth: Get rid of instrument reference counting.
2023-11-15 23:03:52 +01:00
Anton Baskanov
24c00250c4
dmsynth: Move instrument search to synth_preset_noteon().
...
This allows loaded instruments to take effect without a subsequent
program change. In particular, when there is no program change at all,
this allows the default Acoustic Grand Piano or Standard drum set to
play. As a side effect, this disables FluidSynth fallback logic for
missing presets.
2023-11-15 23:03:52 +01:00
Michael Stefaniuc
ad1ba07880
dmsynth: Remove superfluous casts to self.
2023-11-14 11:31:27 +01:00
Rémi Bernon
8f3980fc85
dmsynth: Reset synthesizer defaults on MIDI_SYSTEM_RESET.
2023-11-13 22:37:51 +01:00
Anton Baskanov
dbda5b52d3
dmsynth: Don't leak modulators.
2023-11-10 00:03:44 +01:00
Anton Baskanov
157ffca64d
dmsynth: Free the allocated presets manually.
...
FluidSynth never calls synth_preset_free(), causing preset and
instrument leaks.
2023-11-10 00:03:44 +01:00
Anton Baskanov
ed7564304d
dmsynth: Remove useless private data checks.
...
We always set the data.
2023-11-10 00:03:44 +01:00
Anton Baskanov
6de4ec0cae
dmsynth: Create one FluidSynth sample per wave.
2023-11-10 00:03:44 +01:00
Anton Baskanov
840923eed6
dmsynth: Use generators to set root key and fine tune.
2023-11-10 00:03:44 +01:00
Anton Baskanov
a303bb395f
dmsynth: Keep track of voice/wave mapping.
2023-11-10 00:03:44 +01:00
Alexandre Julliard
acad49573a
makefiles: Always use the global SOURCES variable for .c files.
2023-11-01 22:44:03 +01:00
Alexandre Julliard
c432eac726
makefiles: Always use the global SOURCES variable for .idl files.
2023-11-01 22:43:50 +01:00
Anton Baskanov
c7b706dedf
dmsynth: Return void from add_mod_from_connection().
2023-10-31 21:54:56 +01:00
Anton Baskanov
95e19ae011
dmsynth: Activate reverb and chorus according to effect flags.
2023-10-31 21:54:56 +01:00
Anton Baskanov
d4f4bedc48
dmsynth: Correctly handle internal connections with controls.
...
Fixes modulation wheel effects.
2023-10-31 21:54:56 +01:00
Anton Baskanov
e45dcf4f7f
dmsynth: Use correct transform for controls.
...
Fixes pitch bend scale.
2023-10-31 21:54:56 +01:00
Anton Baskanov
beb4a09116
dmsynth: Handle pitch bend events.
2023-10-31 21:54:56 +01:00
Anton Baskanov
b147a3c4a2
dmsynth: Offset the loop points by 8 frames.
...
Fixes out-of-tune Harmonica from gm.dls.
2023-10-31 21:54:56 +01:00
Rémi Bernon
dd9d37375b
dmsynth: Set loop and sample generators on the fluid_voice.
2023-10-25 14:27:15 -05:00
Rémi Bernon
2c4fc0adcf
dmusic: Use a dmusic_midi.h header for MIDI messages.
2023-10-18 20:47:00 +02:00
Rémi Bernon
4106217718
dmsynth: Set default modulators according to the DLS2 spec.
2023-10-18 20:46:59 +02:00
Rémi Bernon
7f629f7f54
dmsynth: Convert modulator values from DLS2 to SF2 convention.
2023-10-18 20:46:59 +02:00
Rémi Bernon
c7ca1643f7
dmsynth: Fix FluidSynth generators for direct connections.
2023-10-18 20:46:59 +02:00
Rémi Bernon
0eaa06b51d
dmsynth: Fix DLS2 to FluidSynth conversion for CONN_SRC_CCx.
2023-10-18 20:46:59 +02:00
Rémi Bernon
832a2127cd
dmsynth: Avoid using fluid_ prefix for internal helpers.
2023-10-18 20:46:59 +02:00
Rémi Bernon
1728f82a2a
dmsynth: Correctly lookup instrument from the default drum bank.
2023-10-18 20:46:59 +02:00
Rémi Bernon
7274902a3b
dmsynth: Implement sink rendering to DirectSound buffer.
2023-10-18 20:46:59 +02:00
Rémi Bernon
0d56c54d8b
dmsynth: Create a render thread on sink activation.
2023-10-18 20:46:59 +02:00
Rémi Bernon
29a76fb5d1
dmsynth: Do nothing in IDirectMusicSynth_SetMasterClock.
2023-10-17 21:48:20 +02:00
Rémi Bernon
ccc5af8bf8
dmsynth: Create fluid_preset and fluid_voice from instrument.
2023-10-11 22:18:01 +02:00
Rémi Bernon
07aa6b5dcb
dmsynth: Play some MIDI events in IDirectMusicSynth_Render.
2023-10-11 22:18:01 +02:00
Rémi Bernon
d3b5c6bb29
dmsynth: Parse MIDI events in IDirectMusicSynth_PlayBuffer.
2023-10-11 22:18:01 +02:00
Rémi Bernon
a4e933a3ab
dmsynth: Guard synth members with a CS.
2023-10-11 22:18:01 +02:00
Rémi Bernon
456ba99255
dmsynth: Improve debug traces of DLS2 connections.
2023-10-11 22:18:01 +02:00
Rémi Bernon
a1e8352f54
dmsynth: Fix synth download of articulations list.
2023-10-11 22:18:01 +02:00
Rémi Bernon
907c67ce3c
dmsynth: Create and register a fluid_sfont instance.
2023-10-10 10:14:08 +02:00
Rémi Bernon
3cfa740cd7
dmsynth: Create a fluid_synth instance on Open.
2023-10-10 10:14:08 +02:00
Rémi Bernon
fcc8a1be68
dmsynth: Simplify IDirectMusicSynth8_Open checks.
2023-10-10 10:14:08 +02:00
Rémi Bernon
f768d6b31b
dmsynth: Import and use FluidSynth 2.3.3.
2023-10-10 10:14:08 +02:00
Francois Gouget
622daeaf89
dmsynth: Add a trailing linefeed to TRACE() messages.
2023-10-10 09:44:02 +02:00
Rémi Bernon
223ba990b1
dmsynth: Implement IDirectMusicSynth_Download for instrument articulations.
2023-09-08 22:00:25 +02:00
Rémi Bernon
4fa0978394
dmsynth: Implement IDirectMusicSynth_Download for instrument regions.
2023-09-08 22:00:25 +02:00
Rémi Bernon
22f85dd9b8
dmsynth: Implement IDirectMusicSynth_(Download|Unload) for waves.
2023-09-08 22:00:25 +02:00