Cuprins:
- Pasul 1: Ce este exact acest lucru (și ce nu este …)
- Pasul 2: Secvențierul „Ascuns” cu 16 pași
- Pasul 3: Hardware necesar și construire
- Pasul 4: Cablare
- Pasul 5: Software - Unele legături cu teoria
- Pasul 6: Software - schița
- Pasul 7: Proiecte conexe
Video: (aproape) Universal MIDI SysEx CC Programmer (și Sequencer ): 7 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
La mijlocul anilor optzeci, producătorii de sintetizatori au început un proces „mai puțin este mai bine” care a dus la sintetizatorii barebones. Acest lucru a permis reducerea costurilor din partea producătorului, dar a făcut ca procesul de corecție să devină tediuos, dacă nu imposibil pentru utilizatorul final.
Producătorii înșiși și companiile terțe au realizat cutii opționale pline de butoane și / sau glisante pentru a vă permite să "jucați" cu tonurile sintetizatoarelor dvs., dar acestea sunt prost costante în zilele noastre și, ca întotdeauna, suntem forțați să găsim soluții ieftine de la noi;)
Acest proiect a venit din nevoia mea de a programa cu ușurință patch-uri pe unele dintre cele mai recente achiziții de sintetizatoare: un Roland Alpha Juno 2 și JX8P. A început ca un simplu controler SysEx, apoi a crescut pe mine și a devenit ceva mai complex, cu alte sintetizatoare suportate pe drum (Korg DW8000, Oberheim Matrix 6 / 6R, SCI MAX) și un secvențiator încorporat.
În acest instructiv vă voi arăta cum să vă realizați propriul controler: un instrument ieftin care emulează acele cutii de control a parametrilor la prețuri ridicate … și multe altele (continuați să citiți pentru detalii …).
Pasul 1: Ce este exact acest lucru (și ce nu este …)
Controlerul MIDI SysEx și Control Change aici este în esență un 16 butoane (potențiometre) și un controler MIDI cu 4 butoane. Schița implicită gestionează trei „pagini”, pentru un total de 48 de parametri de ton de sintetizator.
Am făcut controlerul compatibil cu mesaje MIDI de schimbare a controlului (un tip simplu și „global” de mesaj MIDI utilizat pe scară largă de producătorii de sintetizatori, în special din anii 90) și mesaje SysEx (un alt tip de mesaj MIDI, mult mai puțin general și extrem de specific folosit în anii 80).
În special, controlerul este implicit compatibil cu:
- Roland Alpha Juno (1/2)
- Roland JX8P
- Korg DW8000
- Oberheim Matrix 6 / 6R (> 2.14 firmware)
- Circuite secvențiale MAX / SixTrak.
În cele din urmă, puteți activa controlerul să acționeze pe orice sintetizator care poate primi mesaje MIDI control change (CC), dar este dezactivat în mod implicit.
Fiind natura open source a proiectului, este foarte ușor să susțineți orice alt sintetizator la alegere (consultați pasul de cod pentru detalii).
Aspectul parametrilor de ton cu toate acele cifre ar putea fi confuz la început, dar nu este „aleatoriu”, deoarece ar putea arăta: urmează ordinea graficului de implementare MIDI al producătorului. Aceasta a fost o alegere de proiectare pentru a păstra codul simplu și „universal”.
Puteți descărca foi de imagine cu „aspectul” 4x4 pe care l-am realizat pentru Alpha-Junos, JX8P, DW8000, Matrix 6 și MAX / SixTrak pe această pagină: parametrii albastri sunt cei pe care îi puteți modifica în pagina 1, negru cei de la pagina 2 și portocaliu cele de la pagina 3.
Chiar dacă controlerul nu are ecran, atingerea cu sintetizatoare care vă arată ce parametru este reglat în timp real face procesul de creare a unui patch o bucurie. JX8P și Matrix 6, de exemplu, sunt capabile de acest lucru; Alpha Juno, în schimb, nu vă arată parametrul modificat și face lucrurile puțin mai dificile (dar crearea de patch-uri minunate este cu siguranță mai ușoară și mai ușoară decât prin utilizarea interfeței încorporate fără butoane); DW8000 are doar afișaje numerice, dar puteți vedea modificările dvs. în timp real, așa că se plasează între acestea.
Dar butoanele alea de acolo?
Ei bine, primul (stânga sus în aspectul meu) este pentru navigarea pe pagină: treceți la pagina următorului parametru la fiecare apăsare a butonului. LED-urile vor indica în ce pagină vă aflați.
Al doilea, atunci când este apăsat, trimite patch-ul pe care lucrați înapoi la synth (calculați-l: ați făcut patch-ul vieții voastre, apoi ați atins un buton de program pe suprafața synth-ului și patch-ul specific butonului a fost încărcat … toate lucrările dvs. s-au dus !). Cu acest buton puteți trimite toate valorile pe care programatorul le memorase în timpul ultimului proces de corecție. Acest proces de revocare a patch-urilor nu funcționează dacă apăsați din nou pe randomizer (procesul de randomizare suprascrie toți parametrii din memorie) și este eficient numai pentru parametrii pe care i-ați editat cel puțin o dată. Cel mai recent patch nu este păstrat în memorie după oprire.
Al treilea este pentru o funcție secundară: randomizer / patcher! Rotiți complet în sensul invers acelor de ceasornic butoanele pe care doriți ca parametrul pe care acționează să se blocheze la valoarea minimă (adică LFO-ul oscilatorului, învelișul oscilatorului etc.) sau rotiți complet în sensul acelor de ceasornic pentru a maximiza valoarea (adică volumul mixului oscilatorului, volumul VCA etc.) și apăsați butonul pentru a porni procesul de randomizare pentru toți ceilalți parametri.
Al patrulea buton este acolo pentru a activa un ou de Paște (un fel de …) pe care l-am plasat în cod după ce am observat că aspectul era perfect pentru … un secvențial MIDI în 16 pași! Exact: apăsați al patrulea buton (butonul MODE), controlerul va intra în „modul secvențial” și vi se va permite să declanșați note în același mod pe care l-au făcut vechile secvențiale analogice. Frumos!
Apăsați din nou butonul MODE pentru a reveni la modul controler / patch.
Dar LED-urile alea?
Există 4 LED-uri corespunzătoare fiecărui buton (în dreapta fiecărui buton din aspectul meu); aceste LED-uri au mai multe versiuni:
1) vă spun în ce pagină de parametri vă aflați (LED-ul superior este aprins când vă aflați în pagina 1, LED-ul de dedesubt este aprins când pagina 2 este activă, LED-ul 3 este aprins … l-ați gândit singur). Suntem limitați la un bancomat de 3 pagini, dar codul poate fi reglat cu ușurință pentru a gestiona mai multe pagini;
2) al doilea LED indică parametrii pagina 2 ȘI se aprinde atunci când microcontrolerul trimite patch-ul anterior (patch recall);
3) al treilea LED indică parametrii pagina 3 ȘI este aprins în timpul procesului de randomizare.
Al patrulea LED nu face nimic în modul controler MIDI și este utilizat pentru schimbarea globală a MODULUI.
Toate aceste funcții sunt transmise ca mesaje MIDI, astfel încât, pentru a fi eficient, sintetizatorul dvs. trebuie să fie capabil / activat să primească și să interpreteze acest tip de mesaje
Pasul 2: Secvențierul „Ascuns” cu 16 pași
După cum am spus, în timp ce testam controlerul, mi-am dat seama că ar fi minunat să las să ruleze o secvență de note, astfel încât să pot modifica parametrii sintetizatorului și să am o idee mai bună despre efectul final asupra tonului. Am un sequencer software (îmi place atât de mult seq24!), Dar acest hardware este un sequencer aproape PERFECT în 16 pași! Atunci a fost doar o chestiune de cod să-l implementăm.
Puteți comuta între modul controler și modul secvențiator apăsând butonul # 4 (butonul MODE).
În timp ce în modul secvențial butoanele funcționează diferit, iar LED-urile vă oferă informații noi:
- primul buton (butonul SHIFT) când este apăsat permite modificarea tempo-ului, a lungimii notei, a canalelor și a modificării octavei; valoarea tempo-ului este dată de poziția primului potențiometru, lungimea notei este calculată din a doua poziție a potențiometrului, canalele MIDI din pozițiile potențialului al treilea și al patrulea și octava (-1 o până la +2) din al cincilea pot. Puteți controla tempo-ul de la 40 BPM (rotiți potențiometrul # 1 complet în sens invers acelor de ceasornic, ținând apăsat butonul # 1) până la aproape 240 BPM (rotiți potentiometrul # 1 complet în sensul acelor de ceasornic, ținând apăsat butonul # 1). Puteți seta notele de lungime la jumătate, la sfert, la opt, la șase pași, rotind potul 2, menținând apăsat butonul SHIFT. Puteți seta canale MIDI (canal principal și canal secundar) de la 1 la 16. Intervalul de note de bază (de la C2 la F # 4) poate fi redus de o octavă sau crescut cu una sau două octave.
În mod implicit, tempo-ul este setat la 120 BPM și lungimea notelor la sferturi.
- al doilea buton pornește și oprește secvența de note. După cum sa spus, dacă schimbați modul apăsând butonul # 4 (MODE) în timp ce rulați secvența, veți intra în modul controler, dar secvența va continua să ruleze.
- al treilea buton este un PANIC! Prin apăsare, toate notele vor fi închise.
- al patrulea este utilizat pentru a comuta între modurile globale (pather sau secvențiator) atunci când butonul # 1 nu este apăsat sau între modurile de secvență (vezi în continuare) când # 1 este apăsat.
În modul secvențial, dacă apăsați butonul de selectare a modului, ținând apăsat butonul # 1 (SHIFT), puteți comuta între 3 moduri de secvență diferite:
1 - 16 pași secvență mono
2 - 16 pași secvență poli: se declanșează notele cu o octavă mai mici decât cele definite de pot (aceasta scurge 2 voci pe ritm)
3 - 8 etape poli secvență, canal dual: două secvențe paralele de 8 pași sunt trimise către două canale diferite (CH1 și CH2 în mod implicit); setând aceeași valoare a canalului atât pe canalul primar, cât și pe cel de-al doilea, puteți avea două secvențe paralele cu 8 pași redate de același sintetizator (polifonic).
Despre LED-uri: imediat ce intrați în modul secvențiator, toate cele patru lumini se vor aprinde. Când porniți secvența, LED-urile vor urma secvența (sau secvențele). Am plasat câte un LED la fiecare patru potențiometre și este suficient pentru mine. Ar fi simplu să modificați schița pentru a gestiona 16 LED-uri, câte unul pentru fiecare pas.
Secvențialistul de pași are caracteristici pe care cineva le-ar putea găsi necesare: MIDI sync IN, pași în așteptare (puteți opri doar un pas), ieșire CV.
Am implementat clock OUT, dar într-un fel este un buggy. Am încercat două abordări pentru aceasta (una cu și una fără întreruperi ale temporizatorului), dar amândouă erau imperfecte (sau un eșec total). Ceasul MIDI trebuie să fie strict-perfect pentru a lucra pe termen lung. Un semnal de ceas este trimis oricum și îl puteți dezactiva direct pe schiță (consultați mai târziu pentru detalii).
Observați că acest secvențiator de pași este MIDI sau digital, dacă preferați, așa că, pentru a funcționa, trebuie conectat la un sintetizator activat pentru a primi și interpreta acest tip de mesaje
Pasul 3: Hardware necesar și construire
După toate aceste cuvinte, hai să te distrezi!
Mergem pe calea comună Arduino. Am folosit un Arduino MEGA din cauza cantității mari de intrări analogice (vrem o cutie plină de butoane knobby, nu-i așa ?!:)).
În special, Arduino MEGA poate gestiona 16 intrări analogice (cu unele modificări hardware, adică prin muxing, puteți crește acest lucru, dar nu mergem pe această rută aici), așa că vom trimite cele 48 de mesaje MIDI prin 16 potențiometri. Fiecare potențiometru va controla apoi trei parametri, unul pentru fiecare „pagină”; paginile sunt selectate printr-un buton de comutare.
Lista hardware:
- 1x Arduino MEGA
- Potențiometre 16x liniare, cu o singură rotație, 10 K ohm
- 16 butoane pentru oală
- 4x butoane momentane
- 4x LED
- rezistor 6x 220 ohm
- 1x conector MIDI
- 1x cutie de proiecte ABS
Câteva cabluri, fire de lipit și șase - opt ore de timp liber.
Am folosit o placă de perfecționare și niște anteturi pentru a realiza un fel de scut pe care am lipit rezistențele și am direcționat cablurile. Acest lucru are avantajul de a vă permite să scoateți Arduino și să-l utilizați pentru alte proiecte (cu toții rămânem slabi pe plăcile Arduino la un moment dat!). Oricum nu este obligatoriu și o altă abordare bună ar putea fi desoldarea directă a pinheader-urilor MEGA arduino și a cablurilor de lipit.
Am folosit rezistențe de 200 ohmi în locul rezistențelor de 220 ohmi și oricum funcționează perfect; Aș paria că rezistențele de 150 ohmi ar funcționa excelent (atât pentru comunicarea MIDI, cât și pentru LED-uri).
Pentru a modela cutia, am aplicat mai întâi niște hârtie adezivă pe suprafața cutiei, măsurată unde trebuie găurite găurile (aveam 3 cm de la gaură la gaură pentru a lăsa toate ghivecele să se potrivească) am făcut gaurile de ghidare și apoi le-am mărit la dreapta dimensiune pentru a lăsa firul oalelor sau firul butoanelor să treacă cu un mini burghiu. Am petrecut mai mult sau mai puțin 2 ore pentru a termina cutia. Am realizat și găuri mici și am lipit LED-uri în loc.
De asemenea, am forat o gaură pentru conectorul MIDI OUT și alta pentru conectorul de alimentare arduino (am folosit direct conectorul de alimentare USB încorporat și am blocat ferm arduino MEGA în loc).
AVERTISMENT: purtați întotdeauna protecții pentru ochi și mâini în timpul găuririi, indiferent de materialul la care lucrați (plastic, lemn, metale, compozite … nu contează: aveți un risc atât în ceea ce privește uneltele electrice, cât și așchii de material erodat / ars din instrumentul în mișcare).
Apoi, am așezat toate ghivecele și butoanele și am lipit componentele conform imaginii atașate. O modalitate eficientă de a reduce greutatea obiectului final (și lungimea cablurilor) este înlănțuirea tuturor ghivecelor atât pe linia 5V, cât și pe linia GND.
Și înainte ca cineva să întrebe: Știu, acea cutie pe care am folosit-o este urâtă! Dar a fost gratuit și nimic nu bate gratis:)
Pasul 4: Cablare
Cablarea lucrurilor este ușoară, deoarece conectarea unui potențiometru (x16), a unui buton (x4) și a unui LED (x4) la o placă de microcontroler Arduino. Toate elementele de bază Arduino sunt tratate aici:)
Este atașat cablajul. Observa asta:
- Se utilizează toți pinii analogici (de la A0 la A15), câte unul pentru fiecare potențiometru;
- se folosesc 4 pini digitali (intrări) (de la D51, D49, D47, D45), câte unul pentru fiecare buton;
- alți 4 pini digitali (ieșiri) sunt utilizați pentru LED-uri (D43, D41, D39, D37);
- Conexiunea MIDI out este foarte simplă și solicită două rezistențe de 220 ohmi (dar până la 150 ohmi vor funcționa)
- Butoanele nu solicită rezistențe derulante, deoarece schița activează rezistențele interne ale Arduino.
- Fiecare LED cere un rezistor curent de limitare (200-220 ohm sunt ok pentru LED-urile verzi).
Am folosit pinii digitali enumerați pentru comoditate, dar nu sunt pinii „speciali” (nu folosim aici capacitatea pwm a unor pin-uri sau a altor caracteristici specifice pin-ului): puteți seta pinii digitali preferați, dar nu uitați să modificați codul corespunzător sau butoanele / LED-urile dvs. nu vor funcționa!
Vă rugăm să rețineți că conexiunea MIDI OUT din imagine este vedere FRONT (nu vedere spate).
Pasul 5: Software - Unele legături cu teoria
Nu am de gând să explic teoria completă din spatele mesajelor de sistem exclusiv sau de schimbare a controlului, deoarece există o mulțime de articole bune acolo și este o prostie să rescrieți ceea ce a fost deja scris.
Doar câteva legături rapide pentru implementarea Roland SysEx:
- https://erha.se/~ronny/juno2/Roland%20Juno%20MIDI%2… (ENGLEZA)
- https://www.2writers.com/eddie/tutsysex.htm (ENGLISH)
- https://www.chromakinetics.com/handsonic/rolSysEx.h… (ENGLEZĂ)
- https://www.audiocentralmagazine.com/system-exclusi… (ITALIANO)
și câteva legături pentru MIDI în general:
-
-
Pasul 6: Software - schița
Aici este atașată schița pe care ar trebui să o încărcați pe Arduino Mega.
Am încercat să mențin programatorul cât mai „universal” posibil, ceea ce înseamnă că am încercat să reduc fragmentele de cod specifice sintetizatorului. Am încercat să păstrez codul cât mai simplu posibil. Adăugarea secvențierului de pași a făcut lucrurile mai complexe și codul mai dezordonat, oricum a meritat pentru mine. Păstrarea codului „universal” este motivul pentru care aspectul controlerului este atât de „aleatoriu”: urmează ordinea parametrilor implementării MIDI pe care producătorul de sintetizator le-a definit în manual. La început ar putea fi confuz, dar veți fi obișnuiți foarte repede.
Codul / schița / firmware-ul implicit acceptă „doar” 48 de parametri (trei pagini cu câte 16 butoane), deci nu ar putea fi posibil să controlați toate mesajele MIDI acceptate de sintetizatorul dvs. (gândiți-vă la un virus de acces sau la Novation Supernova: acceptă mai multe sau mai puțin 110 parametri compatibili MIDI). Puteți schimba cu ușurință schița pentru a accepta mai multe mesaje, dacă este necesar.
De fapt, sunt acceptate mesaje SysEx compatibile cu Roland Alpha-Juno, JX8P, Korg DW8000 și Oberheim Matrix 6. Am lăsat codul pentru mesajele compatibile Juno 106 în caz că aveți nevoie de asta.
Pentru Matrix 6, a trebuit să selectez parametrii de controlat. Am lăsat afară al treilea plic, a doua rampă și altceva. Matricea oricum nu poate fi controlată prin MIDI, deci este și ea afară. Aveți nevoie de firmware-ul actualizat (versiunea 2.14 sau mai mare) și ar trebui să setați parametrul „Master -> Sysex Enable” la „3”.
Clock out este într-un fel buggy (ceasul trebuie să fie strict-perfect pentru a funcționa așa cum ar trebui și probabil cele două abordări pe care le-am adoptat acolo unde nu sunt eficiente). În mod implicit, este dezactivat.
Codul include comentarii, deci nu este nevoie să mai comentați aici.
Ca întotdeauna: amintiți-vă că nu sunt un programator în viața reală și cu siguranță există modalități mai bune de a codifica ceea ce avem nevoie aici. Dacă sunteți un programator și aveți sugestii, sunteți binevenit! Vă rog să-mi trimiteți orice variantă care poate crește eficiența / eficacitatea codului și îl voi include în schița principală (citând contribuitorul evident!).
Învăț mereu ceva nou citind codul unui coder bun;)
Pasul 7: Proiecte conexe
Din câte știu, nu există un controler de parametri MIDI și un secvențiator acolo (poate vechiul Behringer BCR2000 cu un firmware modificat?)
oricum, dacă nu sunteți predispuși să realizați o cutie de acest gen, dar sunteți foarte interesați de soluții ieftine pentru a vă controla parametrii de sintetizare de la distanță, luați în considerare aceste alte alternative:
- Editor CTRL MIDI: acesta este un program open source genial, gratuit, care rulează pe win / Linux / mac, care poate transforma computerul într-un controler complet pentru sintetizatoare SysEx
- Convertorul CC "junosex" al lui David Konsumer: acest proiect solicită lucrări hardware minore de partea ta și ideea este extraordinară - un convertor bazat pe arduino de la CC la SysEx care îți permite să folosești un controler comun non-SysEx MIDI (adică o tastatură master AKAI MPK) pentru a vorbi cu sintetizatorul SysEx-ready
Recomandat:
Arduino MIDI Rhythm Section Sequencer: 8 pași (cu imagini)
Arduino MIDI Rhythm Section Sequencer: A avea o mașină de baterie software bună este ușor și ieftin astăzi, dar folosirea unui mouse mă distrează. Acesta este motivul pentru care mi-am dat seama ce inițial se intenționa ca un secvențial MIDI cu 64 de trepte, capabil să declanșeze până la 12 elemuri diferite de tambur
Transformați aproape orice în difuzor: 13 pași (cu imagini)
Transformați aproape orice în difuzor: puteți transforma aproape orice obiect într-un difuzor folosind un disc piezo și o mână de componente suplimentare. Deși aceasta poate părea magie, există de fapt o explicație tehnică destul de simplă. Conducând un disc piezo cu un amplificator, discul
Spin Coater V1 (aproape analogic): 9 pași (cu imagini)
Spin Coater V1 (aproape Analogic): Nu toate echipamentele sunt fabricate pentru a rezista, eu sunt un student / cercetător care studiază materiale cu filme subțiri pentru tehnologia solară. O dată dintre piesele de echipament de care depind este numit spin coater. Acesta este un instrument folosit pentru a face pelicule subțiri dintr-un material dintr-o soluție lichidă
Echipament de sincronizare și ceas cu lanț - Aproape gratuit !: 5 pași (cu imagini)
Echipament de sincronizare și ceas cu lanț - Aproape gratuit!: Sperăm că atunci când ați schimbat setul de sincronizare al mașinii, nu ați aruncat vitezele vechi și lanțul. Aproape am făcut-o, dar soția mea mi-a arătat acest lucru: http://www.uncommongoods.com/product/auto-timing-chain-and-gears-wall-clock 125 USD SUA plus expediere.
Faceți monitorul dvs. invizibil (aproape aproape): 4 pași
Faceți monitorul dvs. invizibil (aproape Aproape): creați un fundal de desktop pentru a vă amuza și confunda prietenii și colegii de muncă folosind doar o cameră digitală și un pic de lăutări