Commit graph

208 commits

Author SHA1 Message Date
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