Taula de continguts:

(gairebé) programador universal MIDI SysEx CC (i seqüenciador ): 7 passos (amb imatges)
(gairebé) programador universal MIDI SysEx CC (i seqüenciador ): 7 passos (amb imatges)

Vídeo: (gairebé) programador universal MIDI SysEx CC (i seqüenciador ): 7 passos (amb imatges)

Vídeo: (gairebé) programador universal MIDI SysEx CC (i seqüenciador ): 7 passos (amb imatges)
Vídeo: CS50 2015 - Week 9 2024, Juliol
Anonim
(gairebé) programador universal MIDI SysEx CC (i seqüenciador …)
(gairebé) programador universal MIDI SysEx CC (i seqüenciador …)
(gairebé) programador universal MIDI SysEx CC (i seqüenciador …)
(gairebé) programador universal MIDI SysEx CC (i seqüenciador …)

A mitjan anys vuitanta, els fabricants de sintetitzadors van iniciar un procés "menys és millor" que va conduir a sintetitzadors de barebones. Això va permetre la reducció de costos per part del fabricant, però va fer que el procés de pegat fos tediuos per no dir impossible per a l'usuari final.

Els fabricants mateixos i les empreses de tercers es van adonar de caixes opcionals plenes de botons i / o lliscadors per deixar-vos "tocar" realment amb els vostres tons de sintetitzadors, però actualment són massa caros i, com sempre, ens veiem obligats a trobar solucions barates;)

Aquest projecte va sorgir de la meva necessitat de programar fàcilment pegats en alguns dels meus últims sintetitzadors: un Roland Alpha Juno 2 i un JX8P. Va començar com un simple controlador SysEx, després va créixer i es va convertir en quelcom més complex, amb altres sintetitzadors compatibles (Korg DW8000, Oberheim Matrix 6 / 6R, SCI MAX) i un seqüenciador integrat.

En aquest instructiu us mostraré com realitzar el vostre propi controlador: una eina barata que emula aquestes caixes de control de paràmetres molt cares … i molt més (continueu llegint per obtenir més detalls …).

Pas 1: què és exactament aquesta cosa (i què no ho és …)

Què és exactament aquesta cosa (i què no …)
Què és exactament aquesta cosa (i què no …)
Què és exactament aquesta cosa (i què no …)
Què és exactament aquesta cosa (i què no …)
Què és exactament aquesta cosa (i què no …)
Què és exactament aquesta cosa (i què no …)

El controlador MIDI SysEx i Control Change és bàsicament un comandament MIDI de 16 comandaments (potenciòmetres) i 4 botons. L'esbós per defecte gestiona tres "pàgines", amb un total de 48 paràmetres de to de sintetitzador.

Vaig fer que el controlador fos compatible amb els missatges MIDI de canvi de control (un tipus de missatge MIDI simple i "global" generalment utilitzat pels fabricants de sintetitzadors, especialment dels anys 90) i els missatges SysEx (un altre tipus de missatge MIDI, menys general i molt específic del sintetitzador utilitzat als anys 80).

En particular, el controlador per defecte és compatible amb:

- Roland Alpha Juno (1/2)

- Roland JX8P

- Korg DW8000

- Oberheim Matrix 6 / 6R (firmware 2.14)

- Circuits seqüencials MAX / SixTrak.

Finalment, podeu habilitar el controlador per actuar sobre qualsevol sintetitzador que pugui rebre missatges de canvi de control MIDI (CC), però està desactivat per defecte.

Com que és la naturalesa de codi obert del projecte, és molt fàcil donar suport a qualsevol altre sintetitzador que vulgueu (consulteu el pas del codi per obtenir més informació).

El disseny dels paràmetres de to amb tots aquests números al principi podria ser confús, però no és "aleatori", ja que podria semblar: segueix l'ordre del gràfic d'implementació MIDI del fabricant. Aquesta va ser una opció de disseny per mantenir el codi senzill i "universal".

Podeu descarregar fulls d’imatges amb el "disseny" 4x4 que he realitzat per a Alpha-Junos, JX8P, DW8000, Matrix 6 i MAX / SixTrak en aquesta pàgina: els paràmetres blaus són els que podeu modificar a la pàgina 1, els negres de la pàgina 2 i taronja els de la pàgina 3.

Fins i tot si el controlador no té pantalla, jugar amb sintetitzadors que mostren quin paràmetre s’està sintonitzant en temps real fa que el procés de creació d’un pedaç sigui una alegria. El JX8P i Matrix 6, per exemple, són capaços d'això; l'Alpha Juno, en canvi, no us mostra el paràmetre que es canvia i fa que les coses siguin una mica més difícils (però la creació de pedaços increïbles és definitivament més fàcil i senzilla que si utilitzeu la interfície integrada sense poms); El DW8000 només té visualitzacions numèriques, però podeu veure els vostres ajustaments en temps real, de manera que es col·loquen entre ells.

Què passa amb aquests botons?

Bé, el primer (a la part superior esquerra del meu disseny) és per navegar per pàgines: aneu a la pàgina del paràmetre següent cada vegada que premeu el botó. Els LED indicaran a quina pàgina es troba.

El segon, quan es prem, us envia el pegat on heu treballat de nou al sintetitzador (calculeu-lo: heu fet el pegat de la vostra vida, després heu tocat un botó de programa a la superfície del sintetitzador i s'ha carregat el pegat específic del botó … tot el vostre treball s'ha acabat !). Amb aquest botó podeu enviar tots els valors que el programador havia memoritzat durant l'últim procés de pegat. Aquest procés de recuperació de pedaços no funciona si torneu a prémer l'aleatoritzador (el procés d'aleatorització sobreescriu tots els paràmetres de la memòria) i només és efectiu en els paràmetres que heu editat almenys una vegada. L'últim pegat no es guarda a la memòria després del tancament.

El tercer és per a una funció secundària: el randomizer / patcher! Gireu completament en sentit antihorari els comandaments en què vulgueu que el paràmetre en què actuen es bloquegin al valor mínim (és a dir, LFO de l’oscil·lador, envoltant de l’oscil·lador, etc.) o gireu-lo completament en sentit horari per maximitzar el valor (és a dir, volum de la barreja de l’oscil·lador, volum VCA, etc.) i premeu el botó per iniciar el procés d’aleatorització de la resta de paràmetres.

El quart botó hi és per activar un ou de Pasqua (una mena de …) que vaig col·locar al codi després de notar que el disseny era perfecte per … un seqüenciador MIDI de 16 passos! Exactament: premeu el quart botó (botó MODE), el controlador entrarà al "mode seqüenciador" i se us permetrà activar notes de la mateixa manera que feia el vell seqüenciador analògic. Bonic uh!

Torneu a prémer el botó MODE per tornar al mode controlador / pedaç.

Què passa amb aquests LED?

Hi ha 4 LED corresponents a cada botó (a la dreta de cada botó del meu disseny); Aquests LED tenen múltiples versions:

1) us indiquen en quina pàgina de paràmetres us trobeu (el LED superior s’encén quan esteu a la pàgina 1, el LED de sota s’encén quan la pàgina 2 està activa, el LED 3 està encès … ho heu pensat vosaltres mateixos). Estem limitats a tres pàgines de caixers automàtics, però el codi es pot ajustar fàcilment per gestionar més pàgines;

2) el segon LED indica els paràmetres de la pàgina 2 I s’encén quan el microcontrolador envia el patch anterior (patch recall);

3) el tercer LED indica els paràmetres de la pàgina 3 I s’encén durant el procés d’aleatorització.

El quart LED no fa res en mode de controlador MIDI i s’utilitza per canviar el MODE global.

Totes aquestes funcions es transmeten com a missatges MIDI, de manera que per ser eficaç, el sintetitzador ha de ser capaç / habilitat per rebre i interpretar aquest tipus de missatges

Pas 2: el seqüenciador de 16 passos "ocult"

El
El

Com es va dir, mentre provava el controlador, em vaig adonar que seria fantàstic deixar córrer una seqüència de notes per poder ajustar els paràmetres del sintetitzador i tenir una millor idea de l’efecte final sobre el to. Tinc un seqüenciador de programari (m’agrada tant el seq24!), Però aquest maquinari és un seqüenciador de 16 passos gairebé PERFECTE. Aleshores només era qüestió de codi implementar-lo.

Podeu alternar entre el mode controlador i el mode seqüenciador prement el botó # 4 (botó MODE).

Mentre que en mode de seqüenciador, els botons funcionen de manera diferent i els LEDs us proporcionen informació nova:

- el primer botó (botó SHIFT) quan es prem permet modificar el tempo, la longitud de les notes, els canals i la modificació de l'octava; el valor del tempo ve donat per la posició del primer potenciòmetre, la longitud de la nota es calcula a partir de la posició del segon potenciòmetre, els canals MIDI des de la posició del tercer i quart potenciòmetre i l’octava (-1 o fins a +2) des del cinquè pot. Podeu controlar el tempo des de 40 BPM (gireu el potenciòmetre # 1 completament en sentit antihorari mantenint premut el botó # 1) fins a prop de 240 BPM (gireu el potenciòmetre # 1 completament en sentit horari mantenint premut el botó # 1). Podeu configurar les notes de la meitat de la nota, de la quarta, de la vuitena, de la nota de sisenteits girant el pot número 2 mantenint premut el botó MAJÚS. Podeu configurar els canals MIDI (canal principal i canal secundari) de l'1 al 16. El rang de notes de la base (de C2 a F # 4) es pot reduir d'una octava o augmentar-ne una o dues octaves.

Per defecte, el tempo s'estableix a 120 BPM i la durada de les notes a quarts.

- el segon botó d'inicia i atura la seqüència de notes. Com s'ha dit, si canvieu de mode prement el botó # 4 (MODE) mentre s'executa la seqüència, entrareu en mode controlador, però la seqüència continuarà funcionant.

- El tercer botó és un PANIC! Si la premeu, totes les notes es tancaran.

- el quart s'utilitza per alternar entre modes globals (pather o seqüenciador) quan no es prem el botó # 1, o entre modes de seqüència (vegeu el següent) quan es prem el # 1.

En mode seqüenciador, si premeu el botó de selecció de mode mentre manteniu premut el botó núm. 1 (MAJUS), podeu alternar entre 3 modes de seqüència diferents:

1 - 16 passos seqüència mono

Seqüència poli de 2 a 16 passos: també es desencadenen notes d'una octava més baixes que les definides per pots (això drena 2 veus per ritme)

Seqüència poli de 3 a 8 passos, doble canal: s'envien dues seqüències de 8 passos paral·leles a dos canals diferents (CH1 i CH2 per defecte); establint el mateix valor de canal tant al canal primari com al segon dia, podeu tenir dues seqüències paral·leles de 8 passos reproduïdes pel mateix sintetitzador (polifònic).

Quant als LED: tan aviat com entreu al mode seqüenciador, s’encendran els quatre llums. Quan inicieu la seqüència, els LED seguiran la seqüència (o les seqüències). Vaig col·locar un LED cada quatre potenciòmetres i és suficient per a mi. Seria senzill modificar l’esbós per manejar 16 LED, un per cada pas.

Les funcions de miss fallides del seqüenciador de passos que algú podria trobar necessàries: MIDI sync IN, passos en espera (només es pot tancar un pas), sortida CV.

He implementat clock OUT, però d'alguna manera és un error. He provat dos enfocaments per a això (un amb i un sense interrupcions de temporitzador), però tots dos eren imperfectes (o fallen totalment). El rellotge MIDI ha de ser estrictament perfecte per treballar a llarg termini. De totes maneres s’envia un senyal de rellotge i el podeu desactivar directament a l’esbós (consulteu més endavant els detalls).

Tingueu en compte que aquest seqüenciador de passos és MIDI o digital si ho preferiu, de manera que per treballar cal connectar-lo a un sintetitzador habilitat per rebre i interpretar aquest tipus de missatges

Pas 3: maquinari necessari i construcció

Maquinari necessari i construcció
Maquinari necessari i construcció
Maquinari necessari i construcció
Maquinari necessari i construcció
Maquinari necessari i construcció
Maquinari necessari i construcció
Maquinari necessari i construcció
Maquinari necessari i construcció

Després de totes aquestes paraules, que es diverteixin!

Anem pel camí Arduino comú. Vaig fer servir un Arduino MEGA a causa de la gran quantitat d’entrades analògiques (volem una caixa plena de comandaments, no ?!:)).

En particular, Arduino MEGA pot gestionar 16 entrades analògiques (amb alguns ajustaments de maquinari, és a dir, mitjançant muxing, podeu augmentar això però no anem per aquesta ruta aquí), de manera que enviarem els 48 missatges MIDI a través de 16 potenciòmetres. A continuació, cada potenciòmetre controlarà tres paràmetres, un per a cada "pàgina"; les pàgines es seleccionen mitjançant un botó de commutació.

Llista de maquinari:

- 1x Arduino MEGA

- Potenciòmetres lineals de 10 K ohmis de 16 x lineals

- Tiradors de 16x

- 4x botons momentanis

- 4x LED

- Resistència de 6x 220 ohm

- 1x connector MIDI

- 1x caixa de projectes ABS

Alguns cables, cable de soldadura i sis - vuit hores de temps lliure.

Vaig fer servir un perfboard i algunes capçaleres de pin per adonar-me d’una mena d’escut on vaig soldar les resistències i vaig dirigir els cables. Això té l’avantatge de deixar-vos treure el vostre Arduino i fer-lo servir per a altres projectes (tots ens quedem pocs a les taules Arduino en algun moment!). De totes maneres no és obligatori i un altre bon enfocament podria ser dessoldar els capçals de pin arduino MEGA i soldar els cables directament al seu lloc.

He utilitzat resistències de 200 ohm en lloc de 220 ohm i funcionen perfectament de totes maneres; Jo apostaria que fins i tot les resistències de 150 ohms funcionarien molt bé (tant per a la comunicació MIDI com per als LED).

Per donar forma a la caixa, primer vaig aplicar un paper adhesiu a la superfície de la caixa, mesurant on s’haurien de foradar els forats (tenia 3 cm de forat en forat per deixar que s’adaptessin tots els testos) vaig fer els forats de guia i després els vaig ampliar a la dreta mida per deixar passar el fil de les olles o els botons amb un mini trepant. Vaig passar més o menys 2 hores a acabar la caixa. També em vaig adonar de petits forats i vaig enganxar LEDs al seu lloc.

També he perforat un forat per al connector MIDI OUT i un altre per al connector d'alimentació arduino (he utilitzat directament el connector d'alimentació USB incorporat i he bloquejat fermament l'arduino MEGA al seu lloc).

ADVERTÈNCIA: sempre utilitzeu proteccions per a ulls i mans mentre es perfora, qualsevol material que estigueu treballant (plàstic, fusta, metalls, compostos … no importa: teniu risc tant pel que fa a les eines elèctriques com a les estelles de material erosionat / cuinat) des de l’eina en moviment).

Després, vaig col·locar tots els testos i botons i vaig soldar els components segons la imatge adjunta. Una manera eficaç de reduir el pes de l'objecte final (i la longitud dels cables) és encadenar tots els pots tant a la línia 5V com a la línia GND.

I abans que ningú em pregunti: ho sé, aquella caixa que he fet servir és lletja! Però era gratis i res millor que gratis:)

Pas 4: cablejat

Cablejat
Cablejat

Connectar les coses és fàcil com connectar un potenciòmetre (x16), un polsador (x4) i un LED (x4) a una placa de microcontrolador Arduino. Aquí es descriuen tots els conceptes bàsics d’Arduino:)

S'adjunta el cablejat. Adona't que:

- S'utilitzen tots els pins analògics (d'A0 a A15), un per cada potenciòmetre;

- S'utilitzen 4 pins digitals (entrades) (a partir de D51, D49, D47, D45), un per a cada botó;

- altres 4 pins digitals (sortides) s'utilitzen per a LEDs (D43, D41, D39, D37);

- La connexió MIDI out és molt senzilla i demana dues resistències de 220 ohm (però fins a 150 ohm funcionaran)

- Els botons no demanen resistències desplegables, ja que l'esbós activa les resistències de tracció internes d'Arduino.

- Cada LED demana una resistència limitant actual (200-220 ohm estan bé per als LED verds).

He utilitzat els pins digitals indicats per comoditat, però no són pins "especials" (no estem utilitzant la capacitat pwm d'alguns pins aquí o alguna altra característica específica de pin): podeu configurar els pins digitals preferits, però recordeu-vos de modificar-los el codi en conseqüència o els vostres botons / LED no funcionaran.

Tingueu en compte que la connexió MIDI OUT de la imatge és vista FRONT (no vista posterior).

Pas 5: Programari: alguns enllaços a la teoria

No explicaré la teoria completa que hi ha darrere dels missatges exclusius del sistema o de canvi de control, perquè hi ha molts articles bons i és una tonteria reescriure el que ja s’ha escrit.

Només un enllaç ràpid per a la implementació de Roland SysEx:

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

- https://www.2writers.com/eddie/tutsysex.htm (ANGLÈS)

- https://www.chromakinetics.com/handsonic/rolSysEx.h… (ANGLÈS)

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

i algun enllaç per a MIDI en general:

-

-

Pas 6: Programari: l'esbós

Aquí adjuntem l’esbós que hauríeu de penjar al vostre Arduino Mega.

Vaig intentar que el programador fos el més "universal" possible, és a dir, que vaig intentar reduir els fragments de codi específics del sintetitzador. Vaig intentar que el codi fos el més senzill possible. Afegir el seqüenciador de passos va fer les coses més complexes i el codi més desordenat, de totes maneres va valer la pena per a mi. Mantenir el codi "universal" és per això que el disseny del controlador és tan "aleatori": segueix l'ordre dels paràmetres de la implementació MIDI que el fabricant del sintetitzador va definir al manual. Al principi pot ser confús, però hi estareu acostumat molt ràpid.

El codi / esbós / firmware per defecte només admet 48 paràmetres (tres pàgines de 16 comandaments cadascun), de manera que no podria ser possible controlar tots els missatges MIDI compatibles amb el sintetitzador (penseu en un virus d'accés o en Novation Supernova: accepten més o menys 110 paràmetres compatibles amb MIDI). Podeu canviar fàcilment l'esbós per donar suport a més missatges, si cal.

En realitat, s'admeten missatges SysEx compatibles amb Roland Alpha-Juno, JX8P, Korg DW8000 i Oberheim Matrix 6. He deixat el codi dels missatges compatibles amb Juno 106 per si ho necessiteu.

Per a Matrix 6, havia de seleccionar els paràmetres a controlar. Vaig deixar de banda el tercer sobre, la segona rampa i alguna cosa més. La matriu no es pot controlar via MIDI de totes maneres, així que també està fora. Necessiteu el microprogramari actualitzat (ver. 2.14 o superior) i haureu d'establir el paràmetre "Màster -> Habilita Sysex" a "3".

El rellotge és en certa manera un buggy (el rellotge ha de ser estricte-perfecte per funcionar com hauria de ser i probablement els dos enfocaments que vaig adoptar no siguin efectius). Per defecte està desactivat.

El codi inclou comentaris, de manera que no cal que feu cap comentari aquí.

Com sempre: recordeu que no sóc un programador a la vida real i, de ben segur, hi ha millors maneres de codificar allò que necessitem aquí. Si sou un programador i teniu suggeriments, esteu benvinguts. Envieu-me qualsevol variació que pugui augmentar l’eficiència / eficàcia del codi i l’inclouré a l’esbós principal (citant el col·laborador, òbviament!).

Sempre aprenc alguna cosa nova llegint el codi d’un bon codificador;)

Pas 7: Projectes relacionats

Pel que sé, no hi ha cap controlador i seqüenciador de paràmetres MIDI (potser el vell Behringer BCR2000 amb un firmware modificat?)

de totes maneres, si no sou propens a realitzar una caixa com aquesta, però us interessa solucions econòmiques per controlar els paràmetres del sintetitzador de forma remota, tingueu en compte aquestes altres alternatives:

- Editor CTRL MIDI: es tracta d’un programa de codi obert brillant i gratuït que s’executa a win / Linux / mac que pot convertir el vostre PC en un controlador complet per a sintetitzadors SysEx

- Convertidor CC "junosex" de David Konsumer: aquest projecte demana un treball de maquinari menor i la idea és fantàstica: un convertidor CC a SysEx basat en arduino que us permetrà utilitzar un controlador MIDI no SysEx comú (és a dir, un teclat mestre AKAI MPK) per parlar amb el sintetitzador SysEx-ready

Recomanat: