Innehållsförteckning:

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

Video: Arpeggiating Synthesizer (Mosquito I): 6 steg

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

Mosquito I är en liten arpeggiating synthesizer som använder en Arduino Nano och Mozzi ljud syntes bibliotek. Den kan spela över tjugo 8-stegssekvenser men du kan lägga till så många anpassade sekvenser som du vill. Det är relativt enkelt att installera och kräver inte många delar.

Tillbehör:

  • Arduino Nano (eller vilken Arduino som helst borde fungera)
  • 5 st potentiometrar (10K linjär)
  • 2 st Tryckknappar
  • 1 st LED
  • 1 st motstånd (330 ohm)
  • 2 st motstånd (1K)
  • 1 st motstånd (2K)
  • 1 st elektrolytkondensator (100 uF)
  • 1 st keramisk kondensator (33 nF)
  • 1 st Stereokontakt
  • Anslutningstråd
  • Bakbord

Steg 1: Konfigurera Arduino

Konfigurera Arduino
Konfigurera Arduino
Konfigurera Arduino
Konfigurera Arduino

Låt oss först få Nano på brödbrädan och ställ in vår kraft:

  1. Placera Nano på brödbrädan. Placera som visas på bilden ovan. Den ska sträcka sig över brödbrädans mittkanal. Du vill ha den placerad mot ena änden av brödbrädan, med USB -porten vänd åt den sidan. Detta gör att kabeln inte kommer i vägen när vi ansluter den. Om du använder en större Arduino som Uno eller Mega, kommer du naturligtvis inte att montera den på brödbrädet.
  2. Anslut strömskenor till Arduino. Anslut en av de positiva (röda) skenorna på din brödbräda till Arduinos 5V -stift med hjälp av tråd eller bygelkablar. Anslut sedan en av de negativa (blå) skenorna till en av Nanos GND -stift.
  3. Anslut strömskenor till varandra. För att få ström längs skenorna på båda sidor av brödbrädet, anslut skenorna på vardera sidan av brödbrädan till varandra genom att dra en tråd från den positiva skenan på ena sidan till den positiva skenan på den andra sidan. Upprepa detta med de negativa skenorna.

Steg 2: Lägga till kontrollerna

Lägga till kontrollerna
Lägga till kontrollerna

Mygga I använder fem potentiometrar och två knappar för kontroller.

Potentiometrar:

  1. Lägg krukorna på brödbrädan. Placera krukorna så att varje stift är på sin egen rad.
  2. Anslut krukor till kraftskenor. Anslut den vänstra stiften på varje gryta (om du tittar på vredets sida) till en av de negativa skenorna på brödbrädet. Anslut den högra stiftet på varje gryta till en av de positiva skenorna på brödbrädan.
  3. Anslut krukor till Arduino. Anslut mittpinnen på varje kruka till en av de analoga stiften på Arduino. Den första pottens mittstift ansluts till A0, den andra potten till A1 och så vidare med den sista potten ansluten till A4.

Trycka på knappar:

  1. Placera knapparna på brödbrädan. Placera de två tryckknapparna på brödbrädan så att de ligger över mittkanalen.
  2. Anslut positiva sidor. På ena sidan av brödbrädet, anslut en av tryckknappens stift till den positiva skenan.
  3. Anslut negativa sidor. Placera ett av 1K -motstånden på brödbrädan så att ena änden är ansluten till tryckknappens oanvända stift och den andra sidan av motståndet ansluts till den negativa skenan.
  4. Anslut -knappen till Arduino. Dra en tråd på raden som ansluter knappen till den negativa skenan till D2 -stiftet. Gör samma sak med den andra knappen men anslut den till D3.

Steg 3: Lägga till utgångar

Lägga till utgångar
Lägga till utgångar

Vi matar ut ljud från stift 9 samt blinkar en lysdiod i det första steget i varje sekvens. Så här konfigurerar du hårdvaran för det.

LED

  1. Placera en lysdiod i ett tomt utrymme på brödbrädan.
  2. Anslut lysdiodens negativa (korta) ben till den negativa skenan.
  3. Placera strömbegränsande motstånd. Anslut ena sidan av ett 330 ohm motstånd till det positiva (långa) benet på lysdioden. Anslut den andra sidan av motståndet till stift D4 på Arduino.

Ljudutgång

  1. Placera RC -nätverket. Utsignalen från Arduino kommer från stift 9 men signalen kan vara lite hetare än vissa högtalare klarar. För att få ner det till något närmare linjenivå har jag lagt till ett RC -nätverk (baserat på en design av Notes & Volts). Placera 33nF- och 100uF -kondensatorerna tillsammans med 2K -motståndet enligt bilden/schemat. Se till att den elektrolytiska 100uF -kondensatorn är ansluten med rätt polaritet (det positiva/långa benet går till stift 9 på Arduino och det negativa/korta benet som är anslutet till uttaget).
  2. Anslut den negativa sidan av ljuduttaget till jord. Ljuduttagens anslutningar varierar något beroende på vilken typ du använder, men de fungerar i allmänhet alla likadant. Vi måste ansluta jackens hylsa till marken. Detta är ibland markerat med en minussymbol eller märkt som "hylsa", "ring" eller "gnd". Om det inte finns några etiketter på ditt ljuduttag kan du behöva konsultera databladet eller göra en närmare inspektion av uttaget och se om du kan avgöra vilken stift som är ansluten till hylsan eller ytterringen på uttaget.
  3. Anslut den positiva sidan av ljuduttaget till den negativa sidan av 100uF -kondensatorn. Vår ljudsignal flödar nu från stift 9 på Arduino genom RC -nätverket och kommer ut från den negativa sidan av 100uF -kondensatorn. Vi ansluter det till den positiva sidan av vårt ljuduttag. Detta är vanligtvis markerat med en plussymbol eller kan vara märkt "tips". Återigen, om den inte är märkt kan du behöva inspektera den för att ta reda på vilken stift som ansluter till spetsen på uttaget. Om du använder ett stereokontakt kan det också finnas en L -spets och en R -spetsanslutning. Eftersom vi matar ut en monosignal kan du bara ansluta till endera av spetsanslutningarna.

Viktigt: Om du tycker att ljudet är för tyst kan du kanske eliminera RC -nätverket i steg 1 och ansluta direkt till ljudet från pin 9 på Arduino. Detta borde vara okej om du ansluter ljudet till något med en förförstärkare som externa datorhögtalare där du har en volymknapp, men jag skulle inte rekommendera det för saker som hörlurar, öronsnäckor eller direkt anslutning till en högtalare. Om du bestämmer dig för att stänga av RC -nätverket föreslår jag att du sänker volymen på högtalarna hela vägen innan du sätter igång Arduino och sedan gradvis ökar volymen för att undvika att blåsa ut högtalarna.

När du har konfigurerat allt, dubbelkolla att alla anslutningar ser korrekt ut och matchar bilden och schemat ovan

Steg 4: Ladda upp koden

Nu när hårdvaran är klar är vi redo att ta itu med programvarusidan:

  1. Starta Arduino IDE. Starta Arduino IDE på din dator (om du inte har den kan du ladda ner den från
  2. Ladda ner Mozzi -biblioteket. Mozzi -biblioteket är det som tillåter oss att använda vår Arduino som en synthesizer. För att få detta bibliotek i din IDE, gå till Mozzi github -sidan https://sensorium.github.io/Mozzi/download/. Klicka på den gröna "Koden" -knappen och välj Ladda ner ZIP.
  3. Installera Mozzi -biblioteket från zip -filen. I Arduino IDE, gå till Sketch-> Inkludera bibliotek-> Lägg till. ZIP-bibliotek … Navigera till zip-filen du laddade ner för att lägga till det. Du bör nu se Mozzi listad under avsnittet Sketch-> Inkludera bibliotek.
  4. Ladda ner Mosquito I Arduino -koden. Du kan få detta från min github -webbplats https://github.com/analogsketchbook/mosquito_one. (Observera att schemat också finns där om du behöver dem för ledningsreferens.
  5. Anslut Arduino till datorn och ladda upp koden.

Steg 5: Mysa runt

Det är allt. Du bör kunna ansluta dina högtalare till ljuduttaget och höra det söta ljudet av arpeggiated syntes från den ittybitty Nano! Om du inte hör något till en början, försök att centrera rattarna på alla krukor för att se till att du får anständiga startvärden.

Så här gör kontrollerna:

Krukor:

Rate: Detta styr hur snabbt sequencer spelas upp. Att stänga av spelar diskreta toner i följd. Om du vrider upp det smetar anteckningarna ihop för att skapa helt nya vågformer.

Legato: Den andra potten styr legato- eller notlängden. Om du vrider den mer åt vänster produceras korta, sticattotoner, medan du vrider den till höger ger längre toner.

Pitch: Detta ställer in bashöjden för sekvensen. Tonhöjdskontrollen ställer in MIDI -värden, så det ökar/minskar tonhöjden i halvtonhet snarare än en kontinuerlig tonhöjdsförskjutning.

Fas: Om du vrider den här ratten till höger introduceras en subtil faseffekt. Tekniskt sett orsakar detta att de två oscillatorerna i Mosquito I blir något avstängda, vilket är orsaken till fasningen. Det spårar dock inte med tonhöjden så faseffekten är förmodligen mer märkbar på toner med lägre tonhöjd.

Filter: Denna ratt styr avstängningsfrekvensen för ett lågpassfilter. Om du vrider den till vänster stängs de höga frekvenserna av och ger ett mer dämpat ljud, medan du vrider det till höger ger ett ljusare ljud.

Knappar:

Myggan har över tjugo olika sekvenser som den kan spela som standard. Med tryckknapparna kan du välja vilken sekvens som ska spelas. En knapp flyttar dig upp i listan över sekvenser och den andra går ner i listan.

Steg 6: Anpassning

Anpassning
Anpassning

Jag har lagt till ett gäng standardsekvenser, mestadels olika skalor, men du kan anpassa koden ganska enkelt för att ändra sekvensen av noter som spelas, lägga till nya eller ändra antalet anteckningar i en sekvens. Nedan finns detaljer om hur det görs om du vill anpassa det.

Ändra anteckningar i befintlig sekvens

Sekvenserna lagras i en uppsättning matriser som kallas NOTER. Varje anteckning lagras som ett MIDI -notvärde, så om du vill ändra anteckningar i en viss sekvens, ändrar du bara MIDI -notnummer för den sekvensen. Standardinställningen är att spela upp 8 steg per sekvens så att du bara kan ha 8 MIDI -värden i en sekvens (se nedan om du vill ha olika sekvenslängder).

En sak att notera, tonhöjdsknappen lägger till en notförskjutning till MIDI -värdena som anges i NOTES -arrayen. När vredet är centrerat spelar det MIDI-noterna som anges i matrisen, men när du vrider tonvredsknappen lägger den till eller subtraherar en halvton till de toner som spelas.

Lägger till nya sekvenser

Du kan lägga till nya sekvenser till NOTES-arrayen genom att helt enkelt lägga till en ny 8-noters array i slutet av listan. Om du gör detta måste du också ändra värdet på variabeln numSequences för att matcha det nya antalet sekvenser. Till exempel har NOTES -arrayen 21 sekvenser som standard så variabeln numSequences är inställd på 21. Om du lägger till en ny sekvens måste du ändra variabeln numSequences till 22.

Du kan lägga till så många nya sekvenser som du vill.

Ändra sekvenslängd

Om du vill ändra längden på dina sekvenser (om du vill säga en 4-stegs eller 16-stegs sekvens) kan du göra det, men den enda varningen är att alla sekvenser måste ha samma längd. Du måste också ställa in variabeln numNotes så att den matchar längden på dina sekvenser.

Andra förändringar

Det finns ett antal andra anpassningar som är möjliga, till exempel att byta vågformstyper, filterinställningar/värden, som ligger utanför räckvidden för den här självstudien. Att räkna ut Mozzi -kod kan vara lite utmanande först, men jag har försökt dokumentera koden så mycket som möjligt för att visa vad de olika delarna av koden gör.

Det finns några huvuddelar av koden för Mozzi som har ganska specifika användningsområden och jag har listat dem nedan för att ge dig en uppfattning om vad de används till:

  • setup () - Om du har programmerat för Arduinos innan du är bekant med den här funktionen och den har använts ungefär samma i Mozzi. Vi använder det mest för att ställa in standardinställningar för oscillatorer, filter, etc.
  • updateControl () - Det är här lejonparten av Mozzi -koden gör sitt jobb. Det är där vi läser pot- och knappvärden, kartlägger och omvandlar dessa värden för att mata in i synthesizern och där sekvensering görs.
  • updateAudio () - Detta är den sista utdata från Mozzi -biblioteket. Normalt hålls koden här väldigt liten och smal eftersom den här funktionen används av Mozzi för att maximera alla klockcykler den kan. Som du kan se i myggkoden kan det vara lite kryptiskt men allt vi gör gör vi i princip för att kombinera/multiplicera våra olika vågformer och sedan bitshifta dem för att passa ett specifikt nummerintervall. Det är bäst att hålla den här funktionen väldigt lätt (inte seriesamtal eller läspinnar) och lägga de flesta sakerna i funktionen controlUpdate () istället. Mozzi -dokumentationen beskriver detta mer ingående.

Rekommenderad: