Indholdsfortegnelse:

(næsten) Universal MIDI SysEx CC Programmer (og Sequencer ): 7 trin (med billeder)
(næsten) Universal MIDI SysEx CC Programmer (og Sequencer ): 7 trin (med billeder)

Video: (næsten) Universal MIDI SysEx CC Programmer (og Sequencer ): 7 trin (med billeder)

Video: (næsten) Universal MIDI SysEx CC Programmer (og Sequencer ): 7 trin (med billeder)
Video: 🌹 Вяжем шикарный женский джемпер спицами по многочисленным просьбам! Подробный видео МК! Часть1. 2024, December
Anonim
(næsten) Universal MIDI SysEx CC Programmer (og Sequencer …)
(næsten) Universal MIDI SysEx CC Programmer (og Sequencer …)
(næsten) Universal MIDI SysEx CC Programmer (og Sequencer …)
(næsten) Universal MIDI SysEx CC Programmer (og Sequencer …)

I midten af firserne startede synth -producenter en "less is better" -proces, der førte til barebonesynths. Dette muliggjorde reduktion af omkostninger på producentens side, men gjorde patchingsprocessen tediuos, hvis ikke umulig for den endelige bruger.

Producenterne selv og tredjepartsvirksomheder realiserede valgfri kasser fulde af knapper og/eller sliders for at lade dig faktisk "lege" med dine synths toner, men disse er fjollede overpris i dag, og som altid er vi tvunget til selv at finde billige løsninger;)

Dette projekt kom fra mit behov for let at programmere patches på nogle af mine seneste synths køb: en Roland Alpha Juno 2 og JX8P. Det startede som en simpel SysEx-controller, derefter voksede det op på mig og blev noget mere komplekst, med andre synths understøttet undervejs (Korg DW8000, Oberheim Matrix 6/6R, SCI MAX) og en indbygget sequencer.

I denne instruktive vil jeg vise dig, hvordan du realiserer din egen controller: et billigt værktøj, der emulerer de meget dyre parameterkontrolbokse … og mere (læs videre for detaljer …).

Trin 1: Hvad er nøjagtigt denne ting (og hvad er ikke …)

Hvad er nøjagtigt denne ting (og hvad er ikke …)
Hvad er nøjagtigt denne ting (og hvad er ikke …)
Hvad er nøjagtigt denne ting (og hvad er ikke …)
Hvad er nøjagtigt denne ting (og hvad er ikke …)
Hvad er nøjagtigt denne ting (og hvad er ikke …)
Hvad er nøjagtigt denne ting (og hvad er ikke …)

MIDI SysEx og Control Change controller her er i det væsentlige en 16 knapper (potentiometre) og 4 knapper MIDI controller. Standardskitsen håndterer tre "sider" for i alt 48 synthtoneparametre.

Jeg gjorde controlleren kompatibel med MIDI-meddelelser med kontrolændring (en simpel og "global" type MIDI-besked, der i vid udstrækning bruges af synthfabrikanter især fra 90'erne) og SysEx-meddelelser (en anden type MIDI-meddelelser, langt mindre generelle og stærkt syntespecifikke stærkt brugt i 80'erne).

Navnlig er controlleren som standard kompatibel med:

- Roland Alpha Juno (1/2)

- Roland JX8P

- Korg DW8000

- Oberheim Matrix 6/6R (> 2.14 firmware)

- Sekventielle kredsløb MAX/SixTrak.

Du kan til sidst aktivere controlleren for at handle på enhver synth, der kan modtage MIDI -kontrolændringer (CC) -meddelelser, men den er deaktiveret som standard.

Da det er projektets open source -natur, er det meget let at understøtte enhver anden synth efter eget valg (se kodetrinet for detaljer).

Toneparameterne layout med alle disse tal kan være forvirrende i starten, men det er ikke "tilfældigt", som det kunne se ud: det følger rækkefølgen på producentens MIDI -implementeringskort. Dette var et designvalg for at holde koden enkel og "universel".

Du kan downloade billedark med det 4x4 "layout", jeg indså for Alpha-Junos, JX8P, DW8000, Matrix 6 og MAX/SixTrak på denne side: blå parametre er dem, du kan justere, mens du er på side 1, sorte dem på side 2 og orange dem på side 3.

Selvom controlleren ikke har nogen skærm, gør det en fornøjelse at lave en patch ved at lege med synths, der viser dig, hvilken parameter der indstilles i realtid. JX8P og Matrix 6 er for eksempel i stand til dette; Alpha Juno viser dig i stedet ikke den parameter, der ændres, og gør tingene en smule sværere (men at skabe fantastiske patches er bestemt muligt og lettere end ved at bruge den indbyggede knobløse grænseflade); DW8000 har kun numeriske skærme, men du kan se dine tweakins i realtid, så det placerer sig imellem på dette.

Hvad med de knapper der?

Nå, den første (øverst til venstre i mit layout) er til sidesurfing: spring til den næste parameter side ved hvert tryk på knappen. Lysdioder angiver, hvilken side du er på.

Den anden, når du trykker på den, sender den patch, hvor du arbejder tilbage, til synthen (figur det: du lavede dit livs patch, berørte derefter en programknap på synthfladen, og den knapspecifikke patch blev indlæst … alt dit arbejde er gået !). Med denne knap kan du sende alle de værdier, programmereren havde husket under den sidste opdateringsproces. Denne genoprettelsesproces fungerer ikke, hvis du trykker på randomisatoren igen (randomiseringsprocessen overskriver alle parametrene i hukommelsen), og den er kun effektiv på parametre, du har redigeret mindst én gang. Den seneste patch gemmes ikke i hukommelsen efter nedlukning.

Den tredje er for en sekundær funktion: randomisereren/lapperen! Drej de drejeknapper helt, du vil have parameteren, de virker på, til at låse til minimumsværdien (dvs. oscillator LFO, oscillator -kuvert osv.) Eller drej helt med uret for at maksimere værdien (dvs. oscillator -blandingsvolumen, VCA -volumen osv.), Og tryk på knappen for at starte randomiseringsprocessen for alle andre parametre.

Den fjerde knap er der for at aktivere et påskeæg (slags …) jeg placerede i koden efter at have bemærket, at layoutet var perfekt til … en 16 trin MIDI sequencer! Præcis: Tryk på den fjerde knap (MODE -knap), controlleren går ind i "sequencer -tilstand", og du får lov til at udløse noter på samme måde, som den gamle analoge sequencer gjorde. Dejligt øh!

Tryk på knappen MODE igen for at gå tilbage til controller/patcher -tilstand.

Hvad med disse lysdioder?

Der er 4 lysdioder i overensstemmelse med hver knap (til højre for hver knap i mit layout); disse lysdioder har flere pourpouses:

1) de fortæller dig, hvilken parameter side du er i (øverste LED lyser når du er på side 1, LED nedenunder lyser når side 2 er aktiv, LED 3 lyser … du regnede det selv). Vi er begrænset til 3 sider pengeautomat, men koden kan let indstilles til at håndtere flere sider;

2) den anden LED angiver parametre side 2 OG lyser, når mikrokontrolleren sender den forrige patch (patch -tilbagekaldelse);

3) den tredje LED angiver parametre side 3 OG lyser under randomiseringsprocessen.

Den fjerde LED gør ingenting i MIDI -controller -tilstand og bruges til global MODE -ændring.

Alle disse funktioner transmitteres som MIDI -meddelelser, så for at være effektiv skal din synth være i stand/aktiveret til at modtage og fortolke denne slags beskeder

Trin 2: Den "skjulte" sekvens i 16 trin

Det
Det

Som sagt indså jeg, mens jeg testede controlleren, at det ville være fantastisk at lade en række noter køre, så jeg kunne justere synthparametre og få en bedre idé om den endelige effekt på tonen. Jeg har en software sequencer (jeg kan så godt lide seq24!), Men denne hardware er en næsten PERFEKT 16-trins sequencer! Så var det kun et spørgsmål om kode at implementere det.

Du kan skifte mellem controller mode og sequencer mode ved at trykke på knap #4 (MODE knap).

Mens knapperne i sequencer -tilstand fungerer anderledes, og LED'er giver dig nye oplysninger:

- den første knap (SHIFT -knap), når der trykkes på, giver mulighed for tempo, notelængde, kanaler og oktavændring; tempoværdien er givet ved positionen af det første potentiometer, notelængden beregnes ud fra den anden potentiometerposition, MIDI-kanaler fra den tredje og fjerde potentiometerposition og oktav (-1 o op til +2) fra den femte pot. Du kan styre tempoet fra 40 BPM (drej potentiometer #1 fuldt mod uret, mens knappen #1 holdes nede) til næsten 240 BPM (drej potentiometer #1 fuldt med uret, mens knappen #1 holdes nede). Du kan indstille noter længde til halvdel note, kvart note, otter note, sekstents note ved at dreje potten #2, mens du holder SHIFT knappen nede. Du kan indstille MIDI -kanaler (primær kanal og sekundær kanal) fra 1 til 16. Basisnoteområdet (fra C2 til F#4) kan sænkes med en oktav eller øges med en eller to oktaver.

Som standard er tempoet indstillet til 120 BPM og notelængde til kvartnoter.

- den anden knap starter og stopper notesekvensen. Som sagt, hvis du skifter tilstand ved at trykke på knappen #4 (MODE), mens sekvensen køres, går du ind i controller -tilstand, men sekvensen fortsætter med at køre.

- den tredje knap er en panik! Ved at trykke den ned, bliver alle sedler lukket.

- den fjerde bruges til at skifte mellem globale tilstande (pather eller sequencer), når der ikke trykkes på knap #1, eller mellem sekvensindstillinger (se i følgende), når #1 er trykket ned.

I sequencer -tilstand kan du skifte mellem 3 forskellige sekvenstilstande:

1 - 16 trin monosekvens

2 - 16 trin polysekvens: noter en oktav lavere end dem, der er defineret af potter, udløses også (dette dræner 2 stemmer pr. Beat)

3 - 8 trin poly sekvens, dobbelt kanal: to parallelle 8 trins sekvenser sendes til to forskellige kanaler (CH1 og CH2 som standard); ved at indstille den samme kanalværdi både på de primære og sekundære kanaler kan du få to parallelle 8-trins sekvenser afspillet af den samme (polyfoniske) synthesizer.

Om LED'er: Så snart du går ind i sequencer -tilstand, lyser alle fire lamper. Når du starter sekvensen, følger lysdioder sekvensen (eller sekvenserne). Jeg placerede en LED hver fjerde potentiometre og er god nok for mig. Det ville være enkelt at ændre skitsen til at håndtere 16 lysdioder, en for hvert trin du.

Step sequencer miss -funktioner nogen kunne finde nødvendige: MIDI -synkronisering IN, trin hold (du kan kun lukke et trin fra), CV ud.

Jeg har implementeret ur OUT, men er en eller anden måde buggy. Jeg prøvede to tilgange til dette (en med og en uden timerafbrydelser), men de var begge ufuldkomne (eller totalt mislykkede). MIDI-uret skal være strengt perfekt til at arbejde på lang sigt. Et ur signal sendes alligevel, og du kan deaktivere det direkte på skitsen (se senere for detaljer).

Bemærk, at denne trin -sequencer er MIDI eller digital, hvis du foretrækker det, så for at arbejde skal være forbundet til en synth, der er aktiveret til at modtage og fortolke denne slags beskeder

Trin 3: Nødvendig hardware og opbygning

Hardware nødvendig og bygning
Hardware nødvendig og bygning
Hardware nødvendig og bygning
Hardware nødvendig og bygning
Hardware nødvendig og bygning
Hardware nødvendig og bygning
Hardware nødvendig og bygning
Hardware nødvendig og bygning

Efter alle disse ord, lad os have det sjovt!

Vi går den fælles Arduino -vej. Jeg brugte en Arduino MEGA på grund af den høje mængde analoge indgange (vi vil have en kasse fuld af drejeknapper, ikke sandt?!)).

Især Arduino MEGA kan håndtere 16 analoge indgange (med nogle hardware tweaking, dvs. ved muxing, kan du øge dette, men vi går ikke denne rute her), så vi sender de 48 MIDI -meddelelser via 16 potentiometre. Hvert potentiometer styrer derefter tre parametre, en for hver "side"; siderne vælges med en switch -knap.

Hardware liste:

- 1x Arduino MEGA

- 16x lineære, enkelt drejede 10 K ohm potentiometre

- 16x grydeknopper

- 4x øjeblikkelige trykknapper

- 4x LED

- 6x 220 ohm modstand

- 1x MIDI -stik

- 1x ABS -projektboks

Noget kabel, loddetråd og seks - otte timers fritid.

Jeg brugte et perfboard og nogle pinhoveder til at realisere en slags skjold, jeg lodde modstandene på og ledte kablerne. Dette har den fordel, at du lader dig tage din Arduino ud og bruge den til andre projekter (vi løber alle tør på Arduino -tavler på et tidspunkt!). Det er alligevel ikke obligatorisk, og en anden god fremgangsmåde kan være at aflodde arduino MEGA pinheads og loddekabler direkte på plads.

Jeg brugte 200 ohm modstande i stedet for 220 ohm modstande, og de fungerer perfekt alligevel; Jeg vil vædde med, at selv 150 ohm modstande ville fungere godt (til både MIDI -kommunikation og lysdioder).

For at forme kassen påførte jeg først lidt klæbende papir på kasseoverfladen, målt hvor hullerne skulle bores (jeg havde 3 cm fra hul til hul for at lade alle gryderne passe) lavede styrehullerne og forstørrede derefter til højre størrelse for at lade gryder tråde eller knapper tråd passere med en mini boremaskine. Jeg brugte mere eller mindre 2 timer på at gøre boksen færdig. Jeg opdagede også små huller og limede lysdioder på plads.

Jeg borede også et hul til MIDI OUT-stikket og et andet til arduino-strømstikket (jeg brugte direkte det indbyggede USB-strømstik og låste arduino-MEGAen ordentligt på plads).

ADVARSEL: Brug ALTID altid øjen- og hænderbeskyttelse under boring, uanset hvilket materiale du arbejder med (plast, træ, metaller, kompositter … det er ligegyldigt: du er i fare både med hensyn til elværktøj og flis af materiale, der eroderet/affyret fra det bevægelige værktøj).

Derefter placerede jeg alle gryder og knapper og lodde komponenterne som vedlagt billede. En effektiv måde at reducere vægten af det endelige objekt (og længden af kabler) er at daisy alle gryderne både på 5V -linjen og GND -linjen.

Og før nogen spørger: Jeg ved, den boks, jeg brugte, er grim! Men det var gratis og intet slår gratis:)

Trin 4: Ledningsføring

Ledninger
Ledninger

Det er let at tilslutte tingene som at tilslutte et potentiometer (x16), en trykknap (x4) og LED (x4) til et Arduino -mikrokontrolkort. Alt det grundlæggende om Arduino er dækket her:)

Vedhæftet er ledningerne. Læg mærke til det:

- Alle analoge ben bruges (fra A0 til A15), en for hvert potentiometer;

- 4 digitale ben (input) bruges (fra D51, D49, D47, D45), en til hver knap;

- andre 4 digitale ben (udgange) bruges til lysdioder (D43, D41, D39, D37);

- MIDI out -forbindelse er meget enkel og beder om to 220 ohm modstande (men ned til 150 ohm vil fungere)

- Knapperne beder ikke om nedbrydningsmodstande, fordi skitsen aktiverer de interne Arduinos pullup -modstande.

- Hver LED beder om en strømbegrænsende modstand (200-220 ohm er ok for grønne lysdioder).

Jeg brugte de anførte digitale ben til råvare, men de er ikke "specielle" stifter (vi bruger ikke pwm-funktionen for nogle stifter her eller en anden stift-specifik funktion): du kan indstille dine yndlings digitale stifter, men husk at ændre koden i overensstemmelse hermed, ellers fungerer dine knapper/lysdioder ikke!

Bemærk venligst, at MIDI OUT -forbindelsen på billedet er forfra (ikke set bagfra).

Trin 5: Software - noget link til teori

Jeg vil ikke forklare den fulde teori bag System Exclusive eller Control Change -meddelelser, fordi der er masser af gode artikler derude, og det er fjollet at omskrive det, der allerede er skrevet.

Bare et hurtigt link til implementering af Roland SysEx:

- https://erha.se/~ronny/juno2/Roland%20Juno%20MIDI%2… (ENGLISH)

- https://www.2writers.com/eddie/tutsysex.htm (ENGLISH)

- https://www.chromakinetics.com/handsonic/rolSysEx.h… (ENGLISH)

- https://www.audiocentralmagazine.com/system-exclusi… (ITALIANO)

og et link til MIDI generelt:

-

-https://www.music-software-development.com/midi-tut…

Trin 6: Software - skitsen

Her er vedhæftet skitsen, du skal uploade til din Arduino Mega.

Jeg forsøgte at holde programmøren så "universel" som muligt, hvilket betyder, at jeg forsøgte at reducere syntespecifikke stykker kode. Jeg forsøgte at holde koden så enkel som muligt. Tilføjelse af trin sequencer gjorde tingene mere komplekse og koden mere rodet, alligevel var det det værd for mig. At beholde koden "universel" er derfor, at controllerens layout er så "tilfældigt": det følger parameterrækkefølgen for MIDI -implementeringen, som synthfabrikanten definerede i manualen. Det kan være forvirrende i starten, men du vil blive vant til det meget hurtigt.

Standardkoden/skitsen/firmwaren understøtter "kun" 48 parametre (tre sider med 16 knapper hver), så det kunne ikke være muligt at styre alle MIDI -meddelelser, der understøttes af din synth (tænk på et Access Virus eller Novation Supernova: de accepterer mere eller mindre 110 MIDI -kompatible parametre). Du kan nemt ændre skitsen for at understøtte flere meddelelser, hvis det er nødvendigt.

Faktisk understøttes SysEx-meddelelser, der er kompatible med Roland Alpha-Juno, JX8P, Korg DW8000 og Oberheim Matrix 6. Jeg efterlod koden til Juno 106 -kompatible meddelelser, hvis du har brug for det.

For Matrix 6 måtte jeg vælge de parametre, der skulle kontrolleres. Jeg udelod den tredje kuvert, den anden rampe og noget andet. Matrixen kan alligevel ikke styres via MIDI, så den er også ude. Du har brug for den opdaterede firmware (ver. 2.14 eller nyere), og du skal indstille parameteren "Master -> Sysex Enable" til "3".

Ur ud er en eller anden måde buggy (uret skal være strengt perfekt til at fungere som det skal, og sandsynligvis de to tilgange, jeg har valgt, var ikke effektive). Som standard er den deaktiveret.

Koden indeholder kommentarer, så der er ikke behov for yderligere kommentarer her.

Som altid: husk, at jeg ikke er en koder i det virkelige liv, og der er helt sikkert bedre måder at kode, hvad vi har brug for her. Hvis du er en koder og har forslag, er du velkommen! Send mig venligst enhver variation, der kan øge kodens effektivitet/effektivitet, og jeg vil medtage den til hovedskitsen (med angivelse af bidragyder naturligvis!).

Jeg lærer altid noget nyt ved at læse en god koders kode;)

Trin 7: Relaterede projekter

Så vidt jeg ved, er der ikke en MIDI parameter controller og sequencer derude (måske den gamle Behringer BCR2000 med en modificeret firmware?)

alligevel, hvis du ikke er tilbøjelig til at realisere en boks som denne, men meget interesseret i billige løsninger til fjernstyring af dine synthparametre, skal du overveje disse andre alternativer:

- CTRL MIDI -editor: dette er et genialt, gratis open source -program, der kører på win/Linux/mac, der kan gøre din pc til en fuld controller til SysEx -synths

- David Konsumer "junosex" CC -konverter: dette projekt beder om mindre hardwarearbejde på din side, og ideen er fantastisk - en arduino -baseret CC til SysEx -konverter, der lader dig bruge en almindelig ikke -SysEx MIDI -controller (dvs. et AKAI MPK -master -tastatur) for at tale med din SysEx-klar synth

Anbefalede: