degu234

ChordOrgan Synthvoice

Aug 26th, 2021 (edited)
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 10.25 KB | None | 0 0
  1. //stationKnob = A9
  2. //stationCV = A8
  3. //startKnob = A7
  4. //startCV = A6
  5. //resetButton = Pin 8
  6. //resetCV = Pin 9
  7. //Output = dac1
  8. #include <Audio.h>
  9. #include <Wire.h>
  10. #include <SPI.h>
  11. #include <SD.h>
  12. #include <SerialFlash.h>
  13.  
  14. // GUItool: begin automatically generated code
  15. AudioSynthWaveform       waveform3;      //xy=83.75000762939453,347.0000081062317
  16. AudioSynthWaveform       waveform1;      //xy=86.7500114440918,251.0000057220459
  17. AudioSynthWaveform       waveform2;      //xy=87.75000762939453,300.0000066757202
  18. AudioSynthWaveform       waveform4;      //xy=96.75000762939453,397.00000190734863
  19. AudioEffectEnvelope      envelope1;      //xy=218.7500114440918,465.00000953674316
  20. AudioMixer4              mixer1;         //xy=259.7500114440918,324.0000057220459
  21. AudioFilterStateVariable filter1;        //xy=442.75000762939453,317.00000190734863
  22. AudioSynthWaveformDc     dc1;            //xy=475,536.25
  23. AudioMixer4              mixer2;         //xy=574.5000152587891,319.00000953674316
  24. AudioEffectWaveFolder    wavefolder1;    //xy=741.25,382.5
  25. AudioEffectBitcrusher    bitcrusher1;    //xy=772.2500190734863,272.2500333786011
  26. AudioEffectDelay         delay1;         //xy=942.0001220703125,523.5000152587891
  27. AudioMixer4              mixer3;         //xy=946.0000267028809,340.0000333786011
  28. AudioMixer4              mixer5;         //xy=1223.7500343322754,251.25000953674316
  29. AudioOutputAnalog        dac1;           //xy=1386.7500381469727,316.00000858306885
  30. AudioConnection          patchCord1(waveform3, 0, mixer1, 2);
  31. AudioConnection          patchCord2(waveform1, 0, mixer1, 0);
  32. AudioConnection          patchCord3(waveform2, 0, mixer1, 1);
  33. AudioConnection          patchCord4(waveform4, 0, mixer1, 3);
  34. AudioConnection          patchCord5(envelope1, 0, filter1, 1);
  35. AudioConnection          patchCord6(mixer1, 0, filter1, 0);
  36. AudioConnection          patchCord7(filter1, 0, mixer2, 0);
  37. AudioConnection          patchCord8(dc1, 0, wavefolder1, 1);
  38. AudioConnection          patchCord9(mixer2, 0, wavefolder1, 0);
  39. AudioConnection          patchCord10(wavefolder1, bitcrusher1);
  40. AudioConnection          patchCord11(bitcrusher1, 0, mixer3, 0);
  41. AudioConnection          patchCord12(delay1, 0, mixer3, 1);
  42. AudioConnection          patchCord13(mixer3, delay1);
  43. AudioConnection          patchCord14(mixer3, 0, mixer5, 0);
  44. AudioConnection          patchCord15(mixer5, dac1);
  45. AudioControlSGTL5000     sgtl5000_1;     //xy=822,662
  46. // GUItool: end automatically generated code
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54. //Konstanten
  55.   const int tasterPin = 8;  
  56.   // const int triggerPin = 9;                                              //??
  57.  
  58.   const int L1Pin = 3;       // LED1 an Pin 3 angeschlossen
  59.   const int L2Pin = 4;      // LED2 an Pin 4 angeschlossen
  60.   const int L3Pin = 5;      // LED3 an Pin 5 angeschlossen
  61.   const int L4Pin = 6;      // LED4 an Pin 6 angeschlossen
  62.  
  63. //Variablen
  64.   int mode = 0;                // Variable für die verschiedenen festgelegten Modi
  65.   int tasterState = 0;         // Variable zu speichern des Tasterstatus  
  66.   // int triggerState = 0;                                               //??    
  67.   float Note2[8] = {1.25992,1.18920,1.25992,1.33484};
  68.   float Note3[8] = {1.49830,1.49830,1.49830,1.49830};
  69.   float Note4[8] = {1.88774,1.88774,1.88775,1.88775};
  70.  
  71. void setup() {
  72.   AudioMemory(20);
  73.  
  74.   waveform1.begin(WAVEFORM_SAWTOOTH);
  75.   waveform1.amplitude(0.75);
  76.   waveform1.frequency(65.41);
  77.   waveform1.pulseWidth(0.15);  
  78.  
  79.   waveform2.begin(WAVEFORM_SAWTOOTH);
  80.   waveform2.amplitude(0.75);
  81.   waveform2.frequency(65.41);
  82.   waveform2.pulseWidth(0.15);  
  83.  
  84.   waveform3.begin(WAVEFORM_SAWTOOTH);
  85.   waveform3.amplitude(0.75);
  86.   waveform3.frequency(65.41);
  87.   waveform3.pulseWidth(0.15);  
  88.  
  89.   waveform4.begin(WAVEFORM_SAWTOOTH);
  90.   waveform4.amplitude(0.75);
  91.   waveform4.frequency(65.41);
  92.   waveform4.pulseWidth(0.15);  
  93.  
  94.   mixer1.gain(0, 0.3);
  95.   mixer1.gain(1, 0.3);
  96.   mixer1.gain(2, 0.3);
  97.   mixer1.gain(3, 0.3);
  98.  
  99.   envelope1.delay(0);
  100.   envelope1.attack(20);
  101.   envelope1.hold(0);
  102.   envelope1.decay(5000);
  103.   envelope1.sustain(0.7);
  104.   envelope1.release(500);
  105.  
  106.  
  107.   filter1.frequency(100);                                             //setze Filterfreq auf 100
  108.   filter1.resonance(0);                                               //setze Resonanz auf 0
  109.  
  110.   mixer2.gain(0, 1);                                                  //setze Mixer gain auf 1
  111.  
  112.   dc1.amplitude(0.05);
  113.  
  114.   bitcrusher1.bits(16);
  115.   bitcrusher1.sampleRate(44100);
  116.  
  117.   delay1.delay(0, 3);
  118.  
  119.   mixer3.gain(0, 1);
  120.   mixer3.gain(1, 0);
  121.  
  122.   //mixer4.gain(1, 0);
  123.   //mixer4.gain(0, 0);
  124.  
  125.   mixer5.gain(0, 0.5);
  126.   //mixer5.gain(1, 0.5);
  127.  
  128.  
  129.   pinMode(tasterPin, INPUT);
  130.  // pinMode(triggerPin, INPUT);                                        //??
  131.   pinMode(L1Pin, OUTPUT);        // Setzt den LEDPin als Ausgang
  132.   pinMode(L2Pin, OUTPUT);      // Setzt den LEDPin als Ausgang
  133.   pinMode(L3Pin, OUTPUT);       // Setzt den LEDPin als Ausgang
  134.   pinMode(L4Pin, OUTPUT);       // Setzt den LEDPin als Ausgang
  135.  
  136.  
  137. }
  138.  
  139. void loop() {
  140.  
  141.   tasterState = digitalRead(tasterPin);
  142.  // triggerState = digitalRead(resetCV);                            //??
  143.  
  144.     int startCV = analogRead(A8);                                         //lies startKnob
  145.     int PitchCV = map(startCV, 0, 1023, 65.41, 2093);                   //mappe Pitch
  146.         waveform1.frequency((float)(PitchCV) * 1);                            //WF1 spielt Grundton
  147.         waveform2.frequency((float)(PitchCV) * Note2[map(analogRead(A9), 0, 1023, 0, 7)]);                      //WF2 spielt +4 Semitöne
  148.         waveform3.frequency((float)(PitchCV) * Note3[map(analogRead(A9), 0, 1023, 0, 7)]);                      //WF3 spielt +7 Semitöne
  149.         waveform4.frequency((float)(PitchCV) * Note4[map(analogRead(A9), 0, 1023, 0, 7)]);                      //WF4 spielt +11 Semitöne
  150.  
  151.     int stationCV = analogRead(A6);                                       //lies stationKnob
  152.     int cutoff = map(stationCV, 0, 1023, 65.41, 2093);                    //mappe Poti zu cutoff
  153.         filter1.frequency(cutoff);                                              //Filter1 filtert cutoff
  154.        
  155.   if (tasterState == HIGH)
  156.   {
  157.     mode++;
  158.     delay(200);
  159.   }
  160.  
  161. //==========================================================================
  162.  
  163. if (mode == 0)
  164.   {
  165.     digitalWrite(L1Pin, LOW);                                               //Led 1 aus
  166.     digitalWrite(L2Pin, LOW);                                               //Led 2 aus
  167.     digitalWrite(L3Pin, LOW);                                               //Led 3 aus
  168.     digitalWrite(L4Pin, LOW);                                               //Led 4 aus
  169.    
  170.     int stationKnob = analogRead(A9);                                       //lies stationKnob
  171.    // int cutoff = map(stationKnob, 0, 1023, 65.41, 2093);                    //mappe Poti zu cutoff
  172.    //     filter1.frequency(cutoff);                                              //Filter1 filtert cutoff
  173.    
  174.     int startKnob = analogRead(A7);                                         //lies startKnob
  175.    // int PitchKnob = map(startKnob, 0, 1023, 65.41, 2093);                   //mappe Pitch
  176.    //     waveform1.frequency((float)(PitchKnob) * 1);                            //WF1 spielt Grundton
  177.    //     waveform2.frequency((float)(PitchKnob) * 1.25992);                      //WF2 spielt +4 Semitöne
  178.    //     waveform3.frequency((float)(PitchKnob) * 1.49830);                      //WF3 spielt +7 Semitöne
  179.    //     waveform4.frequency((float)(PitchKnob) * 1.88774);                      //WF4 spielt +11 Semitöne
  180.   }
  181.                    
  182.  
  183.   else if (mode == 1)  
  184.   {
  185.     digitalWrite(L1Pin, HIGH);                                              //Led 1 an
  186.     digitalWrite(L2Pin, LOW);                                               //Led 2 aus
  187.     digitalWrite(L3Pin, LOW);                                               //Led 3 aus
  188.     digitalWrite(L4Pin, LOW);                                               //Led 4 aus
  189.    
  190.     int stationKnob1 = analogRead(A9);                                      //lies stationKnob
  191.         mixer5.gain(0, ((float)stationKnob1 / 2046));                            //Lautstärke Mixer5 Eingang 0
  192.     int startKnob1 = analogRead(A7);                                        //lies startKnob
  193.         mixer1.gain(1, ((float)startKnob1 / 3069));                            //Lautstärke Mixer1 Eingang 0
  194.         mixer1.gain(2, ((float)startKnob1 / 3069));                            //Lautstärke Mixer1 Eingang 0
  195.         mixer1.gain(3, ((float)startKnob1 / 3069));                            //Lautstärke Mixer1 Eingang 0
  196.   }
  197.  
  198.   // Modus 2
  199.   else if (mode == 2)
  200.   {
  201.     digitalWrite(L1Pin, LOW);                                               //Led 1 aus
  202.     digitalWrite(L2Pin, HIGH);                                              //Led 2 an
  203.     digitalWrite(L3Pin, LOW);                                               //Led 3 aus
  204.     digitalWrite(L4Pin, LOW);                                               //Led 4 aus
  205.     int stationKnob2 = analogRead(A9);                                      //lies stationKnob
  206.     int startKnob2 = analogRead(A7);                                        //lies startKnob
  207.   }
  208.    
  209.   // Modus 3  
  210.   else if (mode == 3)
  211.   {
  212.     digitalWrite(L1Pin, LOW);
  213.     digitalWrite(L2Pin, LOW);
  214.     digitalWrite(L3Pin, HIGH);
  215.     digitalWrite(L4Pin, LOW);  
  216.     int stationKnob3 = analogRead(A9);                                      //lies stationKnob
  217.         dc1.amplitude((float) stationKnob3 / 1023);
  218.        
  219.     int startKnob3 = analogRead(A7);                                        //lies startKnob
  220.     int rateKnob = map(startKnob3, 0, 1023, 1, 44100);      
  221.         bitcrusher1.sampleRate(rateKnob);
  222.   }
  223.    
  224.   // Modus 4  
  225.   else if (mode == 4)
  226.   {
  227.     digitalWrite(L1Pin, LOW);
  228.     digitalWrite(L2Pin, LOW);
  229.     digitalWrite(L3Pin, LOW);
  230.     digitalWrite(L4Pin, HIGH);  
  231.     int stationKnob4 = analogRead(A9);          
  232.     int timeKnob = map(stationKnob4, 0, 1023, 3, 449);
  233.         delay1.delay(0, timeKnob);
  234.        
  235.     int startKnob4 = analogRead(A7);                                        //lies startKnob    
  236.         mixer3.gain(1, ((float)startKnob4 / 1023));
  237.   }
  238.  
  239.    
  240.  
  241.   // Anzahl der Leutmodi auf 5 begrenzen. (0 bis 4)
  242.   else
  243.   {
  244.     mode = 0;
  245.   }
  246. }
  247.  
  248.  
Add Comment
Please, Sign In to add comment