33#pragma once
44#include "_Riff.h"
55
6- typedef enum DmDlsRegionFlags {
7- DmDlsRegion_NONEXCLUSIVE = 1 << 0 ,
8- } DmDlsRegionFlags ;
9-
10- typedef enum DmDlsWaveSampleFlags {
11- DmDlsWave_NO_TRUNCATION = 0x11 ,
12- DmDlsWave_NO_COMPRESSION = 0x21 ,
13- } DmDlsWaveSampleFlags ;
14-
15- typedef enum DmDlsLoopType {
16- DmDlsLoop_FORWARD = 0 ,
17- } DmDlsLoopType ;
18-
19- typedef enum DmDlsWaveLinkFlags {
20- DmDlsWaveLink_MASTER_PHASE = 1 << 0 ,
21- } DmDlsWaveLinkFlags ;
22-
236typedef enum DmDlsArticulatorSource {
247 DmDlsArticulatorSource_NONE = 0 ,
258 DmDlsArticulatorSource_LFO = 1 ,
@@ -81,10 +64,25 @@ typedef enum DmDlsArticulatorDestination {
8164} DmDlsArticulatorDestination ;
8265
8366typedef enum DmDlsArticulatorTransform {
84- DmDlsArticulatorTransform_NONE = 0 ,
67+ DmDlsArticulatorTransform_LINEAR = 0 ,
8568 DmDlsArticulatorTransform_CONCAVE = 1 ,
8669 DmDlsArticulatorTransform_CONVEX = 2 ,
8770 DmDlsArticulatorTransform_SWITCH = 3 ,
71+
72+ DmDlsArticulatorTransform_LINEAR_BIPOLAR = 0x10 ,
73+ DmDlsArticulatorTransform_CONCAVE_BIPOLAR = 0x11 ,
74+ DmDlsArticulatorTransform_CONVEX_BIPOLAR = 0x12 ,
75+ DmDlsArticulatorTransform_SWITCH_BIPOLAR = 0x13 ,
76+
77+ DmDlsArticulatorTransform_LINEAR_INVERTED = 0x20 ,
78+ DmDlsArticulatorTransform_CONCAVE_INVERTED = 0x21 ,
79+ DmDlsArticulatorTransform_CONVEX_INVERTED = 0x22 ,
80+ DmDlsArticulatorTransform_SWITCH_INVERTED = 0x23 ,
81+
82+ DmDlsArticulatorTransform_LINEAR_INVERTED_BIPOLAR = 0x30 ,
83+ DmDlsArticulatorTransform_CONCAVE_INVERTED_BIPOLAR = 0x31 ,
84+ DmDlsArticulatorTransform_CONVEX_INVERTED_BIPOLAR = 0x32 ,
85+ DmDlsArticulatorTransform_SWITCH_INVERTED_BIPOLAR = 0x33 ,
8886} DmDlsArticulatorTransform ;
8987
9088enum {
@@ -96,11 +94,12 @@ enum {
9694typedef struct DmDlsWaveSample {
9795 uint16_t unity_note ;
9896 uint16_t fine_tune ;
99- int32_t attenuation ;
100- DmDlsWaveSampleFlags flags ;
97+ int32_t gain ;
98+ bool allow_truncation ;
99+ bool allow_compression ;
101100
102101 bool looping ;
103- DmDlsLoopType loop_type ;
102+ bool loop_with_release ;
104103 uint32_t loop_start ;
105104 uint32_t loop_length ;
106105} DmDlsWaveSample ;
@@ -110,9 +109,11 @@ typedef struct DmDlsArticulator {
110109 uint32_t connection_count ;
111110 struct DmDlsArticulatorConnection {
112111 DmDlsArticulatorSource source ;
113- uint16_t control ;
112+ DmDlsArticulatorSource control ;
114113 DmDlsArticulatorDestination destination ;
115- DmDlsArticulatorTransform transform ;
114+ DmDlsArticulatorTransform output_transform ;
115+ DmDlsArticulatorTransform control_transform ;
116+ DmDlsArticulatorTransform source_transform ;
116117 int32_t scale ;
117118 }* connections ;
118119} DmDlsArticulator ;
@@ -122,12 +123,14 @@ typedef struct DmDlsRegion {
122123 uint16_t range_high ;
123124 uint16_t velocity_low ;
124125 uint16_t velocity_high ;
125- DmDlsRegionFlags flags ;
126126 uint16_t key_group ;
127+ bool nonexclusive ;
127128
129+ DmInfo info ;
128130 DmDlsWaveSample sample ;
129131
130- DmDlsWaveLinkFlags link_flags ;
132+ bool link_phase_master ;
133+ bool link_multi_channel ;
131134 uint16_t link_phase_group ;
132135 uint32_t link_channel ;
133136 uint32_t link_table_index ;
@@ -168,7 +171,8 @@ typedef struct DmDlsWave {
168171
169172 // ADPCM only:
170173 uint16_t samples_per_block ;
171- uint16_t coefficient_table [14 ];
174+ int16_t coefficient_table_0 [7 ];
175+ int16_t coefficient_table_1 [7 ];
172176
173177 DmDlsWaveSample sample ;
174178
0 commit comments