Arduino gitarr Tuner (6 / 15 steg)

Steg 6: Förstärk och Offset



Audio signalen från elgitarr måste förstärkas för att handla om 5V topp till topp och och offset vara centrerad runt 2.5V i motsats till 0V. Signalen måste vara mellan 0 och 5V för att det ska läsas av den Arduino analoga pin. Det bör också ha största möjliga amplituden utan klippning för att få mer exakt frekvens beräkningar.

Ovan är en schematisk av kretsen måste du göra detta.

Jag rekommenderar bygga denna krets på en skärbräda och testa med ett oscilloskop innan lödning det tillsammans. Din ljudingång bör den gröna ledningen av audio jack. Anslut den svarta sladden av jack till marken. Bifoga ditt scope sond till produktionen av DC offset (där kretsen är kopplad till A0 på Arduino). Höj volymen på din gitarr hela vägen och koppla in din gitarr till uttaget audio. Spela varje sträng och kolla på oscilloskopet att se till att din signal är centrerad runt 2.5V och att signalen är nära men inte överstiger 5V topp till topp.

Prova att köra denna modifierad version av Amanda är koden för Arduino frekvensen upptäckt att testa den Arduino frekvens beräkning. Det enda jag har ändrat från hennes kod är jag bort klippning indikatorn LED och istället tryckt "klippning" i följetong monitor när signalen klippen.

/*
* Ändrade Arduino frekvens identifiering
* av Nicole Grimwood
*
* För mer information vänligen besök:
*
*
*
* Något redigerad version av:
* Arduino frekvens identifiering
* skapade 7 oktober 2012
* av Amanda Ghassaei
*
* Denna kod är i public domain.
*/

Clipping indicator variabler
booleska klippning = 0;

data storage variabler
byte newData = 0;
byte prevData = 0;
unsigned int tid = 0; //keeps tid och skickar vales att lagra i [timer] ibland
int timer [10]; //storage för tidpunkten för händelser
int lutning [10]; //storage för lutning av händelser
unsigned int totalTimer; //used att beräkna period
unsigned int period; //storage under för wave
byte index = 0; //current storage index
float frekvens; //storage för frekvens beräkningar
int maxSlope = 0; //used att beräkna max lutning som trigger punkt
int newSlope; //storage för inkommande lutning data

variabler för beslutat om du har en match
byte noMatch = 0; //counts hur många icke-matcher du har fått för att återställa variabler om det har gått för långt
byte slopeTol = 3; //slope tolerans - justera detta om du behöver
int timerTol = 10; //timer tolerans - justera detta om du behöver

variabler för amp upptäckt
unsigned int ampTimer = 0;
byte maxAmp = 0;
byte checkMaxAmp;
byte ampThreshold = 30. //raise om du har en mycket högljudd signal

void setup() {

Serial.BEGIN(9600);

pinMode (13, OUTPUT); //led indikator pin
pinMode (12, OUTPUT); //output pin

(CLI); //diable avbrott

Ställ in kontinuerlig provtagning av analoga pin 0 vid 38,5 kHz

Rensa ADCSRA och ADCSRB register
ADCSRA = 0;
ADCSRB = 0;

ADMUX | = (1 << REFS0); ange referens spänning
ADMUX | = (1 << ADLAR); Vänsterjustera ADC värde - så vi kan läsa högst 8 bitar från ADCH register endast

ADCSRA | = (1 << ADPS2) | (1 << ADPS0); ställa in ADC klockan med 32 prescaler - 16mHz/32 = 500 kHz
ADCSRA | = (1 << ADATE); enabble automatisk utlösare
ADCSRA | = (1 << Ebba Grön); Aktivera avbrott när mätningen är klar
ADCSRA | = (1 << ADEN); Aktivera ADC
ADCSRA | = (1 << ADSC); Starta ADC mätningar

SEI (); //enable avbrott
}

