Innholdsfortegnelse:

Arpeggiating Synthesizer (Mosquito I): 6 trinn
Arpeggiating Synthesizer (Mosquito I): 6 trinn

Video: Arpeggiating Synthesizer (Mosquito I): 6 trinn

Video: Arpeggiating Synthesizer (Mosquito I): 6 trinn
Video: Top 10 Most Expensive Synthesizers In The World 2024, Juli
Anonim
Arpeggiating Synthesizer (Mosquito I)
Arpeggiating Synthesizer (Mosquito I)

Mosquito I er en liten arpeggiating synthesizer som bruker en Arduino Nano og Mozzi lydsyntese bibliotek. Den kan spille over tjue 8-trinnssekvenser, men du kan legge til så mange egendefinerte sekvenser du vil. Det er relativt enkelt å sette opp og krever ikke mange deler.

Rekvisita:

  • Arduino Nano (eller hvilken som helst Arduino burde virkelig fungere)
  • 5 stk potensiometre (10K lineær)
  • 2 stk trykknapper
  • 1 stk LED
  • 1 stk motstand (330 ohm)
  • 2 stk motstand (1K)
  • 1 stk motstand (2K)
  • 1 stk elektrolytisk kondensator (100 uF)
  • 1 stk keramisk kondensator (33 nF)
  • 1 stk Stereokontakt
  • Tilkoblingskabel
  • Brødbrett

Trinn 1: Sette opp Arduino

Sette opp Arduino
Sette opp Arduino
Sette opp Arduino
Sette opp Arduino

La oss først få Nano på brødbrettet og sette opp kraften vår:

  1. Plasser Nano på brødbrettet. Plasser som vist på bildet ovenfor. Den skal strekke seg over midtkanalen på brødbrettet. Du vil ha den plassert mot den ene enden av brødbrettet, med USB -porten vendt mot den siden. På denne måten kommer ikke kabelen i veien når vi kobler den til. Hvis du bruker en større Arduino som Uno eller Mega, vil du selvfølgelig ikke montere den på brødbrettet.
  2. Koble strømskinner til Arduino. Koble en av de positive (røde) skinnene på brødbrettet til Arduino's 5V -pinne ved hjelp av ledninger eller jumperkabler. Koble deretter en av de negative (blå) skinnene til en av Nanos GND -pinner.
  3. Koble strømskinner til hverandre. For å få strøm langs skinnene på begge sider av brødbrettet, kobler du skinnene på hver side av brødbrettet til hverandre ved å føre en ledning fra den positive skinnen på den ene siden til den positive skinnen på den andre siden. Gjenta dette med de negative skinnene.

Trinn 2: Legge til kontrollene

Legge til kontrollene
Legge til kontrollene

Mygg I bruker fem potensiometre og to knapper for kontroller.

Potensiometre:

  1. Legg grytene på brødbrettet. Plasser grytene slik at hver pinne er på sin egen rad.
  2. Koble potter til strømskinner. Koble pinnen på venstre side av hver gryte (hvis du ser på knottesiden) til en av de negative skinnene på brødbrettet. Koble høyre pinne på hver gryte til en av de positive skinnene på brødbrettet.
  3. Koble potter til Arduino. Koble senterpinnen til hver pott til en av de analoge pinnene på Arduino. Den første pottens senterpinne kobles til A0, den andre potten til A1 og så videre med den siste potten som er koblet til A4.

Trykke knapper:

  1. Plasser knappene på brødbrettet. Plasser de to trykknappene på brødbrettet slik at de strekker seg over midtkanalen.
  2. Koble sammen positive sider. På den ene siden av brødbrettet kobler du en av trykknappens pinner til den positive skinnen.
  3. Koble negative sider. Plasser en av 1K -motstandene på brødbrettet slik at den ene enden er koblet til trykknappens ubrukte pinne og den andre siden av motstanden kobles til den negative skinnen.
  4. Koble til Arduino. Kjør en ledning på raden som kobler knappen til den negative skinnen til D2 -pinnen. Gjør det samme med den andre knappen, men koble den til D3.

Trinn 3: Legge til utganger

Legger til utganger
Legger til utganger

Vi sender ut lyd fra pin 9, så vel som vi blinker en LED på det første trinnet i hver sekvens. Slik konfigurerer du maskinvaren for det.

LED

  1. Plasser en LED i et tomt rom på brødbrettet.
  2. Koble det negative (korte) benet til LED -en til den negative skinnen.
  3. Plasser strømbegrensende motstand. Koble den ene siden av en 330 ohm motstand til det positive (lange) benet på LED -en. Koble den andre siden av motstanden til pinne D4 på Arduino.

Lydutgang

  1. Plasser RC -nettverket. Utgangssignalet fra Arduino kommer fra pin 9, men signalet kan være litt varmere enn noen høyttalere kan håndtere. For å bringe det ned til noe nærmere linjenivå, har jeg lagt til et RC -nettverk (basert på et design av Notes & Volts). Plasser 33nF og 100uF kondensatorer, sammen med 2K motstanden som vist på bildet/skjematisk. Sørg for at den elektrolytiske 100uF kondensatoren er koblet til riktig polaritet (det positive/lange benet går til pinne 9 på Arduino og det negative/korte benet koblet til kontakten).
  2. Koble den negative siden av lydkontakten til bakken. Tilkoblinger for lydkontakt vil variere noe avhengig av hvilken type du bruker, men de fungerer vanligvis alle det samme. Vi må koble hylsen på jekken til bakken. Dette er noen ganger markert med et minus -symbol eller merket som "hylse", "ring" eller "gnd". Hvis det ikke er noen etiketter på lydkontakten, kan det hende du må konsultere databladet eller bare undersøke kontakten nøye og se om du kan finne ut hvilken pinne som er koblet til hylsen eller den ytre ringen på kontakten.
  3. Koble den positive siden av lydkontakten til den negative siden av 100uF kondensatoren. Lydsignalet vårt strømmer nå fra pin 9 på Arduino gjennom RC -nettverket og kommer ut fra den negative siden av 100uF kondensatoren. Vi kobler det til den positive siden av lydkontakten. Dette er vanligvis merket med et pluss -symbol eller kan være merket med "tips". Igjen, hvis den ikke er merket, må du kanskje inspisere den for å finne ut hvilken pinne som skal kobles til spissen av kontakten. Hvis du bruker en stereokontakt, kan det også være en L -spiss og R -spiss -tilkobling. Siden vi sender ut et monosignal, kan du bare koble til en av tipsforbindelsene.

Viktig: Hvis du finner ut at lyden er for stille, kan du kanskje eliminere RC -nettverket i trinn 1 og koble direkte til lyden fra pin 9 på Arduino. Dette burde være greit hvis du kobler lyden til noe med en forhåndsforsterker som eksterne datamaskinhøyttalere der du har en volumknapp, men jeg vil ikke anbefale det for ting som hodetelefoner, ørepropper eller direkte tilkobling til en høyttaler. Hvis du bestemmer deg for å eliminere RC -nettverket, foreslår jeg å skru volumet på høyttalerne helt ned før du starter Arduino og deretter øker volumet gradvis for å unngå å blåse ut høyttalerne.

Etter at du har konfigurert alt, må du sjekke at alle tilkoblingene ser riktige ut og at de stemmer overens med bildet og skjematikken ovenfor

Trinn 4: Last opp koden

Nå som maskinvaren er ferdig konfigurert, er vi klare til å håndtere programvaresiden:

  1. Start Arduino IDE. Start Arduino IDE på datamaskinen din (hvis du ikke har den, kan du laste den ned fra
  2. Last ned Mozzi -biblioteket. Mozzi -biblioteket er det som lar oss bruke Arduino som en synthesizer. For å få dette biblioteket i IDE -en din, gå til Mozzi github -siden https://sensorium.github.io/Mozzi/download/. Klikk på den grønne "Koden" -knappen og velg Last ned ZIP.
  3. Installer Mozzi -biblioteket fra zip -filen. I Arduino IDE, gå til Skisse-> Inkluder bibliotek-> Legg til. ZIP-bibliotek … Naviger til zip-filen du lastet ned for å legge den til. Du bør nå se Mozzi oppført under Skisse-> Inkluder bibliotek-delen.
  4. Last ned Mosquito I Arduino -koden. Du kan få dette fra mitt github -nettsted https://github.com/analogsketchbook/mosquito_one. (Vær oppmerksom på at skjemaene også er tilgjengelige der hvis du trenger dem for ledningsreferanse.
  5. Koble Arduino til datamaskinen og last opp koden.

Trinn 5: Rote rundt

Det er det. Du bør kunne koble høyttalerne til lydkontakten og høre den søte lyden av arpeggiert syntese fra den ittybitty Nano! Hvis du ikke hører noe i begynnelsen, kan du prøve å sentrere knappene på alle grytene for å sikre at du får anstendig startverdier.

Her er hva kontrollene gjør:

Gryter:

Rate: Dette styrer hvor raskt sequencer spiller. Å skru den ned spiller diskrete notater i rekkefølge. Ved å skru den opp smører notene sammen for å lage helt nye bølgeformer.

Legato: Den andre potten styrer legato eller notatlengde. Hvis du dreier den mer til venstre, produseres korte, sticatto -notater, mens du dreier den til høyre for å produsere lengre notater.

Pitch: Dette angir basishøyden for sekvensen. Stigningskontrollen setter MIDI -verdier, så det øker/reduserer tonehøyden i halvtone i stedet for et kontinuerlig pitchskift.

Fase: Når du dreier denne knappen til høyre, introduseres en subtil faseeffekt. Teknisk sett forårsaker dette at de to oscillatorene i Mosquito I blir litt detunert, noe som er årsaken til fasingen. Det sporer imidlertid ikke med tonehøyden, så faseringseffekten er sannsynligvis mer merkbar på noter med lavere tonehøyde.

Filter: Denne knappen regulerer grensefrekvensen for et lavpassfilter. Hvis du dreier den til venstre, kuttes de høye frekvensene av og produserer en mer dempet lyd, mens du svinger den til høyre gir en lysere lyd.

Knapper:

Mygg har over tjue forskjellige sekvenser den kan spille som standard. Trykknappene lar deg velge hvilken sekvens som skal spilles. Den ene knappen flytter deg oppover listen over sekvenser, og den andre går nedover listen.

Trinn 6: Tilpasning

Tilpasning
Tilpasning

Jeg har lagt til en haug med standardsekvenser, for det meste forskjellige skalaer, men du kan tilpasse koden ganske enkelt for å endre sekvensen av notater som spilles, legge til nye eller endre antall notater i en sekvens. Nedenfor er detaljene om hvordan det blir gjort hvis du vil tilpasse det.

Endre notater i eksisterende rekkefølge

Sekvensene lagres i en rekke matriser kalt NOTES. Hver note er lagret som en MIDI -notatverdi, så hvis du vil endre notater i en bestemt sekvens, må du bare endre MIDI -notatnumrene for den sekvensen. Standardoppsettet er å spille av 8 trinn per sekvens, slik at du bare kan ha 8 MIDI -verdier i en sekvens (se nedenfor hvis du vil ha forskjellige sekvenslengder).

En ting å merke seg, pitch -knappen legger til en note -offset til MIDI -verdiene som er angitt i NOTES -arrayet. Når knappen er sentrert, spiller den MIDI-notene som er angitt i matrisen, men når du dreier toneknappen, legger den til eller trekker fra en halvtone til tonene som spilles.

Legger til nye sekvenser

Du kan legge til nye sekvenser i NOTAT-matrisen ved ganske enkelt å legge til en ny 8-noters matrise på slutten av listen. Hvis du gjør dette, må du også endre verdien på varianten numSequences for å matche det nye antallet sekvenser. For eksempel har NOTES -arrayet 21 sekvenser som standard, så variabelen numSequences er satt til 21. Hvis du legger til en ny sekvens, må du endre varianten numSequences til 22.

Du kan legge til så mange nye sekvenser du vil.

Endre sekvenslengde

Hvis du vil endre lengden på sekvensene dine (hvis du vil si en 4-trinns eller 16-trinns sekvens), kan du gjøre det, men den eneste advarselen er at alle sekvensene må ha samme lengde. Du må også angi variabelen numNotes for å matche lengden på sekvensene dine.

Andre endringer

Det er en rekke andre tilpasninger som er mulige, for eksempel bytte av bølgeformstyper, filterinnstillinger/verdier, som ligger utenfor omfanget av denne opplæringen. Å finne ut Mozzi -koden kan være litt utfordrende i begynnelsen, men jeg har prøvd å dokumentere koden så mye som mulig for å vise hva de forskjellige delene av koden gjør.

Det er noen hoveddeler av koden for Mozzi som har ganske spesifikke bruksområder, og jeg har listet dem opp nedenfor for å gi deg en ide om hva de brukes til:

  • setup () - Hvis du har programmert for Arduinos før du er kjent med denne funksjonen, og den er ganske mye brukt den samme i Mozzi. Vi bruker det mest til å sette opp standardinnstillinger for oscillatorer, filtre, etc.
  • updateControl () - Det er her brorparten av Mozzi -koden gjør det. Det er her vi leser pot- og knappverdier, kartlegger og transformerer disse verdiene til feed til synthesizeren, og der sekvensering blir gjort.
  • updateAudio () - Dette er den siste utgangen fra Mozzi -biblioteket. Vanligvis er koden her veldig liten og slank fordi denne funksjonen brukes av Mozzi for å maksimere alle klokkesyklusene den kan. Som du kan se i myggkoden, kan det være litt kryptisk, men alt vi gjør er å kombinere/multiplisere våre forskjellige bølgeformer og deretter bitforskyve dem for å passe til et bestemt tallområde. Det er best å holde denne funksjonen veldig lett (ikke seriesamtaler eller lesepinner) og sette de fleste tingene i funksjonen controlUpdate () i stedet. Mozzi -dokumentasjonen beskriver dette mer grundig.

Anbefalt: