質問編集履歴
1
誤字修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
一度にたくさんの鍵盤を押して,MIDIデータを読み込むと,取りこぼしてしまいます.ノイズということも考えて,フォトカプラと,抵抗を入れましたが,変わりません.Mbedでリングバッファを自作して確認したため,バッファ漏れということはないと思われます.
|
8
8
|
|
9
|
-
|
9
|
+
下記に自作リンバッファのプログラムを載せておきます.プログラムが汚くてすみません,試作中なので,コメントアウト等が多くあります.間違い等ありましたら指摘お願いします.
|
10
10
|
|
11
11
|
色々調べた結果,MIDIの割り込みすら起きていないと思います.
|
12
12
|
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
//省略
|
20
20
|
|
21
|
-
volatile char getData__[
|
21
|
+
volatile char getData__[256] = {0};
|
22
22
|
volatile int writePos__ = 0;
|
23
23
|
volatile int readPos__ = 0;
|
24
24
|
volatile int available__ = 0;
|
@@ -34,7 +34,7 @@
|
|
34
34
|
{
|
35
35
|
//省略
|
36
36
|
midi.attach(Midi_RX_, RawSerial::RxIrq);
|
37
|
-
//省略
|
37
|
+
//省略
|
38
38
|
}
|
39
39
|
|
40
40
|
char read_()
|
@@ -82,51 +82,8 @@
|
|
82
82
|
if (available__ > 100) printf("Over 100");
|
83
83
|
}
|
84
84
|
|
85
|
-
/*int getData()
|
86
|
-
{
|
87
|
-
while (!midi.readable()) {}
|
88
|
-
return midi.getc();
|
89
|
-
|
85
|
+
//省略
|
90
86
|
|
91
|
-
void LEDwrite()
|
92
|
-
{
|
93
|
-
if (flag_uk == true) {
|
94
|
-
for (int i = 0; i < 12; i++) {
|
95
|
-
if (LEDlight_uk[i] == true) for (int j = i * 5; j < (i + 1) * 5; j++) uk_px.Set(j,0x0000ff);
|
96
|
-
else for (int j = i * 5; j < (i + 1) * 5; j++) uk_px.Set(j,0x000000);
|
97
|
-
}
|
98
|
-
uk.write(uk_px.getBuf());
|
99
|
-
flag_uk = false;
|
100
|
-
}
|
101
|
-
if (flag_lk == true) {
|
102
|
-
for (int i = 0; i < 12; i++) {
|
103
|
-
if (LEDlight_lk[i] == true) for (int j = i * 5; j < (i + 1) * 5; j++)lk_px.Set(j,0x00ff00);
|
104
|
-
else for (int j = i * 5; j < (i + 1) * 5; j++) lk_px.Set(j,0x000000);
|
105
|
-
}
|
106
|
-
lk.write(lk_px.getBuf());
|
107
|
-
flag_lk = false;
|
108
|
-
}
|
109
|
-
if (flag_pk == true) {
|
110
|
-
for (int i = 0; i < 12; i++) {
|
111
|
-
if (LEDlight_pk[i] == true) for (int j = i * 2; j < (i + 1) * 2; j++) pk_px.Set(j,0xff0000);
|
112
|
-
else for (int j = i * 2; j < (i + 1) * 2; j++) pk_px.Set(j,0x000000);
|
113
|
-
}
|
114
|
-
pk.write(pk_px.getBuf());
|
115
|
-
flag_pk = false;
|
116
|
-
}
|
117
|
-
}
|
118
|
-
|
119
|
-
void Model_request()
|
120
|
-
{
|
121
|
-
char send_data[6] = {0xF0,0x43,0x70,0x70,0x30,0xF7};
|
122
|
-
write_(send_data,6);
|
123
|
-
}
|
124
|
-
|
125
|
-
int map(int x, int in_min, int in_max, int out_min, int out_max)
|
126
|
-
{
|
127
|
-
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
|
128
|
-
}
|
129
|
-
|
130
87
|
```
|
131
88
|
|
132
89
|
### 補足情報(FW/ツールのバージョンなど)
|