Inhoudsopgave:

Arduino Multi-track MIDI Loop Station - Ajarnpa
Arduino Multi-track MIDI Loop Station - Ajarnpa

Video: Arduino Multi-track MIDI Loop Station - Ajarnpa

Video: Arduino Multi-track MIDI Loop Station - Ajarnpa
Video: DIY Multitrack Looper (An ESP32 Audio Kit - Arduino audio project) 2024, November
Anonim
Arduino Multi-track MIDI Loop Station
Arduino Multi-track MIDI Loop Station
Arduino Multi-track MIDI Loop Station
Arduino Multi-track MIDI Loop Station
Arduino Multi-track MIDI Loop Station
Arduino Multi-track MIDI Loop Station

Een loopstation, of een looper, is in wezen een hulpmiddel om uw instrumentale riffs (loops) in realtime af te spelen. Het is niet bedoeld als opnamemedium, maar als instrument om de inspiratie zonder afleiding vorm te geven (en uiteindelijk live op te treden…).

Er zijn tal van loopstations voor audio-opname, zowel in de vorm van speciale hardware (bijna elke fabrikant van gitaarpedaal heeft zijn eigen product) of computersoftware (de uitstekende Linux Sooper Looper of Windows Mobius, om de meest bekende te noemen). Ik kon maar een paar projecten vinden over doe-het-zelf niet-audio maar MIDI-loopers, wat een hulpmiddel betekent om MIDI-gebeurtenissen op te nemen en ze onmiddellijk in een lus af te spelen; de meeste van deze projecten (allemaal, moet ik zeggen) zijn verlaten of verloren gegaan … nou, hier zijn we met een compleet project voor iedereen!

Dit Arduino MIDI-loopstation houdt inkomende MIDI-gebeurtenissen eenvoudig bij en speelt ze af. Je hoeft alleen maar het opnamepedaal in te trappen, je beste riff ooit te creëren en de opname te stoppen door nogmaals op het pedaal te drukken. Supermakkelijk:)

Dit project is gebaseerd op gemakkelijk te vinden open hardware (Arduino DUE), software (mijn eigen firmware en Arduino IDE) en kan worden aangepast aan uw voorkeuren.

Laten we het doen!

PS: ja, het is super goedkoop!

Stap 1: Grenzen

Voordat u hardware-onderdelen voor het project gaat aanschaffen, wil ik u vertellen wat de limieten zijn, zodat u kunt beslissen om verder te gaan of hier te stoppen.

- vanwege hardwarebeperkingen (in wezen Aduino DUE-geheugen), is de standaard maximale lengte van de frase die u kunt opnemen beperkt tot 46 seconden.

- loops kunnen na het afsluiten niet worden opgeslagen en afgespeeld. U kunt ze echter naar een pc sturen en opslaan.

- er is geen kwantisering van noten.

- MIDI-klok wordt ondersteund, maar bevindt zich op dit moment in een voorbereidend stadium.

- Opgenomen MIDI-berichten zijn noot aan, noot uit, besturingswijzigingen en toonhoogteverbuiging; andere MIDI-berichten zoals After Touch, Program Change, SysEx, enz. worden genegeerd.

- max polyfonie is standaard ingesteld op 10 (wederom, Aduino DUE geheugenlimieten).

Positief is dat MIDI-streams van meerdere verschillende instrumenten, die elk op zijn eigen kanaal uitzenden, worden ondersteund; dit betekent dat je meerdere MIDI-instrumenten tegelijk kunt opnemen, gelaagd of met hun eigen track (meer profs bij de volgende stap;)).

Als leven met deze beperkingen redelijk lijkt (en dat is het voor mij), zul je een heel goede tijd hebben met dit ding;)

Stap 2: Hoe het werkt

Het MIDI-loopstation is hier heel eenvoudig te bedienen. Het werkt op een manier die vergelijkbaar is met de hardware-audio-loopstations die elke fabrikant van gitaarpedalen in zijn eigen catalogus heeft.

1) Selecteer de track waarop u uw MIDI-sequence wilt opnemen. Standaard wordt track "één" gekozen, maar u kunt deze wijzigen door op een van de trackknoppen te drukken (één voor elke track).

2) Wanneer u de eerste keer op de "REC"-schakelaar/voetpedaal drukt, wordt de grijper ingeschakeld. De groene LED licht op. Het zal wachten tot uw eerste noot is ontvangen voordat u begint met het opnemen van de eigenlijke sequens/riff.

3) Als u klaar bent met uw sequens, drukt u nogmaals op de "REC"-schakelaar/voetpedaal om de werkelijke lengte van de riff te bepalen. De groene LED gaat uit. De looper begint uw MIDI-sequence onmiddellijk te reproduceren. Als u de maximale tijd bereikt, stopt de opname automatisch en begint de sequentie in een lus te worden gereproduceerd.

4) Nu kunt u besluiten om uw sequence op de huidige track te overdubben of een nieuwe track te selecteren en daarop op te nemen, door de "REC"-schakelaar/voetpedaal in te drukken. In beide gevallen zal de gele LED oplichten, zelfs als de nieuwe track leeg is, omdat het een "slave" track is (slaved aan de allereerste track die is opgenomen). Druk nogmaals om het overdubben te stoppen (gele LED gaat uit).

Voor degenen onder u die vertrouwd zijn met stations voor audio-looping, deze MIDI-progressie wordt "REC/PLAY/OVERDUB" genoemd en is de enige die wordt ondersteund.

Als u op enig moment denkt dat uw laatste overdub niet in orde is, kunt u deze verwijderen door op de "undo"-schakelaar/voetpedaal te drukken. U kunt het hele huidige nummer wissen door het "REC"-pedaal langer dan 3 seconden ingedrukt te houden; je kunt de looper resetten (software reset) door de eerste drie trackknoppen tegelijk in te drukken of door alle gebruikte tracks te wissen.

U kunt een track dempen/unmuten door op de trackknop van de huidige track te drukken.

U kunt een PANIEK sturen! bericht door op de paniekknop te drukken. Je kunt zelfs een PANIEK sturen! bericht door tegelijkertijd op de eerste twee tracks-knoppen te drukken.

De looper heeft een ingebouwde eenvoudige metronoom: een noot op MIDI-bericht voor nootnummer "64" wordt verzonden met een 100 BPM op kanaal 10 (het kanaal waar uw drummachine vermoedelijk naar luistert). U kunt het tempo verhogen of verlagen door aan de optische encoder te draaien; door de optische encoderschakelaar in te drukken, kunt u de metronoom in-/uitschakelen. Merk op dat uw drummachine moet zijn ingesteld om een geluid (snare, bas of welk geluid dan ook) te spelen wanneer u MIDI-noot "64" ontvangt, anders wordt de metronoom gedempt.

Een barebone-versie van dit MIDI-loopstation kan worden gemaakt met een enkele voetschakelaar om de opname te starten en te stoppen. Als u de schakelaar langer dan 3 seconden ingedrukt houdt, wordt het lusstation opnieuw geïnitialiseerd.

Als je wat extra tijd wilt investeren in het ontwikkelen van de hardware, kan het toevoegen van schakelaars en knoppen het loopstation flexibeler maken. Op de afbeelding zie je hoe ik mijn vier tracks (maximaal vijf worden ondersteund) met volledige functionaliteit heb geconfigureerd.

BELANGRIJKE OPMERKING: de hardware op mijn foto's is een prototype. Ik gebruikte meer jack-aansluitingen dan nodig was, maar slechts vier knoppen voor tracks. Dit komt omdat toen ik aan het project begon, ik niet helemaal zeker was wat de uiteindelijke vereisten zouden zijn.

Knoppen en voetschakelaars zijn elektronische equivalenten en u kunt de ene gebruiken in plaats van de andere; voor mijn behoeften, aangezien er altijd te weinig vloerruimte is (verdomd mooie effectpedalen;)), heb ik de voetpedalen beperkt tot de enkele REC-functie.

Stap 3: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Stuklijst:

Volledig uitgerust 5-tracks MIDI-loopstation

1x Arduino DUE

7x kortstondige drukknoppen

1x kunststof koffer (ik gebruikte een koffer van 150 x 110 x 70 mm)

2x 5-pins DIN vrouwelijke paneelmontage MIDI socket connector

1x 6,3 mm jackplug voor paneelmontage

1x dubbelzijdig 50x70 mm geperforeerd bord

5x 3 mm LED (groen)

1x 3 mm LED (geel)

1x optische encoder

1x H11L1 optocoupler

1x 1N4148-diode

3x 1000 ohm weerstanden

3x 220 ohm weerstanden

10x 470 ohm weerstanden

Wat soldeerdraad, wat kabels, soldeerstation… en vrije tijd:)

Benodigde tijd om het project te voltooien: 6-9 uur

Waarom geen UNO?

De eerste tests (en een beginnende werkende code) werden geschreven op een "normaal" arduino UNO-bord. Dit bord heeft RAM-limieten die me dwongen om de polyfonie te verminderen tot "4", maximale lengte tot minder dan 4 seconden en een resolutie van 40 ms bij max. Dit zonder multichannel afhandeling. Door ook de snelheidsregistratie te verwijderen, kon ik de opnametijd tot 7 seconden verhogen.

Met een UNO kun je dan een "werkend" MIDI loopstation realiseren, maar zeer beperkt.

Stap 4: Software

De software is sterk afhankelijk van de FortySevenEffects MIDI-bibliotheek. Deze bibliotheek is geweldig en maakt dit soort projecten uitvoerbaar, zelfs voor niet-codeerders zoals ik.

Arduino IDE en zijn gemeenschap is een ander belangrijk onderdeel van dit "succes".

Ik zal niet ingaan op details over het uploaden van de schets naar je Arduino DUE. Als dit je eerste ervaring met arduino IDE is, lees dit dan eerst.

Ik heb twee verschillende versies van de code geschreven, gebaseerd op twee totaal verschillende benaderingen.

Het werkingsprincipe van versie 1 is dat tijdens het opnemen of overdubben de Arduino DUE de ondersteunde MIDI-events (noot aan, noot uit, control change en pitch bend) controleert en opslaat in zijn (vluchtige) geheugen; tijdas wordt gekwantiseerd in stappen van 20 ms en ontvangen berichten worden dienovereenkomstig in die slots opgeslagen. Tijdens het spelen worden opgeslagen MIDI-berichten teruggestuurd naar de synth met inachtneming van de tijdkwantisering.

Het werkprincipe van versie 2 is in plaats daarvan het "eenvoudig" opnemen van midi-gebeurtenissen en het tijdstip waarop de gebeurtenis moet worden geactiveerd. Versie 2 heeft andere limieten dan versie 1 (vermeld in een vorige stap). probeer ze allebei en gebruik degene die voor jou het beste werkt.

Er is ook een voorlopige klokafhandeling, maar er zijn enkele aanpassingen nodig om te werken zoals het hoort. De code gaat ervan uit dat u een lus van 4/4 - 4 maten (16 beats) opneemt.

U kunt de externe klok deactiveren door de "paniek"-knop ingedrukt te houden wanneer u de looper aanzet.

Codes worden HIER geüpload. Overal worden opmerkingen geplaatst, zodat je die firmware naar believen kunt buigen;)

Stap 5: Bedrading

Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading

MIDI IN- en MIDI OUT-circuits worden vermeld in de bijgevoegde foto's. Merk op dat TX1 en RX1 worden gebruikt, niet TX0 en RX0.

Arduino DUE-invoerpinnen kunnen geen 5V aan, maar 3,3V; daarom wordt een H11L1 optocoupler gebruikt in plaats van een meer gebruikelijke 6N138. Ik heb bewijzen dat het gebruik van een 6N138 in combinatie met een spanningsdeler om de signaalspanning naar TX1 te verminderen, zoals in mijn eerste prototipe, in sommige opstellingen onregelmatig zou kunnen werken.

LED's zijn verbonden met Arduino DUE-uitgangspinnen via weerstanden van 470 Ohm. U kunt weerstanden tot 1K ohm gebruiken om de stroom naar LED's te verminderen en hun helderheid te verminderen.

Knoppen/schakelaars/jacks zijn direct verbonden met Arduino-ingangspinnen dankzij input pullup-weerstanden, geactiveerd in de schets. Er zijn geen externe (pulldown) weerstanden nodig.

De optische encoder is aangesloten op GND en +5V. Het gaat naar Arduino-invoerpinnen die door 2 480 ohm-weerstanden gaan, één voor elke optische gegevensuitvoer.

Arduino DUE wordt rechtstreeks gevoed vanaf 5V-pin en geaard via een +5V DC-hub.

Alle gronden zijn met elkaar verbonden.

Bijgevoegd is een tabel met aansluitingen van arduino-pinnen naar IN/OUT-randapparatuur. Arduino-pinnummers weerspiegelen die in mijn proptotype-hardware en kunnen er willekeurig uitzien (ze zijn op de een of andere manier …). U kunt de pinlocatie in de schets eenvoudig naar wens aanpassen;)

Stap 6: Wat als ik meer dan één MIDI-bron heb?

Wat als ik meer dan één MIDI-bron heb?
Wat als ik meer dan één MIDI-bron heb?

Na een korte zoektocht naar een MIDI-fusie, ontdekte ik dat de meest praktische (en goedkope) oplossing een MIDI-switcher was.

Een MIDI-switcher is een passief apparaat dat een MIDI-bron inschakelt en alle andere bronnen uitschakelt. Simpel als dat.

Het hart van een MIDI-switcher is een multi-positionele (de mijne is 6-positie), 2-polige schakelaar. Het is erg belangrijk dat het aantal polen "2" is, omdat elke MIDI-aansluiting volledig moet worden afgesneden als deze niet is geselecteerd en niet in verbinding staat met de andere. Bijgevoegd is een foto van degene die ik realiseerde voor eigen gebruik.

Op DEZE LINK een schema.

Aanbevolen: