Inhoudsopgave:

Ukelele-tuner met LabView en NI USB-6008 - Ajarnpa
Ukelele-tuner met LabView en NI USB-6008 - Ajarnpa

Video: Ukelele-tuner met LabView en NI USB-6008 - Ajarnpa

Video: Ukelele-tuner met LabView en NI USB-6008 - Ajarnpa
Video: Maker Challenge: Invent an intriguing musical instrument by Annalise Morley 2024, Juli-
Anonim
Ukelele-tuner met LabView en NI USB-6008
Ukelele-tuner met LabView en NI USB-6008
Ukelele-tuner met LabView en NI USB-6008
Ukelele-tuner met LabView en NI USB-6008

Als een probleemgebaseerd leerproject voor mijn LabVIEW & Instrumentation-cursus aan het Humber College (Electronics Engineering Technology), heb ik een ukelele-tuner gemaakt die een analoge ingang (ukulele-snaartoon) zou nemen, de grondfrequentie zou vinden, zou beslissen welke noot probeerde te stemmen, en vertel de gebruiker of de snaar omhoog of omlaag moet worden gestemd. Het apparaat dat ik gebruikte om de analoge invoer naar digitale invoer te vertalen, was de National Instruments USB-6008 DAQ (data-acquisitieapparaat), en de gebruikersinterface werd geïmplementeerd met LabVIEW.

Stap 1: Standaard Ukelele Tuning

Standaard ukelele-stemming
Standaard ukelele-stemming
Standaard ukelele-stemming
Standaard ukelele-stemming

De eerste stap was het achterhalen van de fundamentele frequenties van muzieknoten en op welk bereik de ukelele-snaren doorgaans worden afgestemd. Ik gebruikte deze twee grafieken en besloot dat ik mijn toonbereik tussen 262 Hz (C) en 494 Hz (Hoge B) zou maken. Alles onder de 252 Hz zou als te laag worden beschouwd voor het programma om te ontcijferen welke noot er werd gespeeld, en alles hoger dan 500 Hz zou als te hoog worden beschouwd. Het programma vertelt de gebruiker echter nog steeds hoeveel Hz ze verwijderd zijn van de dichtstbijzijnde ontcijferbare noot, en of de snaar omhoog (noot te laag) of omlaag (noot te hoog) moet worden gestemd om een beschikbare noot te bereiken.

Bovendien heb ik bereiken voor elke noot gemaakt, in plaats van slechts een enkele frequentie, zodat het programma gemakkelijker zou kunnen vinden welke noot werd gespeeld. Het programma zou de gebruiker bijvoorbeeld vertellen dat er een C wordt gespeeld als de noot een grondfrequentie heeft tussen 252 Hz (halverwege naar B) en 269 Hz (halverwege naar C#), maar om te beslissen of hij moet worden gestemd of lager, zou het nog steeds de noot die wordt gespeeld vergelijken met de grondfrequentie van C die 262 Hz is.

Stap 2: Een puur digitaal theoretisch model maken

Een puur digitaal theoretisch model maken
Een puur digitaal theoretisch model maken
Een puur digitaal theoretisch model maken
Een puur digitaal theoretisch model maken

Voordat ik me in de analoge kant van het project stortte, wilde ik zien of ik een LabVIEW-programma kon maken dat op zijn minst de hoofdverwerking van een geluidssample zou doen, zoals het lezen van een audio.wav-sample, het vinden van de grondfrequentie en het maken van de vereiste vergelijkingen met de frequentiekaart om te bepalen of het geluid omhoog of omlaag moet worden gestemd.

Ik gebruikte de SoundFileSimpleRead. VI die beschikbaar is in LabVIEW om een .wav-bestand te lezen van een pad dat ik heb aangewezen, het signaal in een geïndexeerde array te plaatsen en dat signaal in de HarmonicDistortionAnalyzer. VI te voeren om de grondfrequentie te vinden. Ik nam ook het signaal van de SoundFileSimpleRead. VI en verbond het rechtstreeks met een golfvormgrafiekindicator, zodat de gebruiker de golfvorm van het bestand op het voorpaneel kan zien.

Ik heb 2 case-structuren gemaakt: een om te analyseren welke noot er werd gespeeld en de andere om te bepalen of de snaar omhoog of omlaag moest worden gedraaid. In het eerste geval heb ik bereiken gemaakt voor elke noot, en als het grondfrequentiesignaal van de HarmonicDistortionAnalyzer. VI in dat bereik was, zou het de gebruiker vertellen welke noot werd gespeeld. Nadat de noot was bepaald, werd de waarde van de gespeelde noot afgetrokken van de werkelijke grondfrequentie van de noot, en vervolgens werd het resultaat verplaatst naar het tweede geval dat het volgende bepaalde: als het resultaat boven nul is, moet de snaar lager worden gestemd; als het resultaat onwaar is (niet boven nul), dan controleert de case of de waarde gelijk is aan nul, en als het waar is, zou het programma de gebruiker informeren dat de noot goed is; als de waarde niet gelijk is aan nul, betekent dit dat deze kleiner moet zijn dan nul en dat de snaar moet worden gestemd. Ik nam de absolute waarde van het resultaat om de gebruiker te laten zien hoeveel Hz ze verwijderd zijn van de ware noot.

Ik besloot dat een meterindicator het beste zou zijn om de gebruiker visueel te laten zien wat er moet gebeuren om de noot op de juiste manier te laten klinken.

Stap 3: Vervolgens het analoge circuit

Vervolgens het analoge circuit
Vervolgens het analoge circuit
Vervolgens het analoge circuit
Vervolgens het analoge circuit
Vervolgens het analoge circuit
Vervolgens het analoge circuit

De microfoon die ik voor dit project heb gebruikt, is de CMA-6542PF condensator electret-microfoon. De datasheet voor deze microfoon staat hieronder. In tegenstelling tot de meeste condensatormicrofoons van dit type hoefde ik me geen zorgen te maken over de polariteit. De datasheet laat zien dat de bedrijfsspanning voor deze microfoon 4,5 - 10 V is, maar 4,5 V wordt aanbevolen, en het stroomverbruik is maximaal 0,5 mA, dus dat is iets om op te letten bij het ontwerpen van een voorversterkercircuit. De werkfrequentie is 20Hz tot 20kHz, wat perfect is voor audio.

Ik implementeerde een eenvoudig voorversterkercircuitontwerp op breadboard en paste de ingangsspanning aan, om ervoor te zorgen dat er niet meer dan 0,5 mA over de microfoon was. De condensator wordt gebruikt om de DC-ruis te filteren die mogelijk is gekoppeld aan de elektrische signalen (uitgang), en de condensator heeft polariteit, dus zorg ervoor dat u het positieve uiteinde aansluit op de microfoonuitgangspen.

Nadat het circuit voltooid was, verbond ik de uitgang van het circuit met de eerste analoge ingangspen (AI0, pen 2) van de USB-6008, en verbond de aarde van het breadboard met de analoge aardingspen (GND, pen 1). Ik heb de USB-6008 met een USB op de pc aangesloten en het was tijd om aanpassingen te maken aan het LabVIEW-programma om een echt analoog signaal op te nemen.

Stap 4: Analoge signalen lezen met DAQ Assistant

Analoge signalen lezen met DAQ Assistant
Analoge signalen lezen met DAQ Assistant
Analoge signalen lezen met DAQ Assistant
Analoge signalen lezen met DAQ Assistant

In plaats van de SoundFileSimpleRead. VI en de HarmonicDistortionAnalyzer. VI te gebruiken, heb ik de DAQ Assistant. VI en de ToneMeasurements. VI gebruikt om de analoge ingang af te handelen. De DAQ Assistant-configuratie is redelijk eenvoudig en de VI zelf leidt je door de stappen. De ToneMeasurements. VI heeft veel uitgangen om uit te kiezen (amplitude, frequentie, fase), dus ik heb de frequentie-uitgang gebruikt die de grondfrequentie van de ingangstoon geeft (van de DAQ Assistant. VI). De uitvoer van de ToneMeasurements. VI moest worden geconverteerd en in een array worden geplaatst voordat deze in de casusstructuren kon worden gebruikt, maar de rest van de LabVIEW-programmering/indicatoren bleef hetzelfde.

Stap 5: Conclusie

Conclusie
Conclusie

Het project was een succes, maar er waren zeker veel gebreken. Toen ik de tuner aan het bedienen was in een luidruchtig klaslokaal, was het erg moeilijk voor het programma om te bepalen wat ruis was en wat de toon was die werd gespeeld. Dit komt waarschijnlijk doordat het voorversterkercircuit erg basic is en de microfoon erg goedkoop. Toen het echter stil was, werkte het programma met een goede betrouwbaarheid om de noot te bepalen die probeerde te worden gespeeld. Vanwege tijdgebrek heb ik geen aanvullende wijzigingen aangebracht, maar als ik het project zou herhalen, zou ik een betere microfoon kopen en meer tijd besteden aan het voorversterkercircuit.

Aanbevolen: