Commit graph

562 commits

Author SHA1 Message Date
Rémi Bernon 2414bb4004 dmime: Clear all pending messages in IDirectMusicPerformance_Stop. 2023-11-13 22:37:51 +01:00
Rémi Bernon fe171ec86b dmime/tests: Test that IDirectMusicPerformance_Stop clears messages. 2023-11-13 22:37:51 +01:00
Rémi Bernon ddd877d1c7 dmime/tests: Avoid discarding old notifications in test. 2023-11-13 22:37:51 +01:00
Rémi Bernon 9fb8469bbe dmime: Avoid leaking performance channel block ports. 2023-11-10 20:54:41 +01:00
Rémi Bernon 467f3a2adb dmime: Simplify and rename channel_block_set to channel_block_init. 2023-11-10 20:54:41 +01:00
Rémi Bernon 0e73870ecd dmime: Introduce a new performance_get_channel helper. 2023-11-10 20:54:41 +01:00
Rémi Bernon 79a98eb7b9 dmime: Use a dedicated struct channel to hold performance channels. 2023-11-10 20:54:41 +01:00
Rémi Bernon 53035c6977 dmime: Rename struct pchannel_block to struct channel_block. 2023-11-10 20:54:40 +01:00
Rémi Bernon 18a81b3cb2 dmime: Better implement performance times with tempo track. 2023-11-09 23:00:40 +01:00
Rémi Bernon 29940435fa dmime: Support playing secondary and control segments. 2023-11-09 23:00:40 +01:00
Rémi Bernon 8f9faf8868 dmime/tests: Test playing tempo track effect on performance times. 2023-11-09 23:00:40 +01:00
Rémi Bernon c6eca9276b dmime/tests: Add helpers to scale and check music time with tempo.
Be flexible on the comparison to ignore rounding errors.
2023-11-09 23:00:40 +01:00
Rémi Bernon 2d1f46c221 dmime: Fix tempo track GetParam with GUID_TempoParam implementation. 2023-11-09 23:00:40 +01:00
Rémi Bernon 92959b315b dmime/tests: Test tempo track GetParam with GUID_TempoParam. 2023-11-09 23:00:40 +01:00
Rémi Bernon 7a9e45ac13 dmime/tests: Test tempo track Play and DMUS_PMSGT_TEMPO messages. 2023-11-09 23:00:40 +01:00
Rémi Bernon f13fa16f01 dmime: Implement IDirectMusicPerformance_GetSegmentState semi-stub. 2023-11-09 23:00:40 +01:00
Rémi Bernon 617d7fc9b8 dmime/tests: Test IDirectMusicPerformance_GetSegmentState. 2023-11-09 23:00:40 +01:00
Rémi Bernon 442db8a131 dmime: Send notification messages from segment_play_chunk. 2023-11-07 23:00:10 +01:00
Rémi Bernon 5604397135 dmime: Implement segment state chunked playback. 2023-11-07 23:00:10 +01:00
Rémi Bernon 63661495b4 dmime: Support start_time and end_time Play parameters. 2023-11-07 23:00:09 +01:00
Rémi Bernon 0b98e472b4 dmime: Fix performance message requeue-ing from the message thread. 2023-11-07 23:00:09 +01:00
Rémi Bernon b1bd72343e dmime/tests: Check more notification / dirty messages fields. 2023-11-06 21:37:54 +01:00
Rémi Bernon a66b6f96b6 dmime: Send DMUS_NOTIFICATION_SEGALMOSTEND before DMUS_NOTIFICATION_SEGEND. 2023-11-06 21:37:54 +01:00
Rémi Bernon 60538c57cd dmime: Use the current time if PlaySegmentEx start_time is 0. 2023-11-06 21:37:54 +01:00
Rémi Bernon a429a3fb4b dmime/tests: Add a track and longer segment to notifications tests. 2023-11-06 21:37:54 +01:00
Rémi Bernon 87dba38469 dmime: Send notification messages with DMUS_PMSGF_TOOL_IMMEDIATE.
Then send them again with DMUS_PMSGF_TOOL_ATTIME for the notification
queue.
2023-11-06 21:37:49 +01:00
Alexandre Julliard 7ccb5df0fc makefiles: Always use the global SOURCES variable for .rc files. 2023-11-01 22:43:56 +01:00
Alexandre Julliard c432eac726 makefiles: Always use the global SOURCES variable for .idl files. 2023-11-01 22:43:50 +01:00
Rémi Bernon 377ba8a7d1 dmime: Use an internal performance message for segment end. 2023-10-27 17:02:54 -05:00
Rémi Bernon aec78adee9 dmime: Use time_offset to align track start with music time. 2023-10-27 17:02:54 -05:00
Rémi Bernon 25a3449832 dmime: Pass PlaySegmentEx start time as track time offset. 2023-10-27 17:02:54 -05:00
Rémi Bernon c227e8bb54 dmime: Pass IDirectMusicPerformance8 to segment state functions. 2023-10-27 17:02:54 -05:00
Rémi Bernon f65cf1ed6d dmime: Remove shadowing local hr variable. 2023-10-26 15:27:47 -05:00
Rémi Bernon bff7301699 dmime: Skip segment chunk on parsing failure (or success). 2023-10-26 15:27:47 -05:00
Rémi Bernon 7b66268fab dmime: Skip sequence track chunk on parsing failure. 2023-10-26 15:27:47 -05:00
Rémi Bernon 9ad97f69b4 dmime: Force recompute MIDI message reference time.
Fixes 65e388137c, which is otherwise no-op
without this change.
2023-10-25 14:27:15 -05:00
Rémi Bernon bbdea3afc3 dmime/tests: Ignore failure on missing gm.dls in test_band_track_play.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55722
2023-10-25 14:27:15 -05:00
Rémi Bernon b971c55a3a dmime/tests: Avoid checking message segment state reference count. 2023-10-25 14:27:15 -05:00
Rémi Bernon 3e31e29d65 dmime/tests: Remove flaky track playing state test.
This fails regularly on Win7.
2023-10-25 14:27:13 -05:00
Rémi Bernon 231dd330cf dmime: Avoid releasing the newly created graph twice.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55790
2023-10-20 19:24:08 +02:00
Rémi Bernon 80e6310a88 dmusic: Use the IDirectMusicObject interface for waves.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55792
2023-10-20 19:24:08 +02:00
Rémi Bernon b1bfc52676 dmime: Return hr from wave track SetParam GUID_DownloadToAudioPath.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55792
2023-10-20 19:24:08 +02:00
Rémi Bernon 0431c88a9d dmime: Return S_OK from wave track SetParam GUID_UnloadFromAudioPath.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55792
2023-10-20 19:24:08 +02:00
Rémi Bernon 4d0c3d89a4 dmime: Avoid crashing when purging notification messages.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55792
2023-10-20 19:24:08 +02:00
Rémi Bernon 6631e6bc2d dmime: Remove FIXME from methods now mostly implemented. 2023-10-18 20:47:00 +02:00
Rémi Bernon 8a4989f3a6 dmime: Translate some DMUS_CURVE_PMSG messages to MIDI. 2023-10-18 20:47:00 +02: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 65e388137c dmime: Adjust MIDI message time with DMUS_NOTE_PMSG nOffset. 2023-10-18 20:47:00 +02:00
Rémi Bernon 5a66857fb4 dmime: Don't interrupt track iteration if SetParam failed. 2023-10-18 20:47:00 +02:00
Rémi Bernon 12d3ccb495 dmime: Only use index if group is set in IDirectMusicSegment_SetParam. 2023-10-18 20:47:00 +02:00
Rémi Bernon 10a1e533c3 dmband: Download segment tracks if performance auto-download is set. 2023-10-18 20:46:59 +02:00
Rémi Bernon 1014bab951 dmime: Use latency time to decide when to process messages. 2023-10-17 21:48:20 +02:00
Rémi Bernon d0f5446696 dmime: Update performance latency time with port latency. 2023-10-17 21:48:20 +02:00
Rémi Bernon a8763aab6f dmime: Use port latency time for messages with -1 time. 2023-10-17 21:48:20 +02:00
Rémi Bernon d5e156fa7f dmime: Rewrite message thread with a condition variable. 2023-10-17 21:48:20 +02:00
Rémi Bernon a6710afc26 dmime: Translate DMUS_PMSGT_PATCH to DMUS_PMSGT_MIDI messages. 2023-10-13 09:59:24 +02:00
Rémi Bernon f74fe2e26b dmime: Translate DMUS_PMSGT_NOTE to DMUS_PMSGT_MIDI messages. 2023-10-13 09:59:24 +02:00
Rémi Bernon a4b006e723 dmime: Output DMUS_MIDI_PMSG into a music buffer on the port. 2023-10-13 09:59:24 +02:00
Rémi Bernon e3b23cb66e dmime: Implement band track IDirectMusicTrack_Play. 2023-10-13 09:59:24 +02:00
Rémi Bernon fd68076c36 dmime: Implement sequence track IDirectMusicTrack_Play. 2023-10-13 09:59:24 +02:00
Rémi Bernon 16f9bfd23f dmime: Play direct sound buffer from DMUS_PMSGT_WAVE message.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=9027
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=34751
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45135
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48220
2023-10-11 22:17:26 +02:00
Rémi Bernon edad780922 dmime: Implement IDirectMusicTrack_Play for the wave track.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=9027
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=34751
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45135
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48220
2023-10-11 22:17:26 +02:00
Rémi Bernon 4a7a8a7ecc dmime: Implement GUID_(Download|Unload)FromAudioPath for wave track.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=9027
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=34751
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45135
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48220
2023-10-11 22:17:26 +02:00
Rémi Bernon 7bbd4be52a dmime: Create a wave track when loading a segment from a .wav.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=9027
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=34751
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45135
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48220
2023-10-11 22:17:26 +02:00
Rémi Bernon 6c1bf1f3a9 dmime: Include dmobject.h in dmime_private.h. 2023-10-11 22:16:58 +02:00
Rémi Bernon 51c664b227 dmime: Get rid of the IDirectMusicWaveTrack typedef.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=9027
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=34751
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45135
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48220
2023-10-11 22:16:58 +02:00
Rémi Bernon d0c3a0e03d dmime/tests: Queue the message before calling SendPMsg twice. 2023-10-10 10:14:08 +02:00
Rémi Bernon 3e19ca928e dmime: Call IDirectMusicTrack_(Init|End)Play from the segment state. 2023-10-09 11:35:15 +02:00
Rémi Bernon 7a678903fb dmime: Implement IDirectMusicPerformance_GetNotificationPMsg. 2023-10-09 11:35:15 +02:00
Rémi Bernon 3de1bc035e dmime: Send DMUS_PMSGT_NOTIFICATION messages from the performance.
Keeping the segment state referenced until its playback ends.
2023-10-09 11:35:13 +02:00
Rémi Bernon 664caf6ed7 dmime: Send DMUS_PMSGT_DIRTY messages from the performance. 2023-10-09 11:35:13 +02:00
Rémi Bernon ac832b97ae dmime: Free all pending messages after CloseDown. 2023-10-09 11:35:13 +02:00
Rémi Bernon 299698140a dmime: Keep messages with the same time ordered. 2023-10-09 11:35:13 +02:00
Rémi Bernon b201cf1bca dmime/tests: Tests interaction between CloseDown and notifications. 2023-10-09 11:35:13 +02:00
Rémi Bernon 45d1c00eea dmime: Introduce a new segment_state_create constructor. 2023-10-04 11:28:32 +02:00
Rémi Bernon 9cb0142632 dmime: Redirect IDirectMusicPerformance_PlaySegment to PlaySegmentEx. 2023-10-04 11:28:32 +02:00
Rémi Bernon c6e6f87a89 dmime: Implement some segment state default values. 2023-10-04 11:28:32 +02:00
Rémi Bernon 94386b4fba dmime: Get rid of the IDirectMusicSegmentState8Impl typedef. 2023-10-04 11:28:32 +02:00
Rémi Bernon 939162b674 dmime: Rename DirectMusicSegmentState8 method prefix to segment_state. 2023-10-04 11:28:32 +02:00
Rémi Bernon 3c4d83609e dmime: Implement IDirectMusicPerformance_DownloadInstrument. 2023-09-29 21:41:26 +02:00
Rémi Bernon 17f68bfabf dmime: Implement IDirectMusicSegment_(Download|Unload). 2023-09-29 21:41:26 +02:00
Rémi Bernon 8645d9eb4e dmime: Implement IDirectMusicSegment_SetParam. 2023-09-29 21:41:25 +02:00
Rémi Bernon 406f1783a9 dmime/tests: Test segment state and playing a custom track. 2023-09-29 21:41:25 +02:00
Rémi Bernon 0d3b83c021 dmime/tests: Add some tests for GUID_ConnectToDLSCollection. 2023-09-29 21:41:25 +02:00
Rémi Bernon b733a46ada dmusic: Implement SoundFont2 collection parsing. 2023-09-29 17:23:10 +02:00
Rémi Bernon 9e0487c4cc dmime: Return DMUS_E_AUDIOPATH_INACTIVE when audio paths are not enabled. 2023-09-28 23:21:46 +02:00
Rémi Bernon 0fb4e5ec47 dmime: Return DMUS_E_AUDIOPATHS_IN_USE when audio paths are in use. 2023-09-28 23:21:46 +02:00
Rémi Bernon 9788fb6911 dmime: Initialize performance in Init rather than InitAudio. 2023-09-28 23:21:46 +02:00
Rémi Bernon 50b09dcf11 dmime: Set the port direct sound before activating it. 2023-09-28 23:21:46 +02:00
Rémi Bernon 3400e41d5c dmime/tests: Test performance Init with a created port.
Final Fantasy VIII does this, more or less, and needs Init to succeed.
2023-09-28 23:21:44 +02:00
Rémi Bernon de27d59a8a dmime/tests: Move performance tests into dmime.c. 2023-09-28 23:21:43 +02:00
Rémi Bernon ed2eebf2f5 dmime/tests: Remove some duplicated tests.
These are now more extensively tested in dmime/tests/dmime.c.
2023-09-28 23:21:41 +02:00
Rémi Bernon 27ab696752 dmime: Implement DirectMusicSeqTrack IPersistStream_Load. 2023-09-21 22:32:37 +02:00
Rémi Bernon d3742ab843 dmime: Get rid of the IDirectMusicSeqTrack typedef. 2023-09-21 22:32:36 +02:00
Rémi Bernon 4ea18f87cc dmime/tests: Test band track and DMUS_PATCH_PMSG. 2023-09-20 22:15:29 +02:00
Rémi Bernon 47c299ce17 dmime/tests: Test sequence track and DMUS_NOTE_PMSG. 2023-09-20 22:15:29 +02:00
Rémi Bernon c04e686ad5 dmime/tests: Test wave segments and DMUS_WAVE_PMSG. 2023-09-20 22:15:29 +02:00
Rémi Bernon b1bf0f0296 dmime/tests: Add some DMUS_NOTIFICATION_PMSG tests. 2023-09-20 22:15:29 +02:00
Rémi Bernon a4c1dec89d dmime: Use segment_append_track in Clone and parse_track_form. 2023-09-19 21:32:36 +02:00
Rémi Bernon 0bdc248cfe dmime: Rewrite segment IDirectMusicSegment_RemoveTrack. 2023-09-19 21:32:36 +02:00