Arduino kompatibel Luna Mod Looper (3 / 8 steg)
Steg 3: Programmera arduino
Kopiera klistra in följande kod till din arduino IDE, kompilera och sedan uplode (om du använder attiny måste du ändra stiften som används i skissen)./*
*
* LunaMod för Arduino & Attiny45
* Remix av Rob Miles
* Tacoma, WA augusti 8 2011
*
* Jag såg det ursprungliga projektet i Make vol. 26
* av Brian McNamara
* Brian var igång på ett PicAxe och jag har bara attiny45s så...
*
* Freqout avsnittet där den riktiga magin händer är från Paul Badger synth kod på Arduino huvudsidan
*
* Jag höll detta ganska rakt framåt men med en Arduino som detta skulle kunna få ett mycket mer komplicerat om du vill
* Även på en attiny45 om du använder du lägga till en knapp till led stift du coud smyga in fler effekter
*
*/
#define frequencyPot 0 //frequency potten knutna till pin 15 a1
#define tempoPot 1 //tempo potten knutna till pin 16 som är A2
#define buttonPin 9 //programming knappen knutna till pin 17 som är A3
#define ledPin 10 //status ledde bundet till pin 18 som är A4
#define speakerPin 11 //speaker eller utdata pin 19 polisonger är A5
Om du använder en talare bör det vara minst en 16 ohms högtalare en bör ha en
motstånd, kanske 200 ohm till 1K ohm, mellan negativa bly och marken.
en potentiometer skulle vara ännu bättre.
int currentStep = 0; Detta är bara att spåra som tonen i minnet vi spelar just nu
int steg [] = {500,500,100,100,100,100,100,100, / / detta är våra ton lagring areae
100,100,100,100,100,100,100,100, //I används 64 toner eller 8 toner per beat
500,500,100,100,100,100,100,100, //you kan ändra detta manuellt och experimentera om du vill
100,100,100,100,100,100,100,100,
500,500,100,100,100,100,100,100,
100,100,100,100,100,100,100,100,
500,500,100,100,100,100,100,100,
100,100,100,100,100,100,100,100}.
int tempo = 0; tempo eller hastighet mellan toner
int längd = 0; Hur länge var och en av de 64 tonerna spelar
int frekvens = 0; aktuella tonen
int pitchval = 1;
void setup() //set upp din stift...
{
pinMode (frequencyPot, ingång);
pinMode (tempoPot, ingång);
pinMode (buttonPin, ingång);
digitalWrite (buttonPin, hög);
pinMode (ledPin, produktionen);
pinMode (speakerPin, produktionen);
}
void loop()
{
för (int jag = 0; jag < 63; i ++) //64 enskilda noter spelas
{
currentStep = i. spara vår nuvarande ståndpunkt i slingan för senare
om (jag == 0 || jag == 16 || jag == 32 || jag == 48) {//keep spår av beat på led
digitalWrite (ledPin, hög);}
om (jag == 7 || jag == 23 || jag == 39 || jag == 55) {//keep spår av beat på led
digitalWrite (ledPin, låg);}
om (digitalRead(buttonPin) == låg) //is programknapp trycks
{//if så kan skriva en ny ton i detta läge
steg [currentStep] = (analogRead(frequencyPot)); Läs frekvens potten och ange nya tonen
freqout (steg [currentStep], varaktighet); Ställ in parametrar för frequout nedan och spela det
freqout (steg [currentStep] 64, varaktighet); spela upp en annan ton lite annorlunda än den ursprungliga att ge
det lite mer djup. Detta kan ändras enligt dina önskemål
freqout (steg [currentStep] +128, varaktighet); spela upp en annan ton lite annorlunda än den ursprungliga att ge
det lite mer djup. Detta kan ändras enligt dina önskemål
}
annat {//else spela tonen
freqout (steg [currentStep], varaktighet); Ställ in parametrar för frequout nedan och spela det
freqout (steg [currentStep] 64, varaktighet); spela upp en annan ton lite annorlunda än den ursprungliga att ge
det lite mer djup. Detta kan ändras enligt dina önskemål
freqout (steg [currentStep] +128, varaktighet); spela upp en annan ton lite annorlunda än den ursprungliga att ge
det lite mer djup. Detta kan ändras enligt dina önskemål
}
tempo = (analogRead(tempoPot)/4); Läs tempo potten
längd = tempo/8. Ange enskilda tonen varaktigheterna
Delay(tempo); vänta lite
}
}
void freqout (int freq, int t)
{
int hperiod;
långa cykler, i.
hperiod = (500000 / ((freq-7) * pitchval));
cykler = ((långa) freq * (långa) t) / 1000;
för (jag = 0; jag < = cykler; i ++)
{
digitalWrite (speakerPin, hög);
delayMicroseconds(hperiod);
digitalWrite (speakerPin, låg);
delayMicroseconds (hperiod - 1);
}
}