いまどきのソフトでは簡単に調整できるみたいだけど、MIDIプログラミングでギター音の調整をすること、ネットで調べたけど、見つからず。
ArduinoのMIDI.h(ライブラリ)のコマンド一覧はあったので、MIDIプログラミングの勉強をすれば出来るようだ。
リアルなギターの音がやっぱり欲しい。
和音がうまく鳴らなかったのカイゼンしてみた。
今のままじゃあ、オモチャだなあ。
とりあえずのスケッチ。
赤字のところのようにいろんな数値を入れて調整するみたいだ。
いろんな設定が出来るらしく、ひとつひとつ当て込んで、調べている。
早くギターと同じように音を振り分けて対応させて、ChordBuddy(コードバディ)をつけて仮演奏してみたい。
ギターは6弦同時に、はじくものだということに気が付いた(笑)。
押えるだけでは、押えてない弦の音を出すことができない。
その対処を考え中。
#include <MIDI.h>MIDI_CREATE_DEFAULT_INSTANCE();int i;int j;int k;int sign;int waon[7];int notenumber[]={0,72,74,76,77,79,81,83,84,86,88,89,91,93,95,96,98,100,101};int gaugePin = 2;#define fretPin_1 8#define fretPin_2 9void setup(){MIDI.begin();// Serial.begin(9600);pinMode( 2, OUTPUT);pinMode( 3, OUTPUT);pinMode( 4, OUTPUT);pinMode( 5, OUTPUT);pinMode( 6, OUTPUT);pinMode( 7, OUTPUT);pinMode( fretPin_1, INPUT);pinMode( fretPin_2, INPUT);//MIDI.sendPitchBend(8000,1);MIDI.sendProgramChange(27,1);//MIDI.sendControlChange(73,100,1);MIDI.sendAfterTouch(1,1);}void loop() {for(i = 1 ; i < 19 ; i++){SoundRead();j++;gaugePin++;}if(sign == 1){PLAY();}k = 0;sign = 0;gaugePin = 2;for(j = 1 ; j < 7 ; j++){waon[j] = 0;}j = 1;}void SoundRead (){digitalWrite(gaugePin,HIGH);delay(50);if(digitalRead(fretPin_1) == LOW && digitalRead(fretPin_2) == HIGH){waon[j] = i;sign = 1;}i = i + 1;delay(0);if(digitalRead(fretPin_1) == HIGH && digitalRead(fretPin_2) == HIGH){waon[j] = i ;sign = 1;}i = i + 1;delay(0);if(digitalRead(fretPin_1) == HIGH && digitalRead(fretPin_2) == LOW){waon[j] = i;sign = 1;}delay(0);digitalWrite(gaugePin,LOW);delay(0);}void PLAY (){k = waon[1];if(k != 0){MIDI.sendNoteOn(notenumber[waon[1]], 1000, 1);//MIDI.sendPolyPressure(notenumber[waon[1]],10,1);delay(5);}k = waon[2];if(k != 0){MIDI.sendNoteOn(notenumber[waon[2]], 100, 1);delay(5);}k = waon[3];if(k != 0){MIDI.sendNoteOn(notenumber[waon[3]], 100, 1);delay(5);}k = waon[4];if(k != 0){MIDI.sendNoteOn(notenumber[waon[4]], 100, 1);delay(5);}k = waon[5];if(k != 0){MIDI.sendNoteOn(notenumber[waon[5]], 100, 1);delay(5);}k = waon[6];if(k != 0){MIDI.sendNoteOn(notenumber[waon[6]], 100, 1);delay(5);}delay(1000);k = waon[1];if(k != 0){MIDI.sendNoteOff(notenumber[waon[1]], 0, 1);delay(5);}k = waon[2];if(k != 0){MIDI.sendNoteOff(notenumber[waon[2]], 0, 1);delay(5);}k = waon[3];if(k != 0){MIDI.sendNoteOff(notenumber[waon[3]], 0, 1);delay(5);}k = waon[4];if(k != 0){MIDI.sendNoteOff(notenumber[waon[4]], 0, 1);delay(5);}k = waon[5];if(k != 0){MIDI.sendNoteOff(notenumber[waon[5]], 0, 1);delay(5);}k = waon[6];if(k != 0){MIDI.sendNoteOff(notenumber[waon[6]], 0, 1);delay(5);}}