Inhoudsopgave:

Arpeggio-synthesizer (Mosquito I): 6 stappen
Arpeggio-synthesizer (Mosquito I): 6 stappen

Video: Arpeggio-synthesizer (Mosquito I): 6 stappen

Video: Arpeggio-synthesizer (Mosquito I): 6 stappen
Video: Mosquito 2024, Juli-
Anonim
Arpeggio-synthesizer (Mosquito I)
Arpeggio-synthesizer (Mosquito I)

Mosquito I is een kleine arpeggiosynthesizer die gebruik maakt van een Arduino Nano en de Mozzi-geluidssynthesebibliotheek. Het kan meer dan twintig reeksen van 8 stappen afspelen, maar u kunt zoveel aangepaste reeksen toevoegen als u wilt. Het is relatief eenvoudig in te stellen en vereist niet veel onderdelen.

Benodigdheden:

  • Arduino Nano (of een Arduino zou echt moeten werken)
  • 5 ea Potentiometers (10K Lineair)
  • 2 stuks Drukknoppen
  • 1 stuk LED
  • 1 stuk Weerstand (330 ohm)
  • 2 stuks Weerstand (1K)
  • 1 ea Weerstand (2K)
  • 1 st. Elektrolytische condensator (100 uF)
  • 1 stuk Keramische condensator (33 nF)
  • 1 stuk stereo-aansluiting
  • Aansluitdraad
  • Breadboard

Stap 1: De Arduino instellen

De Arduino instellen
De Arduino instellen
De Arduino instellen
De Arduino instellen

Laten we eerst de Nano op het breadboard zetten en onze kracht instellen:

  1. Plaats de Nano op het breadboard. Plaats zoals weergegeven in de afbeelding hierboven. Het moet zich over het middenkanaal van het breadboard uitstrekken. U wilt dat deze zich aan het ene uiteinde van het breadboard bevindt, met de USB-poort aan die kant. Zo zit de kabel niet in de weg als we hem inpluggen. Als je een grotere Arduino gebruikt zoals de Uno of Mega, monteer je hem natuurlijk niet op het breadboard.
  2. Sluit stroomrails aan op Arduino. Sluit een van de positieve (rode) rails van uw breadboard aan op de 5V-pin van de Arduino met behulp van draad of jumperdraden. Sluit vervolgens een van de negatieve (blauwe) rails aan op een van de GND-pinnen van de Nano.
  3. Verbind de stroomrails met elkaar. Om stroom langs de rails aan beide zijden van het breadboard te krijgen, verbindt u de rails aan weerszijden van het breadboard met elkaar door een draad van de positieve rail aan de ene kant naar de positieve rail aan de andere kant te leiden. Herhaal dit met de negatieve rails.

Stap 2: De bedieningselementen toevoegen

De bedieningselementen toevoegen
De bedieningselementen toevoegen

Mosquito I gebruikt vijf potentiometers en twee knoppen voor bedieningselementen.

Potentiometers:

  1. Plaats de potten op het breadboard. Plaats de potten zo dat elke pin op zijn eigen rij staat.
  2. Sluit potten aan op stroomrails. Verbind de linker pin van elke pot (als je naar de kant van de knop kijkt) met een van de negatieve rails op het breadboard. Verbind de rechter pin van elke pot met een van de positieve rails van het breadboard.
  3. Sluit potten aan op Arduino. Verbind de middelste pin van elke pot met een van de analoge pinnen op de Arduino. De middelste pin van de eerste pot is verbonden met A0, de tweede pot met A1 enzovoort, waarbij de laatste pot is verbonden met A4.

Drukknoppen:

  1. Plaats knoppen op het breadboard. Plaats de twee drukknoppen op het breadboard zodat ze over het middelste kanaal vallen.
  2. Verbind positieve kanten. Verbind aan één kant van het breadboard een van de pinnen van de drukknop met de positieve rail.
  3. Verbind negatieve kanten. Plaats een van de 1K-weerstanden op het breadboard, zodat het ene uiteinde is verbonden met de ongebruikte pin van de drukknop en de andere kant van de weerstand is verbonden met de negatieve rail.
  4. Verbind de knop met Arduino. Leid een draad op de rij die de knop verbindt met de negatieve rail naar de D2-pin. Doe hetzelfde met de andere knop, maar sluit deze aan op D3.

Stap 3: Uitgangen toevoegen

Uitgangen toevoegen
Uitgangen toevoegen

We voeren audio uit vanaf pin 9 en knipperen een LED bij de eerste stap van elke reeks. Hier leest u hoe u de hardware daarvoor instelt.

LED

  1. Plaats een LED in een lege ruimte op het breadboard.
  2. Sluit de negatieve (korte) poot van de LED aan op de negatieve rail.
  3. Plaats stroombegrenzende weerstand. Sluit een kant van een weerstand van 330 ohm aan op het positieve (lange) been van de LED. Sluit de andere kant van de weerstand aan op pin D4 van de Arduino.

Audio uitgang

  1. Plaats het RC-netwerk. Het uitgangssignaal van de Arduino komt van pin 9, maar het signaal kan iets heter zijn dan sommige luidsprekers aankunnen. Om het naar iets dichter bij lijnniveau te brengen, heb ik een RC-netwerk toegevoegd (gebaseerd op een ontwerp van Notes & Volts). Plaats de 33nF- en 100uF-condensatoren, samen met de 2K-weerstand, zoals weergegeven in de afbeelding/het schema. Zorg ervoor dat de elektrolytische 100uF-condensator met de juiste polariteit is aangesloten (de positieve / lange poot gaat naar pin 9 op de Arduino en de negatieve / korte poot is aangesloten op de jack).
  2. Verbind de negatieve kant van de audio-aansluiting met aarde. Audio-aansluitingen kunnen enigszins variëren, afhankelijk van het type dat u gebruikt, maar ze werken over het algemeen allemaal hetzelfde. We moeten de huls van de jack met aarde verbinden. Dit wordt soms gemarkeerd met een minteken of aangeduid als "sleeve", "ring" of "gnd". Als er geen labels op uw audio-aansluiting zitten, moet u mogelijk de datasheet raadplegen of gewoon de aansluiting nauwkeurig inspecteren en kijken of u kunt bepalen welke pin is aangesloten op de huls of buitenring van de aansluiting.
  3. Verbind de positieve kant van de audio-aansluiting met de negatieve kant van de 100uF condensator. Ons audiosignaal stroomt nu van pin 9 van de Arduino door het RC-netwerk en komt uit de negatieve kant van de 100uF-condensator. We zullen dat verbinden met de positieve kant van onze audio-aansluiting. Dit is meestal gemarkeerd met een plusteken of kan worden aangeduid met "tip". Nogmaals, als het niet is gelabeld, moet u het mogelijk inspecteren om erachter te komen welke pin wordt aangesloten op de punt van de aansluiting. Als u een stereo-aansluiting gebruikt, kan er ook een L-tip en R-tip verbinding zijn. Omdat we een monosignaal uitvoeren, kunt u gewoon verbinding maken met een van de tip-aansluitingen.

Belangrijk: Als u vindt dat de audio te zacht is, kunt u mogelijk het RC-netwerk in stap 1 uitschakelen en rechtstreeks verbinding maken met de audio vanaf pin 9 van de Arduino. Dit zou goed moeten zijn als je de audio aansluit op iets met een voorversterker zoals externe computerluidsprekers waar je een volumeknop hebt, maar ik zou het niet aanbevelen voor zaken als een koptelefoon, oordopjes of rechtstreekse bedrading naar een luidspreker. Als je besluit om het RC-netwerk te elimineren, raad ik aan om het volume van je luidsprekers helemaal naar beneden te draaien voordat je de Arduino start, en dan geleidelijk het volume te verhogen om te voorkomen dat je luidsprekers uitblazen.

Nadat u alles hebt ingesteld, controleert u nogmaals of alle verbindingen er correct uitzien en overeenkomen met de afbeelding en het schema hierboven

Stap 4: De code uploaden

Nu de hardware helemaal is ingesteld, zijn we klaar om de softwarekant aan te pakken:

  1. Start de Arduino IDE. Start de Arduino IDE op uw computer (als u deze niet hebt, kunt u deze downloaden van
  2. Download de Mozzi-bibliotheek. Dankzij de Mozzi-bibliotheek kunnen we onze Arduino als synthesizer gebruiken. Om deze bibliotheek in uw IDE te krijgen, gaat u naar de Mozzi github-pagina https://sensorium.github.io/Mozzi/download/. Klik op de groene knop "Code" en kies ZIP downloaden.
  3. Installeer de Mozzi-bibliotheek vanuit het zipbestand. Ga in de Arduino IDE naar Sketch->Include Library->Add. ZIP Library… Navigeer naar het zipbestand dat je hebt gedownload om het toe te voegen. U zou nu Mozzi moeten zien vermeld onder het gedeelte Sketch->Bibliotheek opnemen.
  4. Download de Mosquito I Arduino-code. Je kunt dit krijgen van mijn github-site https://github.com/analogsketchbook/mosquito_one. (Let op: de schema's zijn daar ook beschikbaar als u ze nodig hebt voor bedradingsreferentie.
  5. Sluit de Arduino aan op de computer en upload de code.

Stap 5: rotzooien

Dat is het. Je zou in staat moeten zijn om je luidsprekers op de audio-aansluiting aan te sluiten en het zoete geluid van arpeggio-synthese uit die kleine Nano te horen! Als je eerst niets hoort, probeer dan de knoppen op alle potten te centreren om er zeker van te zijn dat je fatsoenlijke startwaarden krijgt.

Dit is wat de bedieningselementen doen:

Potten:

Rate: Dit bepaalt hoe snel de sequencer afspeelt. Als u het lager zet, worden achtereenvolgens discrete noten afgespeeld. Door het helemaal naar boven te draaien, worden de noten samengesmolten om volledig nieuwe golfvormen te creëren.

Legato: De tweede pot bepaalt de legato- of nootlengte. Als u de knop meer naar links draait, worden korte, statische noten geproduceerd, terwijl u naar rechts draait om langere noten te produceren.

Pitch: Dit stelt de basistoonhoogte voor de sequens in. De toonhoogteregeling stelt MIDI-waarden in, dus het verhoogt/verlaagt de toonhoogte in halve toon in plaats van een continue toonhoogteverschuiving.

Fase: Als u deze knop naar rechts draait, wordt een subtiel faseringseffect geïntroduceerd. Technisch gezien zorgt dit ervoor dat de twee oscillatoren in Mosquito I enigszins ontstemd zijn, wat de fasering veroorzaakt. Het volgt echter niet met de toonhoogte, dus het phasing-effect is waarschijnlijk meer merkbaar bij noten met een lagere toonhoogte.

Filter: Deze knop regelt de afsnijfrequentie van een laagdoorlaatfilter. Als u de knop naar links draait, worden de hoge frequenties afgebroken en krijgt u een meer gedempt geluid, terwijl u naar rechts draait voor een helderder geluid.

Toetsen:

Mosquito heeft meer dan twintig verschillende reeksen die het standaard kan spelen. Met de drukknoppen kunt u selecteren welke sequentie wordt afgespeeld. Met de ene knop gaat u omhoog in de lijst met sequenties en met de andere omlaag in de lijst.

Stap 6: Aanpassing

Maatwerk
Maatwerk

Ik heb een aantal standaardreeksen toegevoegd, meestal verschillende toonladders, maar je kunt de code vrij eenvoudig aanpassen om de volgorde van gespeelde noten te wijzigen, nieuwe toe te voegen of het aantal noten in een reeks te wijzigen. Hieronder vindt u de details van hoe dat wordt gedaan voor het geval u het wilt aanpassen.

Notities in bestaande reeks wijzigen

De sequenties worden opgeslagen in een reeks arrays die NOTES worden genoemd. Elke noot wordt opgeslagen als een MIDI-nootwaarde, dus als u noten in een bepaalde reeks wilt wijzigen, wijzigt u gewoon de MIDI-nootnummers voor die reeks. De standaardinstelling is om 8 stappen per sequentie te spelen, dus u kunt slechts 8 MIDI-waarden in een sequentie hebben (zie hieronder als u verschillende sequentielengtes wilt hebben).

Een ding om op te merken, de toonhoogteknop voegt een nootoffset toe aan de MIDI-waarden die zijn gespecificeerd in de NOTES-array. Als de knop in het midden staat, speelt hij de MIDI-noten die in de array worden aangegeven, maar als je aan de pitchknop draait, voegt hij een halve toon toe aan of trekt hij af van de gespeelde noten.

Nieuwe reeksen toevoegen

U kunt nieuwe reeksen aan de NOTES-array toevoegen door eenvoudigweg een nieuwe array van 8 noten toe te voegen aan het einde van de lijst. Als u dit echter doet, moet u ook de waarde van de variabele numSequences wijzigen zodat deze overeenkomt met het nieuwe aantal reeksen. De NOTES-array heeft bijvoorbeeld standaard 21 reeksen, dus de variabele numSequences is ingesteld op 21. Als u één nieuwe reeks toevoegt, moet u de variabele numSequences wijzigen in 22.

U kunt zoveel nieuwe reeksen toevoegen als u wilt.

Sequentielengte wijzigen

Als u de lengte van uw reeksen wilt wijzigen (als u bijvoorbeeld een reeks van 4 of 16 stappen wilt), kunt u dat doen, maar het enige voorbehoud is dat alle reeksen dezelfde lengte moeten hebben. U moet ook de numNotes-variabele instellen om overeen te komen met de lengte van uw reeksen.

Andere wijzigingen

Er zijn een aantal andere aanpassingen die mogelijk zijn, zoals het wisselen van golfvormtypes, filterinstellingen/waarden, die buiten het bestek van deze tutorial vallen. Mozzi-code uitzoeken kan in het begin een beetje uitdagend zijn, maar ik heb geprobeerd de code zoveel mogelijk te documenteren om te laten zien wat de verschillende delen van de code doen.

Er zijn een paar hoofdonderdelen van de code voor Mozzi die vrij specifiek worden gebruikt en ik heb ze hieronder opgesomd om je een idee te geven van waar ze voor worden gebruikt:

  • setup() - Als je eerder voor Arduinos hebt geprogrammeerd, ben je bekend met deze functie en wordt deze vrijwel hetzelfde gebruikt in Mozzi. We gebruiken het meestal om standaardinstellingen in te stellen voor oscillatoren, filters, enz.
  • updateControl() - Dit is waar het leeuwendeel van de Mozzi-code zijn werk doet. Het is waar we pot- en knopwaarden lezen, die waarden in kaart brengen en transformeren om in de synthesizer te worden ingevoerd, en waar de sequencing wordt gedaan.
  • updateAudio() - Dit is de laatste uitvoer van de Mozzi-bibliotheek. Meestal wordt de code hier erg klein en slank gehouden omdat deze functie door Mozzi wordt gebruikt om alle klokcycli te maximaliseren. Zoals je kunt zien in de muggencode, kan het een beetje cryptisch zijn, maar het enige wat we in feite doen, is het combineren/vermenigvuldigen van onze verschillende golfvormen en ze vervolgens bitshiften om in een specifiek nummerbereik te passen. Het is het beste om deze functie heel licht te houden (geen seriële oproepen of leespinnen) en in plaats daarvan de meeste dingen in de functie controlUpdate() te plaatsen. De Mozzi-documentatie geeft hier meer details over.

Aanbevolen: