-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathzm15.txt
228 lines (141 loc) · 7.88 KB
/
zm15.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
MEASURE15
PCM8モード
PCM8.X(江藤啓氏作,以下PCM8)は
X68k本体をいっさい改造せずに高度な
ソフトウェア処理でADPCMの発声数を
8倍に拡張してしまう画期的なアプリケーションです。
ここではこのPCM8のZMUSIC上での使い方に
ついて解説します。
15.1. ZMUSICの組み込み
MEASURE1に示したようにZMUSICにはPCM8に対して2通りの対応の仕方を
持っている。
●ポリモード
PCM8を先に組み込み、そのあとオプションスイッチ'-O'を添付して
ZMUSICを組み込む。これで従来のADPCM1声のZMS/ZMD演奏データを
PCM8を用いてポリフォニックに演奏するモードとなる。
従来の演奏データでは、たとえばシンバルを叩いた後このシンバルが鳴り終らない
うちにスネアを叩いたとすると、ADPCMの単音発声の制約からシンバルの音が
ブツリと切れてスネアの音に切り換わっていた。ここをブツ切りにしないで
(PCM8.Xを用いて)と前後の音を重ねて演奏してしまおうというのが
このモードの主旨である。
このモードはZMUSICではPCM8ポリモードと呼ぶ。
組み込み例
A>pcm8
A>zmusic -o -p200 -t100
'-O'の後ろに数値を書くと8声あるADPCMチャンネルのうち何チャンネルを
音楽演奏に割り当てるかを設定できる。余ったチャンネルは、効果音専用に扱われる。
組み込み例
A>pcm8
A>zmusic -o6 -p200 -t100 (2チャンネル(8-6=2)効果音用に使用する)
●独立チャンネルモード
PCM8を組み込み、そのあと通常通りにZMUSICを組み込む。
これでPCM8が管理する疑似的な8つのADPCMチャンネルを個別に
使えるモードになる。
ハード的な制約によりパンポット(音場)は各チャンネル独立には機能しないが、
音量やキーオン/キーオフ、周波数(5段階)は完全に独立にコントロールできる。
組み込み例
A>pcm8
A>zmusic -p200 -t100
15.2. 独立チャンネルモード
●チャンネルアサイン
ADPCMを指すチャンネル番号を異なったトラックにアサインすることによって
それぞれのトラックが順番にADPCM1チャンネル,ADPCM2チャンネル,…,
ADPCM8チャンネルのように割り当てられていく。
MUSICZ.FNCでは、例えばトラック9~16をADPCM1~8チャンネル
に割り当てたい場合は
m_ch("FM")の時
for i=9 to 16:m_alloc(i,1000):m_assign(9,i):next
m_ch("MIDI")の時
for i=9 to 16:m_alloc(i,1000):m_assign(25,i):next
あるいは'm_assign2()'を用いて
for i=9 to 16:m_alloc(i,1000):m_assign2("ADPCM"+str$(i-8),i):next
の様にする。
ZMS書式では
m_ch("FM")の時
(m9,1000) (a9,9)
(m10,1000)(a9,10)
(m11,1000)(a9,11)
(m12,1000)(a9,12)
(m13,1000)(a9,13)
(m14,1000)(a9,14)
(m15,1000)(a9,15)
(m16,1000)(a9,16)
m_ch("MIDI")の時
(m9,1000) (a25,9)
(m10,1000)(a25,10)
(m11,1000)(a25,11)
(m12,1000)(a25,12)
(m13,1000)(a25,13)
(m14,1000)(a25,14)
(m15,1000)(a25,15)
(m16,1000)(a25,16)
または
(m9,1000) (a ADPCM1,9)
(m10,1000)(a ADPCM2,10)
(m11,1000)(a ADPCM3,11)
(m12,1000)(a ADPCM4,12)
(m13,1000)(a ADPCM5,13)
(m14,1000)(a ADPCM6,14)
(m15,1000)(a ADPCM7,15)
(m16,1000)(a ADPCM8,16)
のように行う。
●PCM8独立チャンネルモードで使用解禁となるMML
従来ADPCMトラックで使用可能のMMLはすべて使用可能である。
PCM8独立チャンネルモードでは従来ではADPCMトラックでは使用が
禁止されていたV,@Vのボリュームコマンドが使用可能になる。ボリュームは
0~16が有効範囲で原音量は9。@V使用時は1~16へ換算される。
●機能拡張されるMML
独立チャンネルモードでは周波数設定コマンドである@F命令は各トラック独立に
機能するようになる。
また、PCM8が扱うことのできる新データ方式「16ビットPCMデータ」
「8ビットPCMデータ」(囲み参照)を扱うことができるようになる。
@F5 16ビットPCMデータ方式
@F6 8ビットPCMデータ方式
15.3. 注意
ZMUSICの音楽演奏も割り込み処理、またPCM8の発音処理も
割り込み処理である。よって10MHzのX68kだとお互いの割り込み処理が
フル回転(?)したときには音楽のテンポに影響が出る場合がある。
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ 8,16ビットPCMデータ方式とは? ┃
┃ ┃
┃ ┃
┃ X68kの扱うADPCMデータとはいわばサンプリングしてできた ┃
┃ ┃
┃PCMデータが一種のアルゴリズムで圧縮されていると考えられます。 ┃
┃ ┃
┃音量の変更や周波数変換、合成処理を行うにはこのADPCMデータ方式から ┃
┃ ┃
┃PCMデータ方式へ変換しなければなりません。PCM8ではこの変換処理を ┃
┃ ┃
┃割り込みでリアルタイムで行っていますが、もしこの処理を省けるならば ┃
┃ ┃
┃かなり割り込み処理を軽くすることが出来るはずです。そこでPCM8では ┃
┃ ┃
┃無圧縮のPCMデータを演奏出来るようになっています。 ┃
┃ ┃
┃ 16ビットPCMデータ方式は符号付き16ビット整数により表現された ┃
┃ ┃
┃データです(-32768~32767)。同一音長のADPCMデータの4倍のデータ長に ┃
┃ ┃
┃なります。ちょうどZVT.Xで'-C'スイッチにより生成されるPCMデータと ┃
┃ ┃
┃同じものです。1つのデータが2バイト構成であることから必ずデータ長は偶数で ┃
┃ ┃
┃なければ正常に鳴りません。 ┃
┃ ┃
┃ 8ビットPCMデータは方式は同様に符号付き8ビット整数により表現された ┃
┃ ┃
┃データです(-128~127)。同一音長のADPCMデータの2倍のデータ長に ┃
┃ ┃
┃なります。 ┃
┃ ┃
┃ 8ビットPCMデータ/16ビットPCMデータともに特別な設定もなしに ┃
┃ ┃
┃ZPCNVでZPDデータを作成出来ます。もちろんADPCMデータと混在させて┃
┃ ┃
┃ZPDデータにすることも出来ます。 ┃
┃ ┃
┃ 再生周波数はどちらとも15.6kHz固定ですがADPCM方式との混在が ┃
┃ ┃
┃可能でADPCMデータ側はこの時も5段階の周波数が使用可能です。 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