質問編集履歴

2

MIDIデータ構造の追加

2018/01/22 08:53

投稿

zakky79
zakky79

スコア23

test CHANGED
File without changes
test CHANGED
@@ -85,3 +85,119 @@
85
85
  long lRet;
86
86
 
87
87
  ```
88
+
89
+
90
+
91
+ MIDIデータ自体は、プログラムで作りました。フリーなどでダウンロードできるものではありません。TIMEが同じ時にその音が二つ鳴ります。チャンネルの42はハイハット。36はバスドラム。38はスネアドラムです。
92
+
93
+ ```ここに言語を入力
94
+
95
+ #include <stdio.h>
96
+
97
+ #include <MIDIData.h>
98
+
99
+ int main() {
100
+
101
+ MIDIData* pMIDIData;
102
+
103
+ MIDITrack* pMIDITrack;
104
+
105
+ /* MIDIデータの生成(フォーマット0,トラック数1,TPQNベース,120) */
106
+
107
+ pMIDIData = MIDIData_Create(MIDIDATA_FORMAT0, 1, MIDIDATA_TPQNBASE, 120);
108
+
109
+ if (pMIDIData == NULL) {
110
+
111
+ printf("MIDIデータの生成に失敗しました。\n");
112
+
113
+ return 0;
114
+
115
+ }
116
+
117
+ /* 最初のトラックへのポインタを取得 */
118
+
119
+ pMIDITrack = MIDIData_GetFirstTrack(pMIDIData);
120
+
121
+ /* イベントを挿入 */
122
+
123
+ MIDITrack_InsertTrackName(pMIDITrack, 0, "ちょうちょ"); /* タイトル */
124
+
125
+ MIDITrack_InsertTempo(pMIDITrack, 0, 60000000 / 120); /* 120BPM */
126
+
127
+ MIDITrack_InsertProgramChange(pMIDITrack, 0, 9, 0); /* Piano1 */
128
+
129
+ /* ノートイベントを挿入 Time ch key vel dur */
130
+
131
+ MIDITrack_InsertNote(pMIDITrack, 0, 9, 42, 100, 120);
132
+
133
+ MIDITrack_InsertNote(pMIDITrack, 0, 9, 36, 100, 120);
134
+
135
+ MIDITrack_InsertNote(pMIDITrack, 120, 9, 42, 100, 120);
136
+
137
+ MIDITrack_InsertNote(pMIDITrack, 240, 9, 42, 100, 120);
138
+
139
+ MIDITrack_InsertNote(pMIDITrack, 240, 9, 38, 100, 120);
140
+
141
+ MIDITrack_InsertNote(pMIDITrack, 360, 9, 42, 100, 120);
142
+
143
+ MIDITrack_InsertNote(pMIDITrack, 480, 9, 42, 100, 120);
144
+
145
+ MIDITrack_InsertNote(pMIDITrack, 480, 9, 36, 100, 120);
146
+
147
+ MIDITrack_InsertNote(pMIDITrack, 600, 9, 42, 100, 120);
148
+
149
+ MIDITrack_InsertNote(pMIDITrack, 600, 9, 36, 100, 120);
150
+
151
+ MIDITrack_InsertNote(pMIDITrack, 720, 9, 42, 100, 120);
152
+
153
+ MIDITrack_InsertNote(pMIDITrack, 720, 9, 38, 100, 120);
154
+
155
+ MIDITrack_InsertNote(pMIDITrack, 840, 9, 42, 100, 120);
156
+
157
+ MIDITrack_InsertNote(pMIDITrack, 960, 9, 42, 100, 120);
158
+
159
+ MIDITrack_InsertNote(pMIDITrack, 960, 9, 36, 100, 120);
160
+
161
+ MIDITrack_InsertNote(pMIDITrack, 1080, 9, 42, 100, 120);
162
+
163
+ MIDITrack_InsertNote(pMIDITrack, 1200, 9, 42, 100, 120);
164
+
165
+ MIDITrack_InsertNote(pMIDITrack, 1200, 9, 38, 100, 120);
166
+
167
+ MIDITrack_InsertNote(pMIDITrack, 1320, 9, 42, 100, 120);
168
+
169
+ MIDITrack_InsertNote(pMIDITrack, 1440, 9, 42, 100, 120);
170
+
171
+ MIDITrack_InsertNote(pMIDITrack, 1440, 9, 36, 100, 120);
172
+
173
+ MIDITrack_InsertNote(pMIDITrack, 1560, 9, 42, 100, 120);
174
+
175
+ MIDITrack_InsertNote(pMIDITrack, 1560, 9, 36, 100, 120);
176
+
177
+ MIDITrack_InsertNote(pMIDITrack, 1680, 9, 42, 100, 120);
178
+
179
+ MIDITrack_InsertNote(pMIDITrack, 1680, 9, 38, 100, 120);
180
+
181
+ MIDITrack_InsertNote(pMIDITrack, 1800, 9, 42, 100, 120);
182
+
183
+
184
+
185
+ /* エンドオブトラックイベントを挿入 */
186
+
187
+ MIDITrack_InsertEndofTrack(pMIDITrack, 1920);
188
+
189
+ /* MIDIデータを保存 */
190
+
191
+ MIDIData_SaveAsSMF(pMIDIData, "eightbeat.mid");
192
+
193
+ /* MIDIデータをメモリ上から削除 */
194
+
195
+ MIDIData_Delete(pMIDIData);
196
+
197
+ pMIDIData = NULL;
198
+
199
+ return 1;
200
+
201
+ }
202
+
203
+ ```

1

文章途中で投稿したため、追記

2018/01/22 08:53

投稿

zakky79
zakky79

スコア23

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ![![![イメージ説明](600aca2ac03b4a1bb964fb58b9429ed2.png)
6
6
 
7
- 元々のコードが単音のみしか表示させるようになっていないので、二つ同時に表示させるように変更したいのですが、どうしたらいいですか?
7
+ 元々のコードが単音のみしか表示させるようになっていないので、二つ同時に表示させるように変更したいのですが、どうしたらいいですか?アドバイスお願いします!
8
8
 
9
9
  ```c++
10
10