Skip to content

Commit 0ed77f1

Browse files
committed
WOPNv3 draft: Better model of PCM chunks store
[ci skip]
1 parent 0e54152 commit 0ed77f1

File tree

1 file changed

+35
-12
lines changed

1 file changed

+35
-12
lines changed

Specifications/WOPN-and-OPNI-Specification-draft.txt

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,12 @@ Bytes-Lenght | Description
4949
| A) Pseudo-8op
5050
| B) Is Blank instrument
5151
| C) Enable pitch envelope
52-
| D) Use PCM voice
52+
| D) Is PCM voice
5353
| E) PCM chunk has a loop
5454
-------------------------------------------
55+
56+
----VERSION<=2-OR=when flag D is disabled----
57+
5558
----[When flag A(Pseudo8op) is set - repeat this block 2 times]-------
5659
32 | Name of instrument null-terminated string
5760
2 | Big-Endian 16-bit signed integer, MIDI key offset value
@@ -78,24 +81,38 @@ Bytes-Lenght | Description
7881
1 | INT8, Second voice detune
7982
----[When flag A(Pseudo8op) is set]-END----
8083

84+
----VERSION<=2-OR-when flag D is disabled-END--
85+
8186
----VERSION>=3-----------------------------
82-
--------------[Only when flag C is set]-------
87+
------[Only when flag C is set]-------
8388
2 | UINT16BE, pitch envelope bend sensitivity
8489
2 | SINT16BE, pitch envelope bend sustain (+ up, - down)
8590
2 | UINT16BE, Millisecond pitch attack delay (0 - instant attack)
8691
2 | UINT16BE, Millisecond pitch decay1 delay (0 - instant decay)
8792
2 | UINT16BE, Millisecond pitch decay2 delay (0 - instant decay)
8893
2 | UINT16BE, Millisecond pitch release delay (0 - instant release)
89-
--------------[Only when flag C is set]-END---
90-
91-
--------------[Only when flag D is set]-------
94+
------[Only when flag C is set]-END---
95+
96+
------[Only when flag D is set]-------
97+
1 | UINT8, Count of layers (concurrent streams)
98+
----------[Layer begin]-------------------
99+
1 | UINT8, Count of used chunks
100+
--------------[Chunk begin]-------------------
101+
1 | UINT8, Range begin
102+
1 | UINT8, Range end
103+
1 | UINT8, flags
104+
| [000000BA]
105+
| A) Loop enabled
106+
| B) Loop bidirectional
92107
2 | UINT16BE, PCM chunk index (for OPNI it's always 0)
93-
2 | UINT16BE, PCM chunk source sample rate
94-
2 | UINT16BE, PCM chunk loop start
95-
2 | UINT16BE, PCM chunk loop end
108+
2 | UINT16BE, PCM chunk custom loop start
109+
2 | UINT16BE, PCM chunk custom loop end, 0 - use loop from the chunk
96110
1 | UINT8, PCM chunk base tone (MIDI key)
97111
1 | INT8, PCM chunk base tone cents offset
98-
--------------[Only when flag D is set]-END---
112+
--------------[Chunk end]-------------------
113+
----------[Layer end]-------------------
114+
------[Only when flag D is set]-END---
115+
99116
----VERSION>=3-END-------------------------
100117

101118
--VERSION >= 2---WOPL-Bank-only, OPNI must don't have those fields---
@@ -137,9 +154,7 @@ Bytes-Lenght | Description
137154
----VERSION>=3--Data---------------------
138155
86 | [Single-instrument entry], look at top of this text file
139156
----VERSION>=3--PCM Chunk---------------
140-
32 | Name of the PCM chunk
141-
2 | [ChunkLength] Length of PCM chunk in bytes
142-
ChunkLength | <Unsigned 8-bit raw PCM data>
157+
<Same as in botto mof WOPN bank>
143158
----------------------------------------
144159

145160

@@ -212,6 +227,14 @@ Bytes-Lenght | Description
212227
--VERSION >= 3---PCM chunks store--------
213228
(repeat PCMchuns times)
214229
32 | Name of the PCM chunk
230+
1 | UINT8, flags
231+
| [000000BA]
232+
| A) Loop enabled
233+
| B) Loop bidirectional
234+
2 | UINT16BE, PCM chunk source sample rate
235+
2 | UINT16BE, PCM chunk default loop start
236+
2 | UINT16BE, PCM chunk default loop end, 0 - no loop
215237
2 | [ChunkLength] Length of PCM chunk in bytes
216238
ChunkLength | <Unsigned 8-bit raw PCM data>
217239
-----------------------------------------
240+

0 commit comments

Comments
 (0)