Inhoudsopgave:
Video: Arduino Soundlab: 3 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Het is ongelooflijk wat een breed scala aan verbazingwekkende geluiden kan worden gegenereerd met de FM-synthesetechniek, zelfs met behulp van een gewone Arduino. In een eerdere instructable werd dit geïllustreerd met een synthesizer die 12 voorgeprogrammeerde geluiden had, maar een kijker suggereerde dat het veel cooler zou zijn om volledige controle over de geluidsparameters te hebben met potentiometers, en dat is het ook!
In dit geluidslab kunnen tonen worden geregeld door 8 parameters: 4 voor de ADSR-envelop van de luidheid en 4 voor de frequentiemodulatie die de textuur bepaalt.
De toevoeging van de 8 potmeters ging niet ten koste van het aantal toetsen: drie sets van 8 toetsen worden enkele microseconden na elkaar uitgelezen, voor een totaal van 24 toetsen, overeenkomend met twee volle octaven. In feite zijn twee Arduino-pinnen ongebruikt en zou uitbreiding naar 40 sleutels mogelijk zijn.
Bekijk de video voor het maken van wilde geluiden, hier is een kort overzicht:
* A=attack: tijd voor een toon om zijn maximale luidheid te bereiken (bereik 8ms-2s)
* D=verval: tijd voor een toon om te dalen tot zijn constante luidheid (bereik 8ms-2s)
* S=sustain: constant geluidsniveau (bereik 0-100%)
* R=release: tijd voor een toon om uit te sterven (bereik 8ms-2s)
* f_m: verhouding van de modulatiefrequentie tot de draaggolffrequentie (bereik 0,06-16) waarden onder 1 resulteren in ondertonen, hogere waarden in boventonen
* beta1: amplitude van de FM-modulatie aan het begin van de noot (bereik 0,06-16) kleine waarden resulteren in kleine variaties van de geluidstextuur. grote waarden resulteren in gekke geluiden
* beta2: amplitude van de FM-modulatie aan het einde van de noot (bereik 0,06-16) Geef beta2 een andere waarde dan beta1 om de geluidstextuur in de tijd te laten evolueren.
* tau: snelheid waarmee de FM-amplitude evolueert van bèta1 naar bèta 2 (bereik 8ms-2s) Kleine waarden geven een korte knal aan het begin van een noot, grote waarden een lange en langzame evolutie.
Stap 1: constructie
Het is duidelijk dat dit nog steeds een prototype is, ik hoop dat ik of iemand anders ooit deze grote en sterke en mooie zal bouwen met grote toetsen en echte wijzerplaten voor de potentiometers in een geweldige behuizing ….
Benodigde componenten:
1 Arduino Nano (het werkt niet met de Uno, die slechts 6 analoge ingangen heeft)
24 drukknoppen
8 potentiometers, in het bereik van 1kOhm - 100kOhm
1 potmeter van 10kOhm voor volumeregeling
1 condensator - 10microfarad elektrolytisch
1 3,5 mm koptelefoonaansluiting
1 LM386 audioversterkerchip
2 1000 microfarad elektrolitische condensator
1 keramische condensator van 1 microfarad
1 microschakelaar
1 8Ohm 2Watt luidspreker
1 prototypebord van 10x15cm
Zorg ervoor dat u de bijgevoegde schema's begrijpt. De 24 knoppen worden aangesloten in 3 groepen van 8, uit te lezen op D0-D7, en te activeren op D8, D10 en D11. De potten hebben +5V en massa op de eindaftakkingen en de centrale aftakkingen worden toegevoerd aan de analoge ingangen A0-A7. D9 heeft de audio-uitgang en wordt AC-gekoppeld aan een 10kOhm-potentiometer voor volumeregeling. Het geluid kan direct worden beluisterd met oortelefoons, of worden versterkt met een LM386 audioversterkerchip.
Het past allemaal op een 10x15cm protoptype bord, maar de knoppen zijn te dichtbij om goed te spelen, dus het zou beter zijn om een groter toetsenbord te bouwen.
Het circuit kan worden gevoed via de USB-aansluiting op de Arduino Nano, of met een externe 5V-voeding. Een 2xAA-batterijdoos gevolgd door een step-up-converter is een perfecte voedingsoplossing.
Stap 2: Software
Upload de bijgevoegde schets naar de Arduino Nano en alles zou moeten werken.
De code is eenvoudig en gemakkelijk aan te passen, er is geen machinecode en er zijn geen interrupts, maar er zijn een aantal directe interacties met de registers, om te communiceren met de timer, om het uitlezen van de knoppen te versnellen en om het gedrag van de ADC te regelen voor de uitlezing van de potentiometer
Stap 3: Toekomstige verbeteringen
Ideeën uit de community zijn altijd welkom!
Ik heb het meeste last van de knoppen: ze zijn klein en klikken hard als ze worden ingedrukt. Het zou heel leuk zijn om grotere knoppen te hebben die comfortabeler zijn om in te drukken. Ook zouden kracht- of snelheidsgevoelige knoppen het mogelijk maken om de luidheid van de noten te regelen. Misschien kunnen 3-weg drukknoppen of aanraakgevoelige knoppen werken?
Andere leuke dingen zouden zijn om geluidsinstellingen in EEPROM op te slaan. Het opslaan van korte deuntjes in EEPROM zou het ook mogelijk maken om veel interessantere muziek te maken. Ten slotte zouden er complexere geluiden kunnen worden gegenereerd, als iemand weet hoe percussiegeluiden op een rekenkundig efficiënte manier kunnen worden gegenereerd, zou dat geweldig zijn …
Aanbevolen:
Game Design in Flick in 5 stappen: 5 stappen
Game-ontwerp in Flick in 5 stappen: Flick is een heel eenvoudige manier om een game te maken, vooral zoiets als een puzzel, visuele roman of avonturengame
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: 3 stappen
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: In deze Instructable gaan we gezichtsdetectie uitvoeren op Raspberry Pi 4 met Shunya O/S met behulp van de Shunyaface-bibliotheek. Shunyaface is een bibliotheek voor gezichtsherkenning/detectie. Het project streeft naar de hoogste detectie- en herkenningssnelheid met
Doe-het-zelfspiegel in eenvoudige stappen (met LED-stripverlichting): 4 stappen
DIY make-upspiegel in eenvoudige stappen (met behulp van LED-stripverlichting): In dit bericht heb ik een doe-het-zelfspiegel gemaakt met behulp van de LED-strips. Het is echt gaaf en je moet ze ook proberen
Hoe plug-ins in WordPress te installeren in 3 stappen: 3 stappen
Hoe plug-ins in WordPress te installeren in 3 stappen: In deze tutorial laat ik je de essentiële stappen zien om de WordPress-plug-in op je website te installeren. In principe kunt u plug-ins op twee verschillende manieren installeren. De eerste methode is via ftp of via cpanel. Maar ik zal het niet opsommen, want het is echt compl
Akoestische levitatie met Arduino Uno stap voor stap (8 stappen): 8 stappen
Akoestische levitatie met Arduino Uno Stap voor stap (8-stappen): ultrasone geluidstransducers L298N Vrouwelijke DC-adapter voeding met een mannelijke DC-pin Arduino UNOBreadboardHoe dit werkt: eerst upload je code naar Arduino Uno (het is een microcontroller uitgerust met digitale en analoge poorten om code te converteren (C++)