ISR(ADC_vect) {//when nya ADC värdet redo

PORTB & = B11101111; //set stift 12 låg
prevData = newData; //store tidigare värde
newData = ADCH; //get värde från A0
om (prevData < 127 & & newData > = 127) {//if ökar och passage mittpunkten
newSlope = newData - prevData; //calculate lutning
om (abs(newSlope-maxSlope) < slopeTol) {//if sluttningar är ==
spela in nya data och återställa tiden
sluttningen [index] = newSlope;
timer [index] = tid;
tid = 0;
om (index == 0) {//new max lutning bara reset
PORTB | = B00010000; //set stift 12 hög
noMatch = 0;
index ++; //increment index
}
annars om (abs(timer[0]-timer[index]) < timerTol & & abs(slope[0]-newSlope) < slopeTol) {//if timer varaktighet och backarna match
summa timer-värden
totalTimer = 0;
för (byte jag = 0; jag < index; i ++) {
totalTimer += timer [i];
}
period = totalTimer; //set perioden
återställa nya noll indexvärden att jämföra med
timer [0] = timer [index];
sluttningen [0] = lutningen [index];
index = 1; //set index 1
PORTB | = B00010000; //set stift 12 hög
noMatch = 0;
}
annat {//crossing mittpunkt men inte matchen
index ++; //increment index
om (index > 9) {
Reset();
}
}
}
annars om (newSlope > maxSlope) {//if nya lutning är mycket större än max lutning
maxSlope = newSlope;
tid = 0; //reset klocka
noMatch = 0;
index = 0; //reset index
}
annat {//slope inte brant nog
noMatch ++; //increment ingen match counter
om (noMatch > 9) {
Reset();
}
}
}

om (newData == 0 || newData == 1023) {//if klippning
klippningen = 1; //currently klippning
Serial.println("Clipping");
}

tid ++; //increment timer i takt på 38,5 kHz

ampTimer ++; //increment amplitud timer
om (abs(127-ADCH) > maxAmp) {
maxAmp = abs(127-ADCH);
}
om (ampTimer == 1000) {
ampTimer = 0;
checkMaxAmp = maxAmp;
maxAmp = 0;
}

}

void reset() {//clean ut vissa variabler
index = 0; //reset index
noMatch = 0; //reset matcha couner
maxSlope = 0; //reset lutning
}

void checkClipping() {//manage klippning indikation
om (klippning) {//if för närvarande klippning
klippningen = 0;
}
}

void loop() {

checkClipping();

om (checkMaxAmp > ampThreshold) {
frekvens = 38462/float (period); //calculate frekvens timer kurs/period

skriva ut resultaten
Serial.Print(Frequency);
Serial.println ("hz");
}

Delay(100);

}

Seriella bildskärmen bör skriva ut frekvensen av strängarna som spelas. Gitarrens strängar bör ha följande frekvenser:
E - 82.4 Hz
A - 110 Hz
D - 146.8 Hz
G - 196 Hz
B - 246.9 Hz
E - 329.6 Hz

Sedan den högre strängar har en mycket lägre amplitud signal än de lägre strängarna, kan det vara knepigt att få frekvensen upptäckt att arbeta. Amanda är koden har en variabel som kallas ampThreshold som är den minsta signal amplituden för Arduino att beräkna frekvens. För gitarr tuner, bör ampThreshold vara tillräckligt hög för att Arduino beräknar frekvensen av högre strängarna, men också låg nog att det inte plocka upp för mycket buller från de lägre strängarna. Jag upptäckte att en ampThreshold av 20 verk. Du har till strum kicken stränger lite svårare att få Arduino att plocka upp dem, men frekvensen upptäckt fungerar bra. Du kan experimentera med andra värden att få det att fungera för dig. Värde från 10 till 30 fungerar okej. För mer information om amandas algoritm för frekvens identifiering, kolla in hennes Instructable: Arduino frekvens identifiering.

Se Steg
Relaterade Ämnen

Arduino Ukulele Tuner

Göra en Arduino - Adafruit TFT sköld - piezo Summer - Ukulele tuner.Vad är det:Detta Instructable visar hur man gör en analog ukulele mottagare som använder standard G ukulele tuning. Det är ett effektivt stöd för att trimma din ukulele.Vad är det in...

Arduino gitarr Pedal

Arduino gitarr Pedal är en digital multi-effekt pedal baserat på Lo-Fi Arduino gitarr Pedal Ursprungligen postat av Kyle McDonald. Jag gjorde några ändringar till sin ursprungliga utformning. De mest märkbara förändringarna är inbyggd preamp och akti...

Spindel hastighetssensor från en gitarr tuner

jag fick just en Pro medlemskap ett par dagar sedan, tack till Random_Canadian's generositet. (Tack för hookup!) Jag tänkte det var dags att avsluta lurar och faktiskt bidra, så här går min första Instructable.Som CNC tekniker, har det varit några ti...

Visuella / fonetiska gitarr Tuner "The Tune tränare"

bygga en strobe tuner med en integrerad tongeneratorn undervisa tuning av örat.-= Bakgrund =-Jag har alltid dabbled i instrument. Under hela mitt liv, jag har försökt (med varierande framgång) Piano, gitarr, Banjo, Penny Whistle, Ocarina, Panpipes, G...

Automatisk gitarr Tuner

två saker som jag verkligen gillar att göra är: spela gitarr och mixtra med min Arduino. Jag var mycket intresserad av vid tanken på detta projekt, så jag beslöt att göra det. Jag är ny på programmering, så detta var en riktig utmaning för mig!Denna...

Lo-fi Arduino gitarr Pedal

lite krossning, Betygsätt reducerande, konstiga ljud: DIY 10-bitars effekter/gitarr pedal med en Arduino för lo-fi DSP.Kolla in demovideo på Vimeo.Steg 1: materialVerktygArduino (Diecimila, eller med auto-reset)LödkolvLimpistolAvbitareDrill press ell...

Anpassade Arduino gitarr

Hej alla, jag har arbetat på en gitarr projekt för min svåger som är för närvarande att lära att spela elgitarr. Jag ville bygga något som skulle hjälpa honom att lära sig men är även riktigt cool på samma gång så utan tvekan det fick har några coola...

Gitarr Tuner

Ofta stränginstrument gå ostämd på grund av regelbunden användning. I detta Instructable ska vi bygga en gadget som du kan använda för att ställa ditt instrument.Du behöver följande för att slutföra detta bygga:Intellekten Edison med Arduino breakout...

Arduino-kontrollerade Korg PC-1 Tuner

Detta skall vara din guide för att hacka in i en Korg PC-1 gitarr tuner använder en Sparkfun SprotoSnap.De material du behöver är följande:Korg PC-1 TunerSparkfun SprotoSnapMikro-USB-kabelStrandsatta elektrisk trådLödaDe verktyg du behöver är följand...

Guitar Tuner för blinda (med en Arduino)

hur du ändrar en gitarr tuner så det kan användas av en blind personDetta bygga använder en Arduino Pro mini mikrokontroller, (all kod finns).Detta projekt genomfördes för välgörenhet Mappa om, som tillhandahåller skräddarsydda produkter för personer...

Arduino på grund gitarr Pedal - öppen hårdvara.

pedalSHIELD är en Open-hårdvara / öppen källkod Arduino gitarr pedal sköld. Det är utformad som en plattform för att lära sig om digital signalbehandling, gitarr effekter och syntar, utan behov av en fördjupad kunskap om elektronik och programmering....

Att lägga till nycklar till en Arduino Synth den hårda vägen-Blacklord: Organ Donor projekt del 2

(Obs-detta är min 20 instructable! Tack till alla följande och commenting.on mina projekt och personal som gör detta möjligt. Denna webbplats har definitivt fått mig få min A spelet till arbetsbänken.)Auduino granulat synth av Peter Knight ( http://c...

Arduino och VCO melody maker

krets, skisser och processen beskrivs här gör att du kan producera melodier med hjälp av en Arduino och en VCO. Skissar redan har melodin för Maria hade ett litet lamm. Du kan enkelt ändra melodin i koden och eventuellt bygga på detta projekt att gör...

Arduino förfallodatum baserat Fractal Audio Axe-FX II Controller

Jag har använt Gitarren verkställer och förförstärkare som Digitech GSP-21 och ART SGX2000 i min levande rigg sedan början av nittiotalet. Även om stora enheter för deras period, var det dags för en uppgradering. Efter läsa några recensioner och spel...

Ansluta en gitarr till en Ipad

Hej i detta instructable jag ska visa dig hur du ansluter din gitarr till din ipad!Om du ansluter din gitarr till din ipad kan du: Använd din ipad som en förstärkare, finjustera det enkelt, spela in din sköna gitarr låtar på din ipadSteg 1: Du behöve...

Gitarr renovering

en guide om hur man kan förbättra eller fixa någon gammal gitarr.Steg 1: I början När jag köpte den gitarr som det var i ett tillstånd av elände; kropp och hals av gitarren målade i metallic lila gnistrande billack och anpassad plocka guard slösat i...

Ford mini glovebox gitarr/ukulele

Fast i trafiken?Uttråkad med ingenstans att gå?Inget på radion?Passagerarna klagar du smälla dem i ansiktet med Spindelhuset när du spelar upp en full storlek gitarr i bilen?Inte tillräckligt med utrymme i bilen för en flygel?Nå över och ta din Ford...

Allt du någonsin velat veta om att upprätthålla en gitarr (men var rädda att fråga)

Gitarr underhåll kan vara en frustrerande och dyr affär. Detta instructable syftar till att hjälpa med det. Om jag missat något du tycker bör finnas med, låt mig veta; Likaså om du har en fråga, lägga den i kommentarerna och vi får se om vi inte kan...

Hur man övergången mellan ett G-ackord och ett C ackord på gitarr

Tillsyn av en vuxen föreslog för musiker yngre än 12 år. Instrument kan bli mycket dyrt och kan skada lätt. Inledning:En milstolpe på den musikaliska resan att lära sig spela gitarr spelar din första ackord, spelar en andra ackord och lära sig att öv...