Monday, 31 August 2020

Oscillator/Synth/Shift Register

Synth Piano:

1x Arduino Uno
1x Breadboard
1x Accu 3,7v
1x LiPo Rider Pro SEEED Studio
1x Audio Amplifier 
2x Speakers
27x Buttons
27x Resistors (10k)
3x Shift Register - Parallel to Serial 


Screen%20shot%202016 04 15%20at%2017.58.47

Code: 
#include <SPI.h>
#include <Arduino.h> #include <MusicPlayer.h> //#include <SD.h>
#define dataPin 8 #define clockPin 9 #define latchPin 10
#define dataPin2 5 #define clockPin2 6 #define latchPin2 7
#define dnote 4
#define plus 3 #define moin 2
byte switchVar1 = 0; byte switchVar2 = 0; byte switchVar3 = 0;
51int instru = 79;
int sensorvalue = 500;
void son (int myNote, int myVolu, int myTon, int myToff) {
player.midiNoteOn(0, myNote, myVolu); delay(myTon);
player.midiNoteOff(0, myNote, myVolu); delay(myToff);
}
int but(int x, int y, int h, int l) {
if ((digitalRead (moin) == HIGH) && (x<=(h-y))) { x=x+y
;
}
else if ((digitalRead (plus) == HIGH) && (x>=(l+y))){
x=x-y; }
52
return x; }
void setup() {

Serial.begin(9600);
player.beginInMidiFmt();
player.midiWriteData(0xB0, 0x07, 120); // set volume player.midiDemoPlayer();pinMode(latchPin2, OUTPUT); pinMode(clockPin2, OUTPUT); pinMode(dataPin2, INPUT);
pinMode(dnote, INPUT);
pinMode(plus, INPUT);
pinMode(moin, INPUT); }
void loop() {

sensorvalue = analogRead(5); // Serial.println(sensorvalue);if (sensorvalue < 540){ Serial.println("1"); volu = but (volu, 5, 127, 0); Serial.println(volu); delay (1000); } else if (sensorvalue < 620){ Serial.println("2"); ton = but (ton, 10, 10, 1000); Serial.println(ton); } else if (sensorvalue < 700){ Serial.println("3"); toff = but (toff, 10, 10, 1000); Serial.println(toff); } else if (sensorvalue < 780){ Serial.println("4"); player.midiWriteData(0xB0, 0, 0x78); player.midiWriteData(0xC0, 40, 0); } else if (sensorvalue < 815){ Serial.println("5"); player.midiWriteData(0xB0, 0, 0x79); 54if (instru > 8)instru = 1; instru = but(instru, 1, 8, 1); player.midiWriteData(0xC0, instru, 0); Serial.println(instru); } else if (sensorvalue < 845){ Serial.println("6"); player.midiWriteData(0xB0, 0, 0x79); if ((instru<9) || (instru>16)) instru = 9; instru = but(instru, 1, 16, 9); player.midiWriteData(0xC0, instru, 0); Serial.println(instru); } else if (sensorvalue < 870){Serial.println("7"); player.midiWriteData(0xB0, 0, 0x79); if ((instru<17) || (instru>24)) instru = 17; instru = but(instru, 1, 24, 17); player.midiWriteData(0xC0, instru, 0); Serial.println(instru); } else if (sensorvalue < 888){ Serial.println("8"); player.midiWriteData(0xB0, 0, 0x79); if ((instru<25) || (instru>40)) instru = 25; instru = but(instru, 1, 40, 25); player.midiWriteData(0xC0, instru, 0); 55Serial.println(instru); } else if (sensorvalue < 910){ Serial.println("9"); player.midiWriteData(0xB0, 0, 0x79); // set percussion 78 or synth 79 if ((instru<41) || (instru>56)) instru = 41; instru = but(instru, 1, 56, 41); player.midiWriteData(0xC0, instru, 0); Serial.println(instru); } else if (sensorvalue < 928){ Serial.println("10"); player.midiWriteData(0xB0, 0, 0x79); if ((instru<57) || (instru>80)) instru = 65; instru = but(instru, 1, 80, 57); player.midiWriteData(0xC0, instru, 0); Serial.println(instru); } else if (sensorvalue < 945){ Serial.println("11"); player.midiWriteData(0xB0, 0, 0x79); if ((instru<81) || (instru>96)) instru = 91; instru = but(instru, 1, 96, 81); player.midiWriteData(0xC0, instru, 0); Serial.println(instru); } else if (sensorvalue < 1000){Serial.println("12"); player.midiWriteData(0xB0, 0, 0x79); // set percussion 78 or synth 79 if ((instru<97) || (instru>124)) instru = 99; instru = but(instru, 1, 120, 97); player.midiWriteData(0xC0, instru, 0); Serial.println(instru); } else{ Serial.println("Error"); }switch (switchVar1) { case B1: son (55, volu, ton, toff); break; case B10: son (53, volu, ton, toff); break; case B100: son (52, volu, ton, toff); break; case B1000: son (50, volu, ton, toff); break; case B10000: son (54, volu, ton, toff); break; case B100000: son (51, volu, ton, toff); break; case B1000000: son (49, volu, ton, toff); break; case B10000000: son (48, volu, ton, toff); break; } 59switch (switchVar2) { case B1: son (59, volu, ton, toff); break; case B10: son (58, volu, ton, toff); break; case B100: son (60, volu, ton, toff); break; case B1000: son (57, volu, ton, toff); break; case B10000: son (63, volu, ton, toff); break; case B100000: son (62, volu, ton, toff); break; case B1000000: son (61, volu, ton, toff); break; 60 case B10000000: son (56, volu, ton, toff); break; }switch (switchVar3) { case B1: son (71, volu, ton, toff); break; case B10: son (65, volu, ton, toff); break; case B100: son (69, volu, ton, toff); break; case B1000: son (67, volu, ton, toff); break; case B10000: son (70, volu, ton, toff); break; case B100000: son (66, volu, ton, toff); 61 break; case B1000000: son (68, volu, ton, toff); break; case B10000000: son (64, volu, ton, toff); break; } if (digitalRead (dnote) == HIGH) son (72, volu, ton, toff);Serial.println("-------------------"); }
int i; 62 int temp = 0; int pinState; byte myDataIn = 0; pinMode(myClockPin, OUTPUT); pinMode(myDataPin, INPUT);
for (i=7; i>=0; i--) { digitalWrite(myClockPin, 0); delayMicroseconds(2); temp = digitalRead(myDataPin); if (temp) { pinState = 1;} else { //debugging turn it off 63 //print statement: 0 pinState = 0; } digitalWrite(myClockPin, 1); } return myDataIn; }

No comments:

Post a Comment