Первый блин. Teensy как сенсорный midi-контроллер.
- Войдите на сайт для отправки комментариев
Втр, 24/09/2019 - 19:34
Приветствую! Первый свой проект (копипасту, разумеется) в среде Arduino решил делать попроще, но поэффектней - реализация сенсорного миди контроллера на плате Teensy 3.2, вот пример: https://www.youtube.com/watch?v=oSeH9Q4-yL8. Буду краток: работать работает, но не как в видео - в оригинале каждое нажатие обрабатывается как одно, вне зависимости от его длительности, в моём случае - длительные касания звучат как множественные короткие, как если бы я колотил по сенсорам. С пониманием кода пока проблемы, пытаюсь разбираться, но пока глаза разбегаются. Подскажите - в какую сторону копать?
Код такой:
unsigned int thresh = 3000; unsigned int data; int tickTime = 100; byte readPins[] = { 0, 1, 3, 4, 23, 22, 19, 18 }; byte pitches[] = { 60, 62, 64, 65, 67, 69, 71, 72 }; byte playFlag[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; byte tick[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; void setup() { usbMIDI.setHandleControlChange(OnControlChange); pinMode(13, OUTPUT); digitalWrite(13, HIGH); } void loop() { checkTouch(); checkTick(); usbMIDI.read(); } void checkTouch() { for(int i = 0; i < 8; i++) { data = touchRead(readPins[i]); if(data > thresh) { usbMIDI.sendControlChange(1, constrain(map(data, thresh, 65535, 0, 127), 0, 127), 1); if(playFlag[i] == 0) { usbMIDI.sendNoteOn(pitches[i], 127, 1); playFlag[i] = 1; tick[i] = tickTime; } } } } void checkTick() { for(int i = 0; i < 8; i++) { if(tick[i] == 0 && playFlag[i] == 1) { playFlag[i] = 0; usbMIDI.sendNoteOff(pitches[i], 0, 1); } if(tick[i] > 0) { tick[i] = tick[i] - 1; } } } void OnControlChange(byte channel, byte controller, byte value) { digitalWrite(13, HIGH); thresh = value * 100; delay(10); digitalWrite(13, LOW); }
Спасибо!
С пониманием кода пока проблемы, пытаюсь разбираться, но пока глаза разбегаются. Подскажите - в какую сторону копать?
В сторону понимания кода, разумеется. Брать книжку, внимательно изучать конструкции языка и по ходу дела пытаться понять, что в этом коде написано.
Как сказал гуру (уж поверьте) - с понимания кода и чтения литературы по вопросам возникающим. Сейчас скажу - вот тут проблема, вылезет другая. А если самому не хочется разбираться - и не надо было в это "лезть". В платный раздел - все сделают "в шоколаде".