音再現!(調整失敗)サイレントギターシンセ自作 | ..あちゃ! no mic's

..あちゃ! no mic's

クラウドファンディング予定~2026年度
何度でもチャレンジ!
ただいまソーラーピックアップのテスト中

SANTA no Mix

サウンドフォントを間違えているかもしれない。
調整なんてしている時間はない。
なんか違う音がする。
各弦の残響時間と弦ごとの遅延を再現すること大切。
ChordBuddyを使っている。
情けない。


立派な音がすると思ったが、やはりダメ。
調整が必要。
Arduinoスケッチを残しておく。
あくまでも参考に。
途中経過ですんで。


#include <MIDI.h>

MIDI_CREATE_DEFAULT_INSTANCE();

int i;
int j;
int k;
int sign;
int waon[7];
//int notenumber[]={0,36,38,40,41,43,45,47,48,50,52,53,55,57,59,60,62,64,65,67,69,71,72,74,76,77,79,81,83,84,86,88,89,91,93,95,96,98,100,101};
int notenumber[]{0,41,42,43,46,47,48,51,52,53,56,57,58,60,61,62,65,66,67};
int gaugePin = 2;

#define fretPin_1 8
#define fretPin_2 9

void 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(25,1); 
     //MIDI.sendControlChange(73,100,1);
     MIDI.sendAfterTouch(1,1); 
}

void loop() {
  for(i = 1 ; i < 19 ; i++){ 
    SoundRead();
    j++;
    gaugePin++;
  }
   k = 777;
 if(sign == 1){
   PLAY();
 }
  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) == LOW){
        waon[j] = 0;
     }
     delay(5);
     if(digitalRead(fretPin_1) == LOW && digitalRead(fretPin_2) == HIGH){
        waon[j] = i;
        sign = 1;
     }
     i = i + 1;
     delay(5);
      if(digitalRead(fretPin_1) == HIGH && digitalRead(fretPin_2) == HIGH){
        waon[j] = i ;
        sign = 1;
     } 
     i = i + 1; 
      delay(5);
      if(digitalRead(fretPin_1) == HIGH && digitalRead(fretPin_2) == LOW){
        waon[j] = i;
        sign = 1;
     }
      delay(5);
  digitalWrite(gaugePin,LOW);
  delay(5);
}

 void PLAY ()
 {
     k = waon[1];
      switch (k) {
          case 1:
            MIDI.sendNoteOn(notenumber[waon[1]], 100, 1);
            //MIDI.sendPolyPressure(notenumber[waon[1]],10,1);
            break;
          case 2:
             MIDI.sendNoteOn(notenumber[waon[1]], 100, 1); 
             break;
          case 3:
             MIDI.sendNoteOn(notenumber[waon[1]], 100, 1); 
             break;  
          case 0:
             MIDI.sendNoteOn(40, 100, 1);
             break;
       delay(100);
     }
     
     k = waon[2];
      switch (k) {
           case 4:
             MIDI.sendNoteOn(notenumber[waon[2]], 100, 1);
             break;
           case 5:
             MIDI.sendNoteOn(notenumber[waon[2]], 100, 1);
             break;
           case 6:
             MIDI.sendNoteOn(notenumber[waon[2]], 100, 1);
             break;
           case 0:
             MIDI.sendNoteOn(45, 100, 1);
             break;
      delay(100);
      }
      
     k = waon[3];
       switch (k) {
           case 7:
             MIDI.sendNoteOn(notenumber[waon[3]], 100, 1);
             break;
           case 8:
             MIDI.sendNoteOn(notenumber[waon[3]], 100, 1);
             break;
           case 9:
             MIDI.sendNoteOn(notenumber[waon[3]], 100, 1);
             break;
           case 0:
             MIDI.sendNoteOn(50, 100, 1);
             break;
        delay(100);
     }
     
     k = waon[4];
      switch (k) {
           case 10:
             MIDI.sendNoteOn(notenumber[waon[4]], 100, 1);
             break;
           case 11:
             MIDI.sendNoteOn(notenumber[waon[4]], 100, 1);
             break;
           case 12:
             MIDI.sendNoteOn(notenumber[waon[4]], 100, 1);
             break;
           case 0:
             MIDI.sendNoteOn(55, 100, 1);
             break;
        delay(100);
      }
      
     k = waon[5];
      switch (k) {
           case 13:
             MIDI.sendNoteOn(notenumber[waon[5]], 100, 1);
             break;
           case 14:
             MIDI.sendNoteOn(notenumber[waon[5]], 100, 1);
             break;
           case 15:
             MIDI.sendNoteOn(notenumber[waon[5]], 100, 1);
             break;
           case 0:
             MIDI.sendNoteOn(59, 100, 1);
             break;
        delay(100);
     }
     
     k = waon[6];
      switch (k) {
           case 16:
             MIDI.sendNoteOn(notenumber[waon[6]], 100, 1);
             break;
           case 17:
             MIDI.sendNoteOn(notenumber[waon[6]], 100, 1);
             break;
           case 18:
             MIDI.sendNoteOn(notenumber[waon[6]], 100, 1);
             break;
           case 0:
             MIDI.sendNoteOn(64, 100, 1);
             break;
        delay(100);
     }
      
              delay(500);
        
     k = waon[1];
     if(k != 0){
        MIDI.sendNoteOff(notenumber[waon[1]], 0, 1);
        delay(5);
     }
     else if(k == 0){
       MIDI.sendNoteOff(40, 0, 1);
       delay(5);
      }
      
     k = waon[2];
     if(k != 0){
        MIDI.sendNoteOff(notenumber[waon[2]], 0, 1);
        delay(5);
     }
     else if(k == 0){
        MIDI.sendNoteOff(45, 0, 1);
        delay(5);
     }
      
     k = waon[3];
     if(k != 0){
       MIDI.sendNoteOff(notenumber[waon[3]], 0, 1);
       delay(5);
      }
      else if(k == 0){
       MIDI.sendNoteOff(50, 0, 1);
       delay(5);
      }

     k = waon[4];
     if(k != 0){
        MIDI.sendNoteOff(notenumber[waon[4]], 0, 1);
        delay(5);
     }
     else if(k == 0){
       MIDI.sendNoteOff(55, 0, 1);
       delay(5);
     }

     k = waon[5];
     if(k != 0){
        MIDI.sendNoteOff(notenumber[waon[5]], 0, 1);
        delay(5);
     }
     else if(k == 0){
       MIDI.sendNoteOff(59, 0, 1);
       delay(5);
     }
 
     k = waon[6];
     if(k != 0){
        MIDI.sendNoteOff(notenumber[waon[6]], 0, 1);
        delay(5);
     }
    else if(k == 0){
        MIDI.sendNoteOff(64, 0, 1);
        delay(5);
    } 
 }