Tartalomjegyzék:

(majdnem) Univerzális MIDI SysEx CC programozó (és szekvenszer ): 7 lépés (képekkel)
(majdnem) Univerzális MIDI SysEx CC programozó (és szekvenszer ): 7 lépés (képekkel)

Videó: (majdnem) Univerzális MIDI SysEx CC programozó (és szekvenszer ): 7 lépés (képekkel)

Videó: (majdnem) Univerzális MIDI SysEx CC programozó (és szekvenszer ): 7 lépés (képekkel)
Videó: CS50 2014 – 4-я неделя, продолжение 2024, Július
Anonim
(majdnem) Univerzális MIDI SysEx CC programozó (és szekvenszer …)
(majdnem) Univerzális MIDI SysEx CC programozó (és szekvenszer …)
(majdnem) Univerzális MIDI SysEx CC programozó (és szekvenszer …)
(majdnem) Univerzális MIDI SysEx CC programozó (és szekvenszer …)

A nyolcvanas évek közepén a szintetizátorok elkezdtek egy "kevesebb a jobb" folyamatot, ami a barebones szintetizátorokhoz vezetett. Ez lehetővé tette a költségek csökkentését a gyártó oldalán, de a javítási folyamatot unalmassá, ha lehetetlenné tette a végfelhasználó számára.

A gyártók maguk és a harmadik féltől származó vállalatok opcionális dobozokat készítettek, amelyek tele voltak gombokkal és/vagy csúszkákkal, hogy valóban "játszhassanak" a szintetizátor hangjaival, de ezek manapság buták, túl drágák, és mint mindig, kénytelenek vagyunk olcsó megoldásokat találni;)

Ez a projekt abból adódott, hogy könnyen programoznom kellett patch -eket néhány legújabb szintetizátor vásárlásomhoz: Roland Alpha Juno 2 és JX8P. Egy egyszerű SysEx vezérlőként indult, majd rám nőtt, és valami bonyolultabbá vált, és más szintetizátorok is támogatottak az úton (Korg DW8000, Oberheim Matrix 6/6R, SCI MAX) és egy beépített szekvenszer.

Ebben az oktatható fejezetben megmutatom, hogyan valósíthatja meg saját vezérlőjét: egy olcsó eszköz, amely emulálja azokat a magas árú paramétervezérlő dobozokat … és még sok más (a részletekért olvassa tovább).

1. lépés: Mi ez a dolog (és mi nem…)

Mi ez pontosan (és mi nem…)
Mi ez pontosan (és mi nem…)
Mi ez pontosan (és mi nem…)
Mi ez pontosan (és mi nem…)
Mi ez pontosan (és mi nem…)
Mi ez pontosan (és mi nem…)

A MIDI SysEx és a Control Change vezérlő itt lényegében egy 16 gombos (potenciométer) és 4 gombos MIDI vezérlő. Az alapértelmezett vázlat három "oldalt" kezel, összesen 48 szintetizátor hangparamétert.

A vezérlőt kompatibilissé tettem a vezérlőváltás MIDI-üzeneteivel (egy egyszerű és "globális" típusú MIDI-üzenet, amelyet a szintetizátorok széles körben használnak, különösen a 90-es évekből) és a SysEx-üzenetekkel (egy másik típusú MIDI-üzenet, kevésbé általános és erősen szintetikus specifikus a 80 -as években használták).

A vezérlő alapértelmezés szerint kompatibilis a következőkkel:

- Roland Alpha Juno (1/2)

- Roland JX8P

- Korg DW8000

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

- MAX/SixTrak szekvenciális áramkörök.

Végül engedélyezheti, hogy a vezérlő bármilyen szintetizátoron működjön, amely képes fogadni a MIDI vezérlőmódosítás (CC) üzeneteket, de alapértelmezés szerint le van tiltva.

Mivel a projekt nyílt forráskódú, nagyon könnyű bármilyen más szintetizátort választani (részletekért lásd a kód lépést).

A hangparaméterek elrendezése mindezekkel a számokkal először zavaró lehet, de nem "véletlenszerű", mint amilyennek látszhat: a gyártó MIDI megvalósítási diagramjának sorrendjét követi. Ez volt a tervezési választás, hogy a kód egyszerű és "univerzális" maradjon.

Az Alpha-Junos, JX8P, DW8000, Matrix 6 és MAX/SixTrak modellekhez tartozó 4x4 "elrendezésű" képeslapokat ezen az oldalon töltheti le: a kék paraméterek azok, amelyeket az 1. oldalon, a fekete pedig a 2. oldalon és narancssárga színűek a 3. oldalon.

Még akkor is, ha a vezérlőnek nincs képernyője, a szintetizátorokkal való játék, amely megmutatja, hogy milyen paramétert hangolnak valós időben, örömet okoz a javítás létrehozásában. Erre például a JX8P és a Matrix 6 képes; az Alpha Juno ehelyett nem mutatja meg a paraméter módosítását, és kissé megnehezíti a dolgokat (de a félelmetes javítások létrehozása mindenképpen kivitelezhető és egyszerűbb, mint a beépített gomb nélküli felület használatával); A DW8000 csak numerikus kijelzővel rendelkezik, de a csípéseit valós időben láthatja, így a kettő között helyezkedik el.

Mi van azokkal a gombokkal?

Nos, az első (az elrendezésem bal felső sarkában) az oldalszörfözésre szolgál: ugorjon a következő paraméter oldalára a gomb minden egyes megnyomására. A LED -ek jelzik, hogy melyik oldalon tartózkodik.

A második, amikor megnyomja, küldje vissza a tapaszt, ahol dolgozik, a szintetizátorhoz (képzeld el: te készítetted életed javítását, majd megérintettél egy program gombot a szintetizátor felületén, és betöltődött a gomb-specifikus javítás … minden munkád befejeződött !). Ezzel a gombbal elküldheti az összes értéket, amelyet a programozó megjegyzett az utolsó javítási folyamat során. Ez a javítás -visszahívási folyamat nem működik, ha ismét megnyomja a randomizátort (a randomizációs folyamat felülírja az összes paramétert a memóriában), és csak azokra a paraméterekre érvényes, amelyeket legalább egyszer szerkesztett. A legújabb javítás nem marad a memóriában a leállítás után.

A harmadik egy másodlagos funkcióra vonatkozik: a randomizátor/patcher! Forgassa el teljesen az óramutató járásával ellentétes irányba azt a gombot, amelyen a kívánt paramétert minimális értékre szeretné rögzíteni (pl. Oszcillátor LFO, oszcillátor burkolat, stb.), Vagy fordítsa el teljesen az óramutató járásával megegyező irányba az érték maximalizálása érdekében (pl. Oszcillátor keverék hangereje, VCA hangereje stb.), Majd nyomja meg a gomb az összes többi paraméter randomizálási folyamatának elindításához.

A negyedik gomb a húsvéti tojás aktiválására szolgál (valamiféle…). Behelyeztem a kódba, miután észrevettem, hogy az elrendezés tökéletes … egy 16 lépéses MIDI szekvenszerhez! Pontosan: nyomja meg a negyedik gombot (MODE gomb), a vezérlő "szekvenszer üzemmódba" lép, és a régi analóg szekvenszerhez hasonló módon válthat ki hangjegyeket. Szép uh!

Nyomja meg ismét a MODE gombot a vezérlő/patcher módba való visszatéréshez.

Mi van azokkal a LED -ekkel?

4 gomb található minden egyes gombhoz (az elrendezésben minden gomb jobb oldalán); ezeknek a LED -eknek több öntőpontja van:

1) megmondják, hogy melyik paraméteroldalon tartózkodik (a felső LED világít, ha az 1. oldalon tartózkodik, az alatta lévő LED világít, ha a 2. oldal aktív, a 3. LED világít… maga találta ki). 3 oldalas ATM -re korlátozódunk, de a kód könnyen beállítható több oldal kezelésére;

2) a második LED jelzi a 2. oldal paramétereit ÉS világít, amikor a mikrokontroller elküldi az előző patch -et (patch recall);

3) a harmadik LED jelzi a paramétereket 3. oldal ÉS világít a randomizációs folyamat során.

A negyedik LED nem tesz semmit a MIDI vezérlő módban, és a globális módváltásra szolgál.

Mindezek a funkciók MIDI üzenetként kerülnek továbbításra, így a hatékonyság érdekében a szintetizátornak képesnek kell lennie az ilyen típusú üzenetek fogadására és értelmezésére

2. lépés: A "rejtett" 16 lépéses szekvenszer

Az
Az

Mint mondtam, a vezérlő tesztelése közben rájöttem, hogy nagyszerű lenne egy hangjegysorozatot futtatni, hogy módosíthassam a szintetizátor paramétereit, és jobban megértsem a hangzás végső hatását. Van egy szoftveres szekvenerátorom (annyira szeretem a seq24-et!), De ez a hardver szinte tökéletes 16 lépéses szekvenszer! Akkor már csak kód kérdése volt a megvalósítása.

A vezérlő mód és a szekvenszer üzemmód között válthat a #4 gomb megnyomásával (MODE gomb).

A szekvenszer módban a gombok másként működnek, és a LED -ek új információkat nyújtanak:

- az első gomb (SHIFT gomb) lenyomva lehetővé teszi a tempót, a hang hosszát, a csatornákat és az oktáv módosítást; a tempóértéket az első potenciométer helyzete adja meg, a hanghossz a második potenciométer pozícióból, a MIDI csatornák a harmadik és negyedik potenciométer pozícióból, oktáv (-1 o-tól +2-ig) az ötödik potból. A tempót 40 BPM -től (az 1. potenciométert forgassa el teljesen az óramutató járásával ellentétes irányban, miközben az #1 gombot lenyomva tartja) közel 240 BPM -ig (fordítsa el az 1. potenciométert az óramutató járásával megegyező irányba, miközben az #1 gombot lenyomva tartja). A jegyzetek hosszát fél jegyzetre, negyed jegyzetre, nyolcas hangra, tizenhatos jegyzetre állíthatja be a 2. edény forgatásával, miközben lenyomva tartja a SHIFT gombot. A MIDI csatornákat (elsődleges és másodlagos csatorna) 1 és 16 között állíthatja be. Az alaphangok tartománya (C2 és F#4 között) csökkenthető egy oktávval, vagy növelhető egy vagy két oktávval.

Alapértelmezés szerint a tempó 120 ütés / perc, a hanghossz pedig a negyedhang.

- a második gomb elindítja és leállítja a hangjegyek sorozatát. Mint már említettük, ha a sorrend futtatása közben megváltoztatja a módot a #4 (MODE) gomb megnyomásával, akkor belép a vezérlő módba, de a sorozat továbbra is fut.

- a harmadik gomb PÁNIK! A gomb lenyomásával az összes jegyzet kikapcsol.

- a negyedik a globális módok (pather vagy szekvenszer) közötti váltásra szolgál, ha az #1 gombot nem nyomja meg, vagy a sorozatmódok között (lásd az alábbiakban), amikor az #1 le van nyomva.

Szekvenszer módban, ha megnyomja az üzemmódválasztó gombot, miközben az #1 gombot (SHIFT) lenyomva tartja, 3 különböző sorozatmód között válthat:

1 - 16 lépés mono sorozat

2 - 16 lépés polisorrendje: megjegyzi, hogy egy oktávval alacsonyabb, mint a potoké, szintén aktiválódik (ez 2 hangot dob leütésenként)

3 - 8 lépéses polisorozat, kétcsatornás: két párhuzamos 8 lépéses szekvenciát küld két különböző csatornára (alapértelmezés szerint CH1 és CH2); ha ugyanazt a csatornaértéket állítja be mind az elsődleges, mind a másodlagos csatornán, akkor két párhuzamos 8 lépéses szekvenciát kaphat ugyanaz (többszólamú) szintetizátor.

A LED -ekről: amint belép a szekvenszer üzemmódba, mind a négy lámpa kigyullad. Amikor elindítja a sorozatot, a LED -ek követik a sorozatot (vagy a szekvenciákat). Négy potenciométerenként elhelyeztem egy LED -et, és ez elég nekem. Egyszerű lenne a vázlatot úgy módosítani, hogy 16 LED -et kezeljen, minden lépésnél egyet.

A lépéssorozat -kihagyó funkciók, amelyeket valaki szükségesnek találhat: MIDI szinkronizálás IN, lépések tartás (csak egy lépést zárhat le), önéletrajz.

Megvalósítottam az óra kimenetet, de valahogy hibás. Erre kétféle módszert próbáltam (az egyik időzítő megszakításokkal és a másik nélkül), de mindkettő tökéletlen (vagy teljes sikertelen). A MIDI órának szigorúnak és tökéletesnek kell lennie ahhoz, hogy hosszú távon működjön. Az órajel mindenesetre elküldésre kerül, és ezt közvetlenül a vázlaton is letilthatja (részleteket lásd később).

Vegye figyelembe, hogy ez a lépéssorozat -készítő MIDI, vagy digitális, ha úgy tetszik, ezért a működéshez csatlakoztatni kell egy szintetizátorhoz, amely képes fogadni és értelmezni az ilyen jellegű üzeneteket

3. lépés: Szükséges hardver és építés

Szükséges hardver és építés
Szükséges hardver és építés
Szükséges hardver és építés
Szükséges hardver és építés
Szükséges hardver és építés
Szükséges hardver és építés
Szükséges hardver és építés
Szükséges hardver és építés

Ennyi szó után szórakozzunk jól!

A közös Arduino úton megyünk. Arduino MEGA -t használtam a nagy mennyiségű analóg bemenet miatt (ugye szeretnénk egy doboz tele gombos gombokkal?:)).

Különösen az Arduino MEGA képes kezelni 16 analóg bemenetet (némi hardveres csípéssel, azaz muxálással ezt növelheti, de itt nem ezt az utat választjuk), ezért a 48 MIDI üzenetet 16 potenciométeren keresztül küldjük el. Ezután minden potenciométer három paramétert fog vezérelni, egyet minden "oldalra"; oldalakat egy kapcsológombbal választja ki.

Hardver lista:

- 1x Arduino MEGA

- 16x lineáris, egyfordulatú 10 K ohmos potenciométer

- 16x pot gomb

- 4x pillanatnyi nyomógomb

- 4x LED

- 6x 220 ohmos ellenállás

- 1x MIDI csatlakozó

- 1x ABS projekt doboz

Némi kábel, forrasztóhuzal és hat -nyolc óra szabadidő.

Egy perfboardot és néhány tűfejlécet használtam egyfajta pajzshoz, amelyre az ellenállásokat forrasztottam, és a kábeleket irányítottam. Ennek az az előnye, hogy előveheti az Arduino -t, és más projektekhez használhatja (valamikor mindannyian fogyunk az Arduino táblákról!). Ez egyébként nem kötelező, és egy másik jó megoldás lehet az arduino MEGA tűhegyek és forrasztókábelek forrasztása közvetlenül a helyükön.

200 ohmos ellenállásokat használtam a 220 ohmos ellenállások helyett, és amúgy tökéletesen működnek; fogadni mernék, hogy akár 150 ohmos ellenállás is remekül működne (mind a MIDI kommunikáció, mind a LED -ek esetében).

A doboz formázásához először ragasztópapírt kentem a doboz felületére, és mértem, hogy hol kell fúrni a lyukakat (3 cm volt a lyuktól a lyukig, hogy minden edény elférjen), elkészítettem a vezetőfuratokat, majd jobbra nagyítottam méret, hogy a fazekakat cérnával vagy a gombokat menni lehessen egy mini fúróval. Nagyjából 2 órát töltöttem a doboz befejezésével. Kis lyukakra is rájöttem, és LED -eket ragasztottam a helyükre.

Fúrtam egy lyukat a MIDI OUT csatlakozóhoz, és egy másikat az arduino tápcsatlakozóhoz (közvetlenül a beépített USB tápcsatlakozót használtam, és határozottan a helyére zártam az arduino MEGA-t).

FIGYELMEZTETÉS: fúrás közben mindig MINDIG viseljen szem- és kézvédőt, bármilyen anyaggal dolgozik (műanyag, fa, fémek, kompozitok … ez nem számít: veszélyben van mind az elektromos szerszámok, mind az erodált/égetett anyagforgács tekintetében a mozgó szerszámtól).

Ezután elhelyeztem az összes edényt és gombot, és forrasztottam az alkatrészeket a mellékelt kép szerint. A végső tárgy súlyának (és a kábelek hosszának) csökkentésének hatékony módja az összes edény láncolása mind az 5V -os, mind a GND -vonalon.

És mielőtt bárki megkérdezi: tudom, hogy az a doboz, amit használtam, csúnya! De ingyenes volt, és semmi sem volt szabad:)

4. lépés: huzalozás

Vezeték
Vezeték

A dolgok bekötése egyszerű, például egy potenciométer (x16), nyomógomb (x4) és LED (x4) csatlakoztatása egy Arduino mikrokontroller kártyához. Az Arduino összes alapját itt tárgyaljuk:)

Csatlakoztatva van a vezeték. Vegye figyelembe, hogy:

- Minden analóg csapot használnak (A0 -tól A15 -ig), egyet minden potenciométerhez;

- 4 digitális tüske (bemenet) használható (D51, D49, D47, D45), egy -egy gombonként;

- további 4 digitális érintkezőt (kimenetet) használnak a LED -ekhez (D43, D41, D39, D37);

- A MIDI kimenet nagyon egyszerű, és két 220 ohmos ellenállást kér (de 150 ohmig működik)

- A gombok nem kérnek lehúzható ellenállásokat, mivel a vázlat aktiválja a belső Arduino felhúzó ellenállásait.

- Minden LED kúra-korlátozó ellenállást kér (200-220 ohm megfelelő a zöld LED-ekhez).

Az árucikkekhez a felsorolt digitális csapokat használtam, de ezek nem "speciális" csapok (itt nem használjuk néhány tű pwm képességét vagy más tűspecifikus funkciót): beállíthatja kedvenc digitális csapjait, de ne felejtse el módosítani a kód ennek megfelelően, vagy a gombok/LED -ek nem fognak működni!

Kérjük, vegye figyelembe, hogy a képen látható MIDI OUT csatlakozó elölnézet (nem hátulnézet).

5. lépés: Szoftver - néhány link az elmélethez

Nem fogom elmagyarázni a System Exclusive vagy a Control Change üzenetek mögötti teljes elméletet, mert rengeteg jó cikk létezik, és ostobaság átírni a már leírtakat.

Csak néhány gyors link a Roland SysEx megvalósításához:

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

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

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

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

és általában egy link a MIDI -hez:

-

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

6. lépés: Szoftver - a vázlat

Itt mellékeljük a vázlatot, amelyet fel kell töltenie Arduino Mega készülékére.

Megpróbáltam a programozót a lehető leguniverzálisabbnak tartani, vagyis megpróbáltam csökkenteni a szintetizátorra jellemző kódrészleteket. Próbáltam a kódot a lehető legegyszerűbbé tenni. A step szekvencer hozzáadása bonyolultabbá tette a dolgokat, és a kódot rendezetlenebbé, egyébként nekem megérte. A kód "univerzális" megtartása miatt a vezérlő elrendezése annyira "véletlenszerű": követi a kézikönyvben meghatározott szintetizátor MIDI implementációjának paramétereinek sorrendjét. Eleinte zavaró lehet, de nagyon gyorsan hozzászokik.

Az alapértelmezett kód/vázlat/firmware "csak" 48 paramétert támogat (három oldal, mindegyik 16 gombos), így nem lehetett szabályozni a szintetizátor által támogatott összes MIDI -üzenetet (gondoljunk egy Access Virus vagy Novation Supernova programra: ezek elfogadnak többet vagy kevesebb, mint 110 MIDI -kompatibilis paraméter). Szükség esetén könnyedén megváltoztathatja a vázlatot több üzenet támogatásához.

Valójában a Roland Alpha-Juno, JX8P, Korg DW8000 és Oberheim Matrix 6 kompatibilis SysEx üzenetek támogatottak. Hagytam a Juno 106 kompatibilis üzenetek kódját arra az esetre, ha erre szüksége lenne.

A 6 -os mátrixhoz ki kellett választanom a vezérelni kívánt paramétereket. Kihagytam a harmadik borítékot, a második rámpát és még valamit. A mátrixot egyébként nem lehet MIDI -n keresztül vezérelni, tehát az is kint van. Szüksége van a frissített firmware -re (2.14 vagy újabb verzió), és a "Master -> Sysex Enable" paramétert "3" -ra kell állítania.

Az óra valamilyen módon hibás (az órának szigorúnak és tökéletesnek kell lennie, hogy megfelelően működjön, és valószínűleg az általam alkalmazott két megközelítés, ahol nem hatékony). Alapértelmezés szerint le van tiltva.

A kód megjegyzéseket tartalmaz, így itt nincs szükség további megjegyzésekre.

Mint mindig: ne feledje, hogy a való életben nem vagyok kódoló, és biztosan vannak jobb módszerek arra, hogy kódoljuk, amire itt szükségünk van. Ha Ön kódoló és javaslata van, szívesen látjuk! Kérem, küldjön nekem minden olyan változatot, amely növelheti a kód hatékonyságát/hatékonyságát, és beillesztem a fő vázlatba (nyilvánvalóan a Közreműködőre hivatkozva!).

Mindig tanulok valami újat, ha elolvasok néhány jó kódoló kódot;)

7. lépés: Kapcsolódó projektek

Amennyire én tudom, nincs MIDI paramétervezérlő és szekvenszer (talán a régi Behringer BCR2000 módosított firmware -vel?)

Mindenesetre, ha nem hajlamos egy ilyen doboz megvalósítására, de nagyon érdekli az olcsó megoldások a szintetizátor paramétereinek távoli vezérléséhez, fontolja meg a következő alternatívákat:

- CTRL MIDI szerkesztő: ez egy ragyogó, ingyenes, nyílt forráskódú program, amely win/Linux/mac rendszeren fut, és képes a SysEx szintetizátorok teljes vezérlőjévé tenni a számítógépét

- David Konsumer "junosex" CC átalakítója: ez a projekt kisebb hardvermunkát kér az Ön oldalán, és az ötlet nagyszerű - egy arduino alapú CC -SysEx konverter, amellyel egy közös, nem SysEx MIDI vezérlőt (pl. AKAI MPK master billentyűzetet) használhat), hogy beszéljen a SysEx-kompatibilis szintetizátorával

Ajánlott: