View Issue Details

IDProjectCategoryView StatusLast Update
0001497OpenMPTPlayback Compatibilitypublic2022-01-28 19:30
ReporterSaga Musix Assigned ToSaga Musix  
PrioritynormalSeverityfeatureReproducibilityN/A
Status resolvedResolutionfixed 
Target VersionOpenMPT 1.30.02.00 / libopenmpt 0.6.1 (upgrade first)Fixed in VersionOpenMPT 1.30.02.00 / libopenmpt 0.6.1 (upgrade first) 
Summary0001497: Zxx Macro support for seeking
Description

CSoundFile::GetLength currently doesn't support Zxx MIDI macros at all, mostly for technical reasons. While it might not be possible or desirable to add full support for any kind of MIDI macros to this function, it should at the very least support local MIDI macros (i.e. anything that's not passed on to plugins as raw MIDI messages).

This might be done by splitting the parsing of the MIDI text macros and evaluation of the resulting MIDI data into two steps that can be carried out independently, and allow the second step to only handle local macros. But even with local macros there needs to be a distinction between macros that just modify channel state (such as filters, which are arguably the most useful macros for this use case) and macros that are local but still modify the module state (such as plugin dry/wet ratio) - the latter may only be evaluated if GetLength succeeds with seeking. When GetLength isn't used for seeking, macros should not be parsed at all to save time.

TagsNo tags attached.
Has the bug occurred in previous versions?
Tested code revision (in case you know it)

Activities

Saga Musix

Saga Musix

2022-01-24 22:42

administrator   ~0005006

Filter macros are now applied on the PlayState allocated by GetLength, however for plugin stuff this is not possible yet. At least for dry/wet ratio this would be great to have, but also nice for plugin parameters because with PC events that's already possible.

MacroRewrite.patch (52,659 bytes)   
Saga Musix

Saga Musix

2022-01-25 22:04

administrator   ~0005011

Now also works with plugin parameters and dry/wet ratio changes.

MacroRewrite-2.patch (57,344 bytes)   
Saga Musix

Saga Musix

2022-01-25 22:43

administrator   ~0005012

MacroRewrite-3.patch (59,991 bytes)   
Saga Musix

Saga Musix

2022-01-26 22:58

administrator   ~0005017

MacroRewrite-4.patch (76,121 bytes)   
Saga Musix

Saga Musix

2022-01-27 17:56

administrator   ~0005019

MacroRewrite-5.patch (76,028 bytes)   
Saga Musix

Saga Musix

2022-01-27 19:44

administrator   ~0005020

Implemented in r16716.

Issue History

Date Modified Username Field Change
2021-08-31 20:37 Saga Musix New Issue
2021-08-31 20:37 Saga Musix Assigned To => Saga Musix
2021-08-31 20:37 Saga Musix Status new => assigned
2022-01-24 22:42 Saga Musix Note Added: 0005006
2022-01-24 22:42 Saga Musix File Added: MacroRewrite.patch
2022-01-24 22:43 Saga Musix Target Version => OpenMPT 1.31.01.00 / libopenmpt 0.7.0 (upgrade first)
2022-01-25 22:04 Saga Musix Note Added: 0005011
2022-01-25 22:04 Saga Musix File Added: MacroRewrite-2.patch
2022-01-25 22:43 Saga Musix Note Added: 0005012
2022-01-25 22:43 Saga Musix File Added: MacroRewrite-3.patch
2022-01-26 22:58 Saga Musix Note Added: 0005017
2022-01-26 22:58 Saga Musix File Added: MacroRewrite-4.patch
2022-01-27 17:56 Saga Musix Note Added: 0005019
2022-01-27 17:56 Saga Musix File Added: MacroRewrite-5.patch
2022-01-27 19:44 Saga Musix Status assigned => resolved
2022-01-27 19:44 Saga Musix Resolution open => fixed
2022-01-27 19:44 Saga Musix Fixed in Version => OpenMPT 1.31.00.* (old testing)
2022-01-27 19:44 Saga Musix Note Added: 0005020
2022-01-28 19:30 Saga Musix Fixed in Version OpenMPT 1.31.00.* (old testing) => OpenMPT 1.30.02.00 / libopenmpt 0.6.1 (upgrade first)
2022-01-28 19:30 Saga Musix Target Version OpenMPT 1.31.01.00 / libopenmpt 0.7.0 (upgrade first) => OpenMPT 1.30.02.00 / libopenmpt 0.6.1 (upgrade first)