alSeqPlayer.htm
6.04 KB
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
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>
<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.03j">
</HEAD>
<BODY>
<P>
<B><FONT FACE="Arial">alSeqPlayer(3P)</FONT></B>
<P>
<B>関数名</B>
<P>
alSeqPlayer
<P>
→ NINTENDO64用MIDIシーケンスプレイヤールーチン
<P>
構文
<P>
#include <libaudio.h>
<P>
void alSeqpNew(ALSeqPlayer *seqp, ALSeqpConfig *config);
<P>
void alSeqpDelete(ALSeqPlayer *seqp);
<P>
void alSeqpSetSeq(ALSeqPlayer *seqp, ALSeq *seq);
<P>
ALSeq *alSeqpGetSeq(ALSeqPlayer *seqp);
<P>
void alSeqpSetBank(ALSeqPlayer *seqp,ALBank *b);
<P>
s32 alSeqpGetState(ALSeqPlayer *seqp);
<P>
void alSeqpPlay(ALSeqPlayer *seqp);
<P>
void alSeqpStop(ALSeqPlayer *seqp);
<P>
void alSeqpSetTempo(ALSeqPlayer *seqp, s32 tempo);
<P>
s32 alSeqpGetTempo(ALSeqPlayer *seqp);
<P>
s16 alSeqpGetVol(ALSeqPlayer *seqp);
<P>
void alSeqpSetVol(ALSeqPlayer *seqp, s16 vol);
<P>
void alSeqpSetChlProgram(ALSeqPlayer *seqp, u8 chan,
u8 prog);
<P>
s32 alSeqpGetChlProgram(ALSeqPlayer *seqp, u8 chan);
<P>
void alSeqpSetChlFXMix(ALSeqPlayer *seqp, u8 chan,
u8 fxmix);
<P>
u8 alSeqpGetChlFXMix(ALSeqPlayer *seqp, u8 chan);
<P>
void alSeqpSetChlVol(ALSeqPlayer *seqp, u8 chan,
u8 vol);
<P>
u8 alSeqpGetChlVol(ALSeqPlayer *seqp, u8 chan);
<P>
void alSeqpSetChlPan(ALSeqPlayer *seqp, u8 chan,
ALPan pan);
<P>
ALPan alSeqpGetChlPan(ALSeqPlayer *seqp, u8 chan);
<P>
void alSeqpSetChlPriority(ALSeqPlayer *seqp, u8 chan,
u8 priority);
<P>
u8 alSeqpGetChlPriority(ALSeqPlayer *seqp, u8 chan);
<P>
void alSeqpSendMidi(ALSeqPlayer *seqp, s32 ticks,
u8 status,
<P>
u8 byte1, u8 byte2);
<P>
void alSeqpLoop(ALSeqPlayer *seqp, ALSeqMarker *start,
<P>
ALSeqMarker *end, s32 count); <BR>
<P>
<B>説明</B> <BR>
<P>
NINTEDNO64オーディオライブラリは、関数名がalSeqpで始まるType0のMIDIシーケンスプレイヤーとalCSPで始まるコンパクトMIDIシーケンスプレイヤーのどちらかを使うことにより、MIDIシーケンスの再生をサポートします。
<P>
このman pageは、Type0のMIDIシーケンスプレイヤーの詳細を説明します。コンパクトMIDIシーケンスプレイヤーの詳細については、<A HREF="alCSeqPlayer.htm" >alCSeqPlayer</A>のman
pageを見てください。2つのMIDIDプレイヤーの原理的な違いは、ループ処理とデータの圧縮です。詳細は、NINTENDO64プログラムマニュアルのオーディオライブラリの章とオーディオフォーマットの章で説明されています。
<BR>
<P>
シーケンスプレイヤーは、シーケンスの再生処理をしますが、実際のシーケンスデータは、シーケンスによって処理されます。
<BR>
<P>
シーケンスプレイヤーを使うには、最初にALSeqPlayer構造体を初期化する必要があります。これは、<A HREF="alseqpnew.htm">alSeqpNew</A>の呼び出しにより行われます。
<BR>
<P>
ALSeqPlayer構造体の初期化後、<A HREF="alseqpsetbank.htm">alSeqpSetBank</A>と<A HREF="alSeqpSetSeq.htm">alSeqpSetSeq</A>を呼び出して、バンクとシーケンスを設定する必要があります。
<P>
シーケンスプレイヤーの演奏を開始するには<A HREF="alSeqpPlay.htm">alSeqpPlay</A>を呼び出します。またシーケンスプレイヤーを停止するには<A HREF="alSeqpStop.htm">alSeqpStop</A>を呼び出します。シーケンスプレイヤーは、一度に1つのシーケンスだけを扱うことが出来ます。新たなシーケンスの演奏の前には演奏中のシーケンスを止めなければなりません。シーケンスの演奏中には、バンクの切り替えを行ってはなりません。alSeqpGetStateを用いることによりシーケンスプレイヤーが完全に止まったかどうかを確かめることが出来ます。<A HREF="alseqpplay.htm">alSeqpPlay</A>を呼び出すと、全てのシーケンスの処理が止まり、全ての音符をオフにします。
<P>
シーケンスが停止したときに、巻き戻されずにカレント位置を保持します。これにより、<A HREF="alseqpplay.htm">alSeqpPlay</A>を呼び出すことでシーケンス演奏を停止位置から再開することが出来ます。<A HREF="alseqpstop.htm">alSeqpStop</A>呼び出しにより停止したサスティン中の音符は再開されることはなく、新しい音符だけが処理されます。
<P>
シーケンスの巻き戻しをするには、シーケンス中の別の位置へ再配置します。<A HREF="alseqnewmarker.htm">alSeqNewMarker</A>を呼んで、望みの位置へALSeqMarkerをおくことが出来ます。このマーカーは<A HREF="alseqsetloc.htm">alSeqSetLoc</A>を呼んでシーケンスの巻き戻しや、位置の変更を行います。注意として、これらのコールはチャンネル再生状態に影響を与えないので、チャンネルパラメータ(たとえば、プログラム、ボリューム、パン等)はそのシーケンスの位置に合わせて設定をしなければなりません。
<P>
チャンネルパラメータはそれぞれの独立した関数呼び出し、または<A HREF="alSeqpSendMidi.htm">alSeqpSendMidi</A>により対応するMIDIデータを送信することで行うことが出来ます。<A HREF="alSeqpSendMidi.htm">alSeqpSendMidi</A>により、音楽をリアルタイムに生成することが出来ます。
<P>
AlSeqpLoopを呼ぶことで、単一のループを生成することが出来ます。最初に開始点、終了点を生成し、設定しなければなりません。独立したトラック毎のループはシーケンスプレイヤーではサポートされていません。(ループに関しては圧縮MIDIシーケンスプレイヤー、<A HREF="alCSeqPlayer.htm">alCSeqPlayer</A>を参照して下さい。)
<P>
<B>参照</B>
<P>
<A HREF="alSeq.htm">alSeq(3P)</A>, <A HREF="alSeqpNew.htm">alSeqpNew(3P)</A>,
<A HREF="alSeqpDelete.htm">alSeqpDelete(3P)</A>, <A HREF="alSeqpSetSeq.htm">alSeqpSetSeq(3P),</A>
<P>
<A HREF="alSeqpGetSeq.htm">alSeqpGetSeq(3P)</A>, <A HREF="alSeqpPlay.htm">alSeqpPlay(3P)</A>,
<A HREF="alSeqpStop.htm">alSeqpStop(3P)</A>, <A HREF="alSeqpSetBank.htm">alSeqpSetBank(3P)</A>,
<P>
<A HREF="alSeqpSetTempo.htm">alSeqpSetTempo(3P)</A>, <A HREF="alSeqpGetTempo.htm">alSeqpGetTempo(3P)</A>,
<A HREF="alSeqpGetVol.htm">alSeqpGetVol(3P)</A>,
<P>
<A HREF="alSeqpSetVol.htm">alSeqpSetVol(3P)</A>, <A HREF="alSeqpSetChlProgram.htm">alSeqpSetChlProgram(3P)</A>,
<A HREF="alSeqpGetChlProgram.htm">alSeqpGetChlProgram(3P)</A>,
<P>
<A HREF="alSeqpSetChlFXMix.htm">alSeqpSetChlFXMix(3P)</A>, <A HREF="alSeqpGetChlFXMix.htm">alSeqpGetChlFXMix(3P)</A>,
<A HREF="alSeqpSetChlPan.htm">alSeqpSetChlPan(3P)</A>,
<P>
<A HREF="alSeqpGetChlPan.htm">alSeqpGetChlPan(3P)</A>, <A HREF="alSeqpSetChlVol.htm">alSeqpSetChlVol(3P)</A>,
<A HREF="alSeqpGetChlVol.htm">alSeqpGetChlVol(3P)</A>,
<P>
<A HREF="alSeqpSetChlPriority.htm">alSeqpSetChlPriority(3P)</A>,
<A HREF="alSeqpGetChlPriority.htm">alSeqpGetChlPriority(3P)</A>,
<A HREF="alSeqpSendMidi.htm">alSeqpSendMidi(3P)</A>
<P>
</BODY>
</HTML>