-
Notifications
You must be signed in to change notification settings - Fork 0
/
zm16.txt
3001 lines (2374 loc) · 131 KB
/
zm16.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
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
MEASURE16
C言語ライブラリ
ZMUSIC Ver.3.0用のC言語ライブラリに
ついて解説します。
16.1.ZMUSIC Ver.3.0用C言語ライブラリの構成
ZMUSIC Ver.3.0用のC言語ライブラリは以下の3つのファイルで構成されている。
ZMSC3LIB.L C言語用ライブラリ
ZMSC3LIB.A C言語用ライブラリアーカイヴファイル
ZMSC3LIB.H C言語用インクルードファイル
ZMSC3LIB.DEF BC.X用DEFファイル
16.2.ZMSC3LIB.Hの利用法
自分のシステムの、インクルード・ファイルが格納してあるディレクトリに
ZMSC3LIB.Hをコピーする。
例
A>COPY ZMSC3LIB.H A:\INCLUDE
ZMSC3.XをC言語のプログラムから使いたい場合は、そのプログラムの冒頭に
#INCLUDE <ZMSC3LIB.H>
の1行をつける。
16.3.ZMSC3LIB関数一覧
[注意]
備考欄の
setup[7]:Output Assign (0~4:Dry,Rev,Cho,Dir1,Dir2)
といった表記は実際にsetup[7]に格納すべき値が0~4で、これに対応する
音源上でのパラメータがDry,Rev,Cho,Dir1,Dir2ということを表す。
つまりこの例でいけば、0がDryに、1がRev、2がChoに対応するということ。
*-----------------------------------------------------------------------------
int zm_check_zmsc( void);
機能 Z-MUSICの常駐状態を検査する
引数 なし
戻り値 -1:エラー(常駐していなかった)
$3x4x:バージョンID
備考 バージョンIDはたとえばZMSC3.X Version 3.12が常駐していたならば
$3142が返ってくる。
*-----------------------------------------------------------------------------
int zm_get_zmlibver( void);
機能 ライブラリのバージョンを返す
引数 なし
戻り値 $?.??:バージョンID
備考 バージョンIDはたとえば0.01ならば$001が返ってくる。
*-----------------------------------------------------------------------------
int zm_init( int param);
機能 Z-MUSICと音源の初期化を行う
引数 int param:0(dummy)
戻り値 Z-MUSICのバージョンID
備考 paramは将来の拡張用で、現時点ではかならず0を設定する。
バージョンIDはたとえばバージョン3.21ならば $00003241となる。
4の部分は固定値。
*-----------------------------------------------------------------------------
int zm_assign( int device,int track);
機能 チャンネルとトラックの割り付けを設定する
引数 int device(上位16ビット):0=FM音源,1=ADPCM音源
$8000=MIDI1,$8001=MIDI2
$8002=MIDI3,$8003=MIDI4
-1=カレントMIDI
int device(下位16ビット):チャンネル番号0-15
int track:トラック番号0-65534
戻り値 0:正常終了
0以外:エラーコード
備考 カレントMIDIはMIDIインターフェース番号を指定しない場合の
デフォルトとなるものでzm_current_midi_out()で設定する
*-----------------------------------------------------------------------------
int zm_compiler( int mode,int size,char *zms,char **result);
機能 ZMSをコンパイルする
引数 int mode:d0-d6:検出するエラーの最大値/0:∞,1-127
d15:エラーテーブルリストを作成して出力するか(0:no,1:yes)
int size:ZMSサイズ
char *zms:ZMSが格納されているアドレス
char **result:コンパイラが出力したZMD/エラーリストのアドレスを
格納する変数
戻り値 0:正常終了(**resultにはZMDのアドレス)
0以外:コンパイルで発生したエラーの数(**resultにはエラーテーブルのアドレス)
備考 ・エラーが発生するとchar **resultにエラーテーブルのアドレスが
代入される。char **resultはエラーリストを作成しない場合も必ず設定
すること。
・エラーテーブルの構成に付いてはMEASURE11を参照のこと。
・char **resultに返された領域は使用後zm_init()などを実行すればクリア
される。
・char *zmsとint sizeを共に0にするとコンパイラの常駐解除となる。
通常は指定してはならない。
・コンパイラは外部組み込みのファンクションであるため、使用前には
コンパイラの常駐を確認する必要がある。
*-----------------------------------------------------------------------------
int zm_vget( int timbre,int mode,char *buffer);
機能 FM音源音色を取り出す
引数 int timbre:音色番号(0-32767)
int mode:モード(0=OPMDRV.X互換,1=AL/FB分離方式)
char *buffer:音色データ格納バッファ
戻り値 0:正常終了
0以外:エラーコード
備考 char *bufferで表される音色データの書式は以下のとおり。
音色フォーマット(OPMDRV.X互換方式)
0:AF(フィードバック/アルゴリズム) (0~63)
1:OM(スロットマスク) (0~15)
2:WF(ウェーヴフォーム) (0~3)
3:SYC(シンクロ) (0,1)
4:SPD(スピード) (0~255)
5:PMD (0~127)
6:AMD (0~127)
7:PMS (0~7)
8:AMS (0~3)
9:PAN (0~3)
10:DUMMY
11(OP1),22(OP2),33(OP3),44(OP4):AR(アタックレート) (0~31)
12(OP1),23(OP2),34(OP3),45(OP4):1DR(1stディケイレート) (0~31)
13(OP1),24(OP2),35(OP3),46(OP4):2DR(2ndディケイレート) (0~31)
14(OP1),25(OP2),36(OP3),47(OP4):RR(リリースレート) (0~15)
15(OP1),26(OP2),37(OP3),48(OP4):1DL(1stディケイレベル) (0~15)
16(OP1),27(OP2),38(OP3),49(OP4):TL(トータルレベル) (0~127)
17(OP1),28(OP2),39(OP3),50(OP4):KS(キースケーリング) (0~3)
18(OP1),29(OP2),40(OP3),51(OP4):MUL(フェーズマルチプライ) (0~15)
19(OP1),30(OP2),41(OP3),52(OP4):DT1(ディチューン1) (0~7)
20(OP1),31(OP2),42(OP3),53(OP4):DT2(ディチューン2) (0~3)
21(OP1),32(OP2),43(OP3),54(OP4):AME(AMSイネーブル) (0,1)
音色フォーマット(AL/FB分離方式)
00(OP1),11(OP2),22(OP3),33(OP4):AR(アタックレート) (0~31)
01(OP1),12(OP2),23(OP3),34(OP4):1DR(1stディケイレート) (0~31)
02(OP1),13(OP2),24(OP3),35(OP4):2DR(2ndディケイレート) (0~31)
03(OP1),14(OP2),25(OP3),36(OP4):RR(リリースレート) (0~15)
04(OP1),15(OP2),26(OP3),37(OP4):1DL(1stディケイレベル) (0~15)
05(OP1),16(OP2),27(OP3),38(OP4):TL(トータルレベル) (0~127)
06(OP1),17(OP2),28(OP3),39(OP4):KS(キースケーリング) (0~3)
07(OP1),18(OP2),29(OP3),40(OP4):MUL(フェーズマルチプライ) (0~15)
08(OP1),19(OP2),30(OP3),41(OP4):DT1(ディチューン1) (0~7)
09(OP1),20(OP2),31(OP3),42(OP4):DT2(ディチューン2) (0~3)
10(OP1),21(OP2),32(OP3),43(OP4):AME(AMSイネーブル) (0,1)
44:AL(アルゴリズム) (0~7)
45:FB(フィードバック) (0~7)
46:OM(スロットマスク) (0~15)
47:PAN (0~3)
48:WF(ウェーヴフォーム) (0~3)
49:SYC(シンクロ) (0,1)
50:SPD(スピード) (0~255)
51:PMD (0~127)
52:AMD (0~127)
53:PMS (0~7)
54:AMS (0~3)
*-----------------------------------------------------------------------------
int zm_vset( int timbre,int mode,char *buffer);
機能 FM音源音色を登録する
引数 int timbre:音色番号(0-32767)
int mode:モード(0=OPMDRV.X互換,1=AL/FB分離方式)
char *buffer:音色データ格納バッファ
戻り値 0:正常終了
0以外:エラーコード
備考 音色フォーマットに付いてはzm_vget()とまったく同じ
*-----------------------------------------------------------------------------
int zm_tempo( int tempo,int mode );
機能 テンポを設定する
引数 int tempo:テンポの値(1分間の4分音符の数),-1テンポ取得のみを行う
int mode:0=ZMUSICに登録する(通常)
-1=単なるテンポの変更でZMUSICには登録しない
戻り値 設定前のテンポとタイマ値が戻ってくる
上位16ビット:タイマ値
下位16ビット:テンポ値
備考 テンポ値の有効範囲は使用するテンポ源タイマの種類によって異なる。
TIMER-A:20~32767
TIMER-B:20~5000
YM3802:1~32767
*-----------------------------------------------------------------------------
int zm_set_timer_value( int timer,int mode );
機能 テンポをタイマ値で設定する
引数 int timer:タイマの値,-1タイマ値取得のみを行う
int mode:0=ZMUSICに登録する(通常)
-1=単なるテンポの変更でZMUSICには登録しない
戻り値 設定前のテンポとタイマ値が戻ってくる
上位16ビット:テンポ値
下位16ビット:タイマ値
備考 テンポ値の有効範囲は使用するテンポ源タイマの種類によって異なる。
TIMER-A:0~1023
TIMER-B:0~255
YM3802:0~8191
*-----------------------------------------------------------------------------
short *zm_play( short *track);
機能 演奏開始制御
引数 short *track:演奏を開始したいトラック番号の並び
戻り値 演奏開始を行えなかったトラック番号の並び
備考 short *track,戻り値共に
{ short track,short track,.....,short track,(short)-1}
という構成を取る。ただしトラック番号は0-65534の範囲
*-----------------------------------------------------------------------------
void zm_play_all( void );
機能 全トラック演奏開始制御
引数 なし
戻り値 なし
*-----------------------------------------------------------------------------
void zm_play2( void );
機能 演奏開始制御
引数 なし
戻り値 なし
備考 現在ZMUSICの演奏データバッファに存在する演奏データをはじめから
(共通コマンドの実行も含めて)演奏する。
*-----------------------------------------------------------------------------
void zm_play_again( void );
機能 演奏開始制御
引数 なし
戻り値 なし
備考 前回行われたzm_play()を再び実行する
*-----------------------------------------------------------------------------
void zm_play_status_all_ch( int *channel_list );
機能 全チャンネル演奏状態検査
引数 int *channel_list:検査結果を格納するためのバッファ
戻り値 なし
備考 演奏状態であるチャンネルIDが*channel_listに格納される。
{(int)active_device,(int)active_device,...,(int)-1 }
のような構成を取る
バッファサイズは演奏している(トラック数+1)*4バイト必要。
なおチャンネルIDは
(上位16ビット):0=FM音源,1=ADPCM音源
$8000=MIDI1,$8001=MIDI2
$8002=MIDI3,$8003=MIDI4
-1=カレントMIDI
(下位16ビット):チャンネル番号0-15
で表される。
*-----------------------------------------------------------------------------
void zm_play_status_all_tr( short *track_list );
機能 全トラック演奏状態検査
引数 short *track_list:検査結果を格納するためのバッファ
戻り値 なし
備考 演奏状態であるトラック番号(0-65534の範囲)が*track_listに格納される。
{(short)active_track,(short)active_track,...,(short)-1}
のような構成を取る
バッファサイズは演奏している(トラック数+1)*2バイト必要。
*-----------------------------------------------------------------------------
int zm_play_status_ch( int channel );
機能 チャンネル演奏状態検査
引数 int channel(上位16ビット):0=FM音源,1=ADPCM音源
$8000=MIDI1,$8001=MIDI2
$8002=MIDI3,$8003=MIDI4
-1=カレントMIDI
int channel(下位16ビット):チャンネル番号0-15
戻り値 0:演奏されていない
0以外:演奏されている
*-----------------------------------------------------------------------------
int zm_play_status_tr( int track );
機能 トラック演奏状態検査
引数 int track:検査対象トラック番号(0-65534)
戻り値 0:演奏されていない
0以外:演奏されている
*-----------------------------------------------------------------------------
short *zm_stop( short *track);
機能 演奏停止制御
引数 short *track:演奏を停止したいトラック番号の並び
戻り値 演奏停止を行えなかったトラック番号の並び
備考 short *track,戻り値共に
{ short track,short track,.....,short track,(short)-1}
という構成を取る。ただしトラック番号は0-65534の範囲
*-----------------------------------------------------------------------------
void zm_stop_all( void );
機能 全トラック演奏停止制御
引数 なし
戻り値 なし
*-----------------------------------------------------------------------------
short *zm_cont( short *track);
機能 演奏再開制御
引数 short *track:演奏を再開したいトラック番号の並び
戻り値 演奏再開を行えなかったトラック番号の並び
備考 short *track,戻り値共に
{ short track,short track,.....,short track,(short)-1}
という構成を取る。ただしトラック番号は0-65534の範囲
*-----------------------------------------------------------------------------
void zm_cont_all( void );
機能 全トラック演奏再開制御
引数 なし
戻り値 なし
*-----------------------------------------------------------------------------
char *zm_atoi( int track );
機能 演奏トラックデータの先頭アドレス取得
引数 int track:トラック番号0-65534
戻り値 0:エラー
0以外:指定演奏トラックの先頭アドレス
*-----------------------------------------------------------------------------
MSTRCLK *zm_set_master_clock( int side,MSTRCLK *mstrclk );
機能 拍子,メトロノーム速度,調号,全音符の絶対音長の設定
引数 int side:0=音楽演奏,1=効果音
MSTRCLK mstrclk:拍子,メトロノーム速度,調号,全音符の絶対音長を
格納した構造体のアドレス。
0ならば問い合わせのみ
戻り値 MSTRCLK mstrclk=0とした時のみ、その時点の設定値を格納したMSTRCLK構造体の
アドレスが返る。それ以外は戻り値不定。
備考 side=0で通常音楽演奏側の設定、side=1で効果音演奏側の設定となる。
MSTRCLK構造体
struct MSTRCLK {
char meter_n; /*拍子分子(1-255)*/
char meter_d; /*拍子分母(1-255)*/
char metronome; /*音楽的音長(1-255)*/
char dummy;
char key1; /*調号1(0:C,負値:♭の数,正値:♯の数)*/
char key2; /*調号2(Major=0,Minor=1)*/
short master_clock; /*全音符の絶対音長(1-65535)*/
};
*-----------------------------------------------------------------------------
int zm_play_zmd( int size,char *zmd );
機能 ZMDの演奏
引数 int size:ZMDのサイズ(ヘッダ$1A,'ZmuSiC',$30の分は含まれていても
含まれていなくてもどちらでもよい)
0を設定するとZMUSIC本体のバッファへ演奏データを
取り込む動作を省略する。
char *zmd:ZMDの格納バッファ(ヘッダを含まず)
戻り値 0:正常終了
0以外:エラーコード
備考 int size=0とするには、char *zmdで表されるアドレスからの領域の存在が
演奏中も保証されることを前提とする。
*-----------------------------------------------------------------------------
int zm_play_zmd_se( char *zmd );
機能 ZMDを効果音として演奏する
引数 char *zmd:ZMDの格納バッファ(ヘッダを含まず)
戻り値 0:正常終了
0以外:エラーコード
備考 char *zmdで表されるアドレスからの領域の存在は、演奏中も
保証されなければならない。
*-----------------------------------------------------------------------------
int zm_se_play( char *zmd );
機能 効果音ZMDの演奏
引数 char *zmd:ZMDの格納バッファ(トラック・チャンネル情報テーブルから)
戻り値 0:正常終了
0以外:エラーコード
備考 char *zmdで表されるアドレスからの領域の存在は、演奏中も
保証されなければならない。
トラック・チャンネル情報テーブルに付いてはMEASURE12を参照。
*-----------------------------------------------------------------------------
int zm_se_adpcm1(char data_type,char volume,char frq,char pan,
int size,short priority,short ch,char *adpcm);
機能 (AD)PCM効果音の演奏
引数 char data_type:データタイプ(-1:ADPCM,1:16bitPCM,2:8bitPCM)
char volume:音量(0-127,64:標準)
char frq:再生周波数(0:3.9kHz 1:5.2kHz 2:7.8kHz 3:10.4kHz 4:15.6kHz)
char pan:パンポット(0-3 / $80+0-127)
int size:再生するADPCMのデータサイズ
short priority:効果音優先度(0-255/0が最も低い)
short ch:再生チャンネル(0-15)
char *adpcm:(AD)PCMデータアドレス
戻り値 0:正常終了
0以外:エラーコード
備考 char *adpcmで表されるアドレスからの領域の存在は、演奏中も
保証されなければならない。
*-----------------------------------------------------------------------------
int zm_se_adpcm2(char data_type,char volume,char frq,char pan,
int data_number,short priority,short ch);
機能 ZMUSICに登録してある(AD)PCM効果音の演奏
引数 char data_type:データタイプ(-1:ADPCM,1:16bitPCM,2:8bitPCM)
char volume:音量(0-127,64:標準)
char frq:再生周波数(0:3.9kHz 1:5.2kHz 2:7.8kHz 3:10.4kHz 4:15.6kHz)
char pan:パンポット(0-3 / $80+0-127)
int data_number:PCMデータ番号(d15が1ならば音色番号($8000+0-32767),
0ならばノート番号(0-32767)指定)
short priority:効果音優先度(0-255/0が最も低い)
short ch:再生チャンネル(0-15)
戻り値 0:正常終了
0以外:エラーコード
*-----------------------------------------------------------------------------
void zm_intercept_play( int mode );
機能 演奏開始制御の遮断制御
引数 int mode:-1 演奏開始の遮断を行う
0 演奏開始の遮断の解除と演奏開始
1 演奏開始の遮断の解除
戻り値 なし
備考 演奏開始の遮断を設定するとzm_play()などの演奏開始命令を実行しても
演奏が開始されなくなる。
*-----------------------------------------------------------------------------
int zm_current_midi_in( int port );
機能 カレントMIDI-IN端子の設定
引数 int port:MIDIポートの番号(0-3)
-1では問い合わせのみを行う
戻り値 以前のカレントMIDI-INのポート番号(0-3)
*-----------------------------------------------------------------------------
int zm_current_midi_out( int port );
機能 カレントMIDI-OUT端子の設定
引数 int port:MIDIポートの番号(0-3)
-1では問い合わせのみを行う
戻り値 以前のカレントMIDI-OUTのポート番号(0-3)
*-----------------------------------------------------------------------------
int zm_midi_transmission( int port,int size,char *midi );
機能 MIDIデータメッセージの送信
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
int size:送信データサイズ
0とした場合はテキスト型MIDIデータ(MDD)とみなして送信する
0以外ではバイナリデータとみなして送信する
char *midi:送信するMIDIデータを格納したデータバッファ
戻り値 送信データの8ビット加算合計値
備考 MDDとはZMUSIC Ver.2.0相当でMIDIファイルの標準としていたフォーマット。
$0d,$0aで始まり16進数のテキストでMIDIメッセージを記述したファイル。
送信データサイズを指定した場合はバイナリのMIDIメッセージと
みなして送信される。ZMUSICが扱えるバイナリのMIDIメッセージには
スタンダードMIDIファイル(FORMAT0)と単なるバイナリデータ列の
2種類がありこのデータの種類の判別はZMUSIC Ver.3.0が自動で行う。
*-----------------------------------------------------------------------------
void zm_exclusive( int port,int size,int id,char *midi );
機能 エクスクルーシブメッセージの送信
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
int size:送信データサイズ
int id:d0-d7=MODEL ID(0-127)
d8-d15=DEVICE ID(0-127)
d16-d23=MAKER ID(0-127)
char *midi:送信するMIDIデータを格納したデータバッファ
戻り値 なし
備考 エクスクルーシブヘッダの$F0とEOXの$F7は自動送信される。
DEVICE IDを-1とすると以前設定したものが選択される。最初の使用時に
省略した場合はドライバ内のデフォルト値が選択される。
MAKER IDをRoland($41)とした場合はデータ列をローランド・エクスクルーシブ
フォーマットのデータとみなし、コマンドメッセージ(DT2:$12)やチェックサム
バイト付きで送信する。
MAKER IDをYAMAHA($43)とした場合はデータ列をヤマハ・エクスクルーシブ
フォーマットのデータとみなし、データ長やチェックサムバイト付きで送信す
る。
*-----------------------------------------------------------------------------
int zm_set_eox_wait( int port,int wait );
機能 EOX送信後のウェイトを設定する
引数 int port:MIDIポートの番号(0-2)
-1はカレントMIDI-OUTを使用
int wait:0-65535
戻り値 それまでのウェイト値
*-----------------------------------------------------------------------------
int zm_midi_inp1( int port,int mode );
機能 MIDIデータの1バイト入力
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
int mode:0 1回受信を試みてすぐ帰還
1 受信するまで無限ループ
戻り値 d31=1 読みこぼし発生 0:正常読みだし
d15=1 データ無し 0:データ有り
d0-d7 読みだしデータ
*-----------------------------------------------------------------------------
int zm_midi_out1( int port,char data );
機能 MIDIデータの1バイト出力
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
char data:送信データ(0-255)
戻り値 0:正常終了
0以外:エラーコード
*-----------------------------------------------------------------------------
int zm_midi_rec( int port );
機能 MIDIデータのレコーディング開始
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
戻り値 0:正常終了
0以外:エラーコード
*-----------------------------------------------------------------------------
int zm_midi_rec_end( int port );
機能 MIDIデータのレコーディング終了
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
戻り値 0:正常終了
0以外:エラーコード
*-----------------------------------------------------------------------------
int zm_gs_reset( int port,int id );
機能 GS音源の初期化
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
int id:DEVICE ID(0-127,-1:以前の値を使用)
戻り値 0:正常終了
0以外:エラーコード
*-----------------------------------------------------------------------------
int zm_gs_partial_reserve( int port,int id,char *rsv );
機能 GS音源のパーシャルリザーブ
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
int id:DEVICE ID(0-127,-1:以前の値を使用)
char *rsv:パート1~パート16までのパーシャルリザーブ値が
格納されているアドレス
戻り値 0:正常終了
0以外:エラーコード
備考 char *rsvからの領域にパーシャルリザーブ値を16パート分格納しておく。
また、合計が楽器の最大同時発声数以下にならなければならない。
rsv[0]=パート1,rsv[1]=パート2…,rsv[15]=パート16というふうに対応する。
なお、パート10はリズムパートに対応する。
idを-1とすると以前設定したものが選択される。最初の使用時に
省略した場合はZMUSIC内のデフォルト値$10が選択される。
*-----------------------------------------------------------------------------
int zm_gs_reverb( int port,int size,int id,char *rvb );
機能 GS音源のリバーブ・パラメータの設定
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
int size:リバーブパラメータ・データサイズ(1-7)
int id:DEVICE ID(0-127,-1:以前の値を使用)
char *rvb:リバーブパラメータ格納バッファ
戻り値 0:正常終了
0以外:エラーコード
備考 char *rvbからの領域にリバーブパラメータを記述しておく。sizeは7以内で、
指定したsize個分のパラメータがGS音源へ送信される。
idを-1とすると以前設定したものが選択される。最初の使用時に
省略した場合はZMUSIC内のデフォルト値$10が選択される
rvb[0]:REVERB MACRO 00:Room1,01:Room2,02:Room3,03:Hall1,04:Hall2
05:Plate,06:Delay,07:Panning Delay(FB)
rvb[1]:REVERB CHARACTER ($00~$07)
rvb[2]:REVERB PRE-LPF ($00~$07)
rvb[3]:REVERB LEVEL ($00~$7F)
rvb[4]:REVERB TIME ($00~$7F)
rvb[5]:REVERB DELAY FEEDBACK ($00~$7F)
rvb[6]:REVERB SEND LEVEL TO CHORUS ($00~$7F)
(SC55マニュアルp79参照)
*-----------------------------------------------------------------------------
int zm_gs_chorus( int port,int size,int id,char *cho );
機能 GS音源のコーラス・パラメータの設定
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
int size:コーラスパラメータ・データサイズ(1-8)
int id:DEVICE ID(0-127,-1:以前の値を使用)
char *cho:コーラスパラメータ格納バッファ
戻り値 0:正常終了
0以外:エラーコード
備考 char *choからの領域にコーラスパラメータを記述しておく。sizeは8以内で
指定したsize個分のパラメータがGS音源へ送信される。
idを-1とすると以前設定したものが選択される。最初の使用時に
省略した場合はZMUSIC内のデフォルト値$10が選択される。
cho[0]:CHORUS MACRO 00:Chorus1,01:Chorus2,02:Chorus3,03:Chorus4
04:Feedback Chorus,05:Flanger,06:Short Delay
07:Short Delay(FB)
cho[1]:CHORUS PRE-LPF ($00~$07)
cho[2]:CHORUS LEVEL ($00~$7F)
cho[3]:CHORUS FEEDBACK ($00~$7F)
cho[4]:CHORUS DELAY ($00~$7F)
cho[5]:CHORUS RATE ($00~$7F)
cho[6]:CHORUS DEPTH ($00~$7F)
cho[7]:CHORUS SEND LEVEL TO REVERB ($00~$7F)
(SC55マニュアルp79参照)
*-----------------------------------------------------------------------------
int zm_gs_part_parameter( int port,int size,int pt_id,char *param );
機能 GS音源のパート・パラメータの設定
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
int size:パートパラメータ・データサイズ(1-119)
int pt_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
d16-d31=PART NUMBER(1-16)
char *param:パートパラメータ格納バッファ
戻り値 0:正常終了
0以外:エラーコード
備考 char *paramからの領域にパートパラメータを記述しておく。sizeは119以内で
指定したsize個分のパラメータがGS音源へ送信される。
pt_idのd0-d15を-1とすると以前設定したものが選択される。最初の使用時に
省略した場合はZMUSIC内のデフォルト値$10が選択される。
param[0]:Rx CHANNEL (1~16,17=OFF)
param[1]:Rx PITCH BEND (0~1:OFF/ON)
param[2]:Rx CH PRESSURE(CAf) (0~1:OFF/ON)
param[3]:Rx PROGRAM CHANGE (0~1:OFF/ON)
param[4]:Rx CONTROL CHANGE (0~1:OFF/ON)
param[5]:Rx POLY PRESSURE(PAf) (0~1:OFF/ON)
param[6]:Rx NOTE MESSAGE (0~1:OFF/ON)
param[7]:Rx RPN (0~1:OFF/ON)
param[8]:Rx NRPN (0~1:OFF/ON)
param[9]:Rx MODURATION (0~1:OFF/ON)
param[10]:Rx VOLUME (0~1:OFF/ON)
param[11]:Rx PANPOT (0~1:OFF/ON)
param[12]:Rx EXPRESSION (0~1:OFF/ON)
param[13]:Rx HOLD1 (0~1:OFF/ON)
param[14]:Rx PORTAMENTO (0~1:OFF/ON)
param[15]:Rx SOSTENUTO (0~1:OFF/ON)
param[16]:Rx SOFT (0~1:OFF/ON)
param[17]:MONO/POLY MODE (0~1:MONO/POLY)
param[18]:ASSIGN MODE (0:SINGLE,1:LIMITED-MULTI,2:FULL-MULTI)
param[19]:USE FOR RHYTHM PART (0:OFF,1:MAP1,2:MAP2)
param[20]:PITCH KEY SHIFT ($28~$58:-24~+24[semitone])
param[21]:PITCH OFFSET FINE(upper) ($08~$F8:-12.0~+12.0[Hz])
param[22]:PITCH OFFSET FINE(lower) 〃
param[23]:PART LEVEL (0~127)
param[24]:VELOCITY SENSE DEPTH (0~127)
param[25]:VELOCITY SENSE OFFSET (0~127)
param[26]:PART PANPOT (0:RANDOM,01(LEFT)~64~127(RIGHT))
param[27]:KEY RANGE LOW (0~127:C-1~G9)
param[28]:KEY RANGE HIGH (0~127:C-1~G9)
param[29]:CC1 CONTROL NUMBER (0~127)
param[30]:CC2 CONTROL NUMBER (0~127)
param[31]:CHORUS SEND DEPTH (0~127)
param[32]:REVERB SEND DEPTH (0~127)
param[33]:Vibrato rate ($0E~$72:-50~+50)
param[34]:Vibrato depth ($0E~$72:-50~+50)
param[35]:TVF cutoff freq. ($0E~$50:-50~+16)
param[36]:TVF resonance ($0E~$72:-50~+50)
param[37]:TVF&TVA Env.attack ($0E~$72:-50~+50)
param[38]:TVF&TVA Env.decay ($0E~$72:-50~+50)
param[39]:TVF&TVA Env.release ($0E~$72:-50~+50)
param[40]:Vibrato delay ($0E~$72:-50~+50)
param[41]:SCALE TUNING C ($00~$7F:-64~+63[cent])
param[42]:SCALE TUNING C# ($00~$7F:-64~+63[cent])
param[43]:SCALE TUNING D ($00~$7F:-64~+63[cent])
param[44]:SCALE TUNING D# ($00~$7F:-64~+63[cent])
param[45]:SCALE TUNING E ($00~$7F:-64~+63[cent])
param[46]:SCALE TUNING F ($00~$7F:-64~+63[cent])
param[47]:SCALE TUNING F# ($00~$7F:-64~+63[cent])
param[48]:SCALE TUNING G ($00~$7F:-64~+63[cent])
param[49]:SCALE TUNING G# ($00~$7F:-64~+63[cent])
param[50]:SCALE TUNING A ($00~$7F:-64~+63[cent])
param[51]:SCALE TUNING A# ($00~$7F:-64~+63[cent])
param[52]:SCALE TUNING B ($00~$7F:-64~+63[cent])
param[53]:MOD PITCH CONTROL ($28~$58:-24~+24[semitone])
param[54]:MOD TVF CUTOFF CONTROL ($00~$7F:-9600~+9600[CENT])
param[55]:MOD AMPLITUDE CONTROL ($00~$7F:-100.0~+100.0[%])
param[56]:MOD LFO1 RATE CONTROL ($00~$7F:-10.0~+10.0[Hz])
param[57]:MOD LFO1 PITCH DEPTH ($00~$7F:0~600[cent])
param[58]:MOD LFO1 TVF DEPTH ($00~$7F:0~2400[cent])
param[59]:MOD LFO1 TVA DEPTH ($00~$7F:0~100.0[%])
param[60]:MOD LFO2 RATE CONTROL ($00~$7F:-10.0~+10.0[Hz])
param[61]:MOD LFO2 PITCH DEPTH ($00~$7F:0~600[cent])
param[62]:MOD LFO2 TVF DEPTH ($00~$7F:0~2400[cent])
param[63]:MOD LFO2 TVA DEPTH ($00~$7F:0~100.0[%])
param[64]:BEND PITCH CONTROL ($28~$58:-24~+24[semitone])
param[65]:BEND TVF CUTOFF CONTROL ($00~$7F:-9600~+9600[CENT])
param[66]:BEND AMPLITUDE CONTROL ($00~$7F:-100.0~+100.0[%])
param[67]:BEND LFO1 RATE CONTROL ($00~$7F:-10.0~+10.0[Hz])
param[68]:BEND LFO1 PITCH DEPTH ($00~$7F:0~600[cent])
param[69]:BEND LFO1 TVF DEPTH ($00~$7F:0~2400[cent])
param[70]:BEND LFO1 TVA DEPTH ($00~$7F:0~100.0[%])
param[71]:BEND LFO2 RATE CONTROL ($00~$7F:-10.0~+10.0[Hz])
param[72]:BEND LFO2 PITCH DEPTH ($00~$7F:0~600[cent])
param[73]:BEND LFO2 TVF DEPTH ($00~$7F:0~2400[cent])
param[74]:BEND LFO2 TVA DEPTH ($00~$7F:0~100.0[%])
param[75]:CAf PITCH CONTROL ($28~$58:-24~+24[semitone])
param[76]:CAf TVF CUTOFF CONTROL ($00~$7F:-9600~+9600[CENT])
param[77]:CAf AMPLITUDE CONTROL ($00~$7F:-100.0~+100.0[%])
param[78]:CAf LFO1 RATE CONTROL ($00~$7F:-10.0~+10.0[Hz])
param[79]:CAf LFO1 PITCH DEPTH ($00~$7F:0~600[cent])
param[80]:CAf LFO1 TVF DEPTH ($00~$7F:0~2400[cent])
param[81]:CAf LFO1 TVA DEPTH ($00~$7F:0~100.0[%])
param[82]:CAf LFO2 RATE CONTROL ($00~$7F:-10.0~+10.0[Hz])
param[83]:CAf LFO2 PITCH DEPTH ($00~$7F:0~600[cent])
param[84]:CAf LFO2 TVF DEPTH ($00~$7F:0~2400[cent])
param[85]:CAf LFO2 TVA DEPTH ($00~$7F:0~100.0[%])
param[86]:PAf PITCH CONTROL ($28~$58:-24~+24[semitone])
param[87]:PAf TVF CUTOFF CONTROL ($00~$7F:-9600~+9600[CENT])
param[88]:PAf AMPLITUDE CONTROL ($00~$7F:-100.0~+100.0[%])
param[89]:PAf LFO1 RATE CONTROL ($00~$7F:-10.0~+10.0[Hz])
param[90]:PAf LFO1 PITCH DEPTH ($00~$7F:0~600[cent])
param[91]:PAf LFO1 TVF DEPTH ($00~$7F:0~2400[cent])
param[92]:PAf LFO1 TVA DEPTH ($00~$7F:0~100.0[%])
param[93]:PAf LFO2 RATE CONTROL ($00~$7F:-10.0~+10.0[Hz])
param[94]:PAf LFO2 PITCH DEPTH ($00~$7F:0~600[cent])
param[95]:PAf LFO2 TVF DEPTH ($00~$7F:0~2400[cent])
param[96]:PAf LFO2 TVA DEPTH ($00~$7F:0~100.0[%])
param[97]:CC1 PITCH CONTROL ($28~$58:-24~+24[semitone])
param[98]:CC1 TVF CUTOFF CONTROL ($00~$7F:-9600~+9600[CENT])
param[99]:CC1 AMPLITUDE CONTROL ($00~$7F:-100.0~+100.0[%])
param[100]:CC1 LFO1 RATE CONTROL ($00~$7F:-10.0~+10.0[Hz])
param[101]:CC1 LFO1 PITCH DEPTH ($00~$7F:0~600[cent])
param[102]:CC1 LFO1 TVF DEPTH ($00~$7F:0~2400[cent])
param[103]:CC1 LFO1 TVA DEPTH ($00~$7F:0~100.0[%])
param[104]:CC1 LFO2 RATE CONTROL ($00~$7F:-10.0~+10.0[Hz])
param[105]:CC1 LFO2 PITCH DEPTH ($00~$7F:0~600[cent])
param[106]:CC1 LFO2 TVF DEPTH ($00~$7F:0~2400[cent])
param[107]:CC1 LFO2 TVA DEPTH ($00~$7F:0~100.0[%])
param[108]:CC2 PITCH CONTROL ($28~$58:-24~+24[semitone])
param[109]:CC2 TVF CUTOFF CONTROL ($00~$7F:-9600~+9600[CENT])
param[110]:CC2 AMPLITUDE CONTROL ($00~$7F:-100.0~+100.0[%])
param[111]:CC2 LFO1 RATE CONTROL ($00~$7F:-10.0~+10.0[Hz])
param[112]:CC2 LFO1 PITCH DEPTH ($00~$7F:0~600[cent])
param[113]:CC2 LFO1 TVF DEPTH ($00~$7F:0~2400[cent])
param[114]:CC2 LFO1 TVA DEPTH ($00~$7F:0~100.0[%])
param[115]:CC2 LFO2 RATE CONTROL ($00~$7F:-10.0~+10.0[Hz])
param[116]:CC2 LFO2 PITCH DEPTH ($00~$7F:0~600[cent])
param[117]:CC2 LFO2 TVF DEPTH ($00~$7F:0~2400[cent])
param[118]:CC2 LFO2 TVA DEPTH ($00~$7F:0~100.0[%])
(SC55のマニュアルp75,p79~p80参照)
*-----------------------------------------------------------------------------
int zm_gs_drum_setup( int port,int size,int dr_id,char *param );
機能 GS音源のドラム・セットアップ設定
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
int size:ドラム・セットアップ・パラメータ・データサイズ(1-8)
int dr_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
d16-d23=NOTE NUMBER(0-127)
d24-d31=MAP NUMBER(0-1)
char *param:ドラム・セットアップ・パラメータ格納バッファ
戻り値 0:正常終了
0以外:エラーコード
備考 char *paramからの領域にドラム・セットアップ・パラメータを記述しておく。
sizeは8以内で指定したsize個分のパラメータがGS音源へ送信される。
idを-1とすると以前設定したものが選択される。最初の使用時に
省略した場合はZMUSIC内のデフォルト値$10が選択される。
param[0]:PLAY KEY NUMBER (0~127)
param[1]:LEVEL (0~127)
param[2]:ASSIGN GROUP NUMBER (0:NON,1~127)
param[3]:PANPOT (0:RANDOM,01(LEFT)~64~127(RIGHT))
param[4]:REVERB DEPTH (0~127:0.0~1.0)
param[5]:CHORUS DEPTH (0~127:0.0~1.0)
param[6]:Rx NOTE OFF (0~1:OFF/ON)
param[7]:Rx NOTE ON (0~1:OFF/ON)
(SC55マニュアルp75,p82参照)
*-----------------------------------------------------------------------------
int zm_gs_drum_name( int port,int size,int mp_id,char *name );
機能 GS音源のドラム・セット名設定
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
int size:ドラム・セットアップ・パラメータ・データサイズ(1-8)
int mp_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
d16-d31=MAP NUMBER(0,1)
char *name:ドラム・セット名文字列格納バッファ
戻り値 0:正常終了
0以外:エラーコード
備考 文字列は12文字以内でchar *nameからの領域に文字列を記述しておく。
idを-1とすると以前設定したものが選択される。最初の使用時に
省略した場合はZMUSIC内のデフォルト値$10が選択される。
(SC55マニュアルp82参照)
*-----------------------------------------------------------------------------
int zm_gs_print( int port,int size,int id,char *mes );
機能 GS音源の画面へのメッセージ出力
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
int size:メッセージ長(1-32)
int id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
char *mes:文字列格納バッファ
戻り値 0:正常終了
0以外:エラーコード
備考 メッセージは32文字以内でchar *mesからの領域に文字列を記述しておく。
idを-1とすると以前設定したものが選択される。最初の使用時に
省略した場合はZMUSIC内のデフォルト値$10が選択される。
*-----------------------------------------------------------------------------
int zm_gs_display( int port,int id,short *pattern );
機能 GS音源の画面へのドットパターン出力
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
int id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
short *pattern:ドットパターン格納バッファ
戻り値 0:正常終了
0以外:エラーコード
備考 short *patternからの領域にドットパターンを記述しておく。
idを-1とすると以前設定したものが選択される。最初の使用時に
省略した場合はZMUSIC内のデフォルト値$10が選択される。
例
/*SC55の画面に"善"を表示する*/
short d[16]={ %0001000000010000,
%0000100000100000,
%0111111111111100,
%0000000100000000,
%0011111111111000,
%0000000100000000,
%0111111111111100,
%0001000100010000,
%0000100100100000,
%1111111111111110,
%0000000000000000,
%0011111111111000,
%0010000000001000,
%0010000000001000,
%0011111111111000,
%0010000000001000}
gs_display(-1,-1,d);
*-----------------------------------------------------------------------------
int zm_gm_system_on( int port );
機能 GM音源のリセット
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
戻り値 0:正常終了
0以外:エラーコード
*-----------------------------------------------------------------------------
int zm_sc88_mode_set( int port,int md_id );
機能 SC88モード設定
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
int md_id:d0-d15=DEVICE ID(0-127,-1:以前の値を使用)
d16-d31=SC88 MODE(0:Single, 1:Double)
戻り値 0:正常終了
0以外:エラーコード
備考 idを-1とすると以前設定したものが選択される。最初の使用時に
省略した場合はZMUSIC内のデフォルト値$10が選択される。
*-----------------------------------------------------------------------------
int zm_sc88_reverb( int port,int size,int id,char *rvb );
機能 SC88のリバーブ・パラメータの設定
引数 int port:MIDIポートの番号(0-3)
-1はカレントMIDI-OUTを使用
int size:リバーブパラメータ・データサイズ(1-8)
int id:DEVICE ID(0-127,-1:以前の値を使用)
char *rvb:リバーブパラメータ格納バッファ
戻り値 0:正常終了
0以外:エラーコード
備考 char *rvbからの領域にリバーブパラメータを記述しておく。sizeは8以内で、
指定したsize個分のパラメータがSC88へ送信される。
idを-1とすると以前設定したものが選択される。最初の使用時に
省略した場合はZMUSIC内のデフォルト値$10が選択される