Sisällysluettelo:

(melkein) Universal MIDI SysEx CC -ohjelmoija (ja sekvensseri ): 7 vaihetta (kuvilla)
(melkein) Universal MIDI SysEx CC -ohjelmoija (ja sekvensseri ): 7 vaihetta (kuvilla)

Video: (melkein) Universal MIDI SysEx CC -ohjelmoija (ja sekvensseri ): 7 vaihetta (kuvilla)

Video: (melkein) Universal MIDI SysEx CC -ohjelmoija (ja sekvensseri ): 7 vaihetta (kuvilla)
Video: 🌹 Вяжем шикарный женский джемпер спицами по многочисленным просьбам! Подробный видео МК! Часть1. 2024, Joulukuu
Anonim
(melkein) Universal MIDI SysEx CC -ohjelmoija (ja sekvensseri …)
(melkein) Universal MIDI SysEx CC -ohjelmoija (ja sekvensseri …)
(melkein) Universal MIDI SysEx CC -ohjelmoija (ja sekvensseri…)
(melkein) Universal MIDI SysEx CC -ohjelmoija (ja sekvensseri…)

1980 -luvun puolivälissä syntetisaattorivalmistajat aloittivat "vähemmän on parempi" -prosessin, joka johti barebones -syntetisaattoreihin. Tämä mahdollisti kustannusten alentamisen valmistajan puolella, mutta teki korjausprosessista tylsiä, ellei mahdotonta loppukäyttäjälle.

Valmistajat itse ja kolmannen osapuolen yritykset tekivät valinnaisia laatikoita, jotka olivat täynnä nuppeja ja/tai liukusäätimiä, joiden avulla voit todella "leikkiä" syntetisaattorisi kanssa, mutta nämä ovat nykyään typeriä ylihintoja ja kuten aina, meidän on pakko löytää halpoja ratkaisuja itse;)

Tämä projekti tuli tarpeestani ohjelmoida helposti korjauksia joihinkin uusimpiin syntetisaattoreihini: Roland Alpha Juno 2 ja JX8P. Se alkoi yksinkertaisena SysEx-ohjaimena, sitten se kasvoi minussa ja siitä tuli monimutkaisempi, ja muut syntetisaattorit tuettiin matkalla (Korg DW8000, Oberheim Matrix 6/6R, SCI MAX) ja sisäänrakennettu sekvensseri.

Tässä ohjeessa näytän sinulle, kuinka toteuttaa oma ohjaimesi: halpa työkalu, joka jäljittelee kalliita parametrien ohjauslaatikoita … ja enemmän (jatka lukemista saadaksesi lisätietoja …).

Vaihe 1: Mikä tämä asia oikein on (ja mikä ei ole …)

Mikä tämä asia oikein on (ja mikä ei …)
Mikä tämä asia oikein on (ja mikä ei …)
Mikä tämä asia oikein on (ja mikä ei …)
Mikä tämä asia oikein on (ja mikä ei …)
Mikä tämä asia oikein on (ja mikä ei …)
Mikä tämä asia oikein on (ja mikä ei …)

MIDI SysEx ja Control Change -ohjain ovat tässä oleellisesti 16 nuppia (potentiometriä) ja 4 painiketta MIDI -ohjainta. Oletusluonnos käsittelee kolmea "sivua", yhteensä 48 syntetisaattoriparametria.

Tein ohjaimesta yhteensopivan ohjausmuutoksen MIDI-sanomien (yksinkertainen ja "globaali" MIDI-viesti, jota syntetisaattorivalmistajat käyttivät laajalti erityisesti 90-luvulta) ja SysEx-sanomien (toinen MIDI-viestityyppi, paljon vähemmän yleinen ja erittäin syntikoille ominainen voimakkaasti) käytetty 80 -luvulla).

Ohjain on oletusarvoisesti yhteensopiva seuraavien kanssa:

- Roland Alpha Juno (1/2)

- Roland JX8P

- Korg DW8000

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

- Peräkkäiset piirit MAX/SixTrak.

Voit lopulta sallia ohjaimen toimia millä tahansa syntetisaattorilla, joka voi vastaanottaa MIDI -ohjausmuutoksen (CC) viestejä, mutta se on oletusarvoisesti pois käytöstä.

Koska projekti on avoimen lähdekoodin luonne, on erittäin helppoa tukea mitä tahansa muuta valitsemasi syntetisaattoria (katso lisätietoja koodivaiheesta).

Ääniparametrien asettelu kaikkien näiden numeroiden kanssa saattaa olla aluksi hämmentävä, mutta se ei ole "satunnainen", koska se voisi näyttää: se noudattaa valmistajan MIDI -toteutustaulukon järjestystä. Tämä oli suunnitteluvaihtoehto pitää koodi yksinkertaisena ja "yleismaailmallisena".

Voit ladata kuva-arkkeja 4x4 "asettelulla", jonka ymmärsin Alpha-Junosille, JX8P: lle, DW8000: lle, Matrix 6: lle ja MAX/SixTrakille tältä sivulta: siniset parametrit ovat niitä, joita voit säätää sivulla 1, mustia sivulla 2 ja oranssi sivulla 3.

Vaikka ohjaimessa ei olisi näyttöä, leikkiminen syntikoilla, jotka näyttävät sinulle, mitä parametria viritetään reaaliajassa, tekee laastarin luomisprosessista iloa. Esimerkiksi JX8P ja Matrix 6 kykenevät tähän; sen sijaan Alpha Juno ei näytä muuttuvaa parametria ja tekee asioista hieman vaikeampia (mutta mahtavien korjaustiedostojen luominen on ehdottomasti toteutettavissa ja helpompaa kuin käyttämällä sisäänrakennettua nupittomia käyttöliittymiä); DW8000: ssa on vain numeeriset näytöt, mutta voit nähdä tweakins reaaliajassa, joten se sijoittuu tämän väliin.

Entä ne painikkeet siellä?

No, ensimmäinen (asetteluni vasemmassa yläkulmassa) on sivusurffausta varten: siirry seuraavan parametrin sivulle jokaisen painikkeen painalluksen jälkeen. LEDit osoittavat, millä sivulla olet.

Kun painat toista, lähetä korjaustiedosto sinne, missä työskentelet, takaisin syntetisaattorille (kuva: teit elämäsi laastarin, kosketit sitten ohjelmointipainiketta syntetisaattorin pinnalla ja painikekohtainen laastari ladattiin … kaikki työsi on mennyt !). Tällä painikkeella voit lähettää kaikki arvot, jotka ohjelmoija oli tallentanut viimeisen korjausprosessin aikana. Tämä korjaustiedoston palautusprosessi ei toimi, jos painat satunnaistinta uudelleen (satunnaistamisprosessi korvaa kaikki muistissa olevat parametrit) ja se toimii vain parametreissa, joita olet muokannut vähintään kerran. Uusinta korjaustiedostoa ei tallenneta muistiin sammutuksen jälkeen.

Kolmas on toissijainen toiminto: satunnaistin/patcher! Käännä täysi vastapäivään nupit, joiden haluat parametrin vaikuttavan lukittavan minimiarvoon (ts. Oskillaattorin LFO, oskillaattorin kirjekuori jne.) Tai käännä kokonaan myötäpäivään maksimoidaksesi arvon (ts. Oskillaattorisekoituksen äänenvoimakkuus, VCA -äänenvoimakkuus jne.) Ja paina painiketta kaikkien muiden parametrien satunnaistamisprosessin aloittamiseksi.

Neljäs painike on käytössä pääsiäismunan aktivoimiseksi (eräänlainen…), jonka asetin koodiin huomatessani, että asettelu oli täydellinen… 16 -vaiheiselle MIDI -sekvensserille! Täsmälleen: paina neljättä painiketta (MODE -painike), ohjain siirtyy "sekvensseritilaan" ja voit laukaista muistiinpanoja samalla tavalla kuin vanha analoginen sekvensseri. Kiva uh!

Palaa ohjaimen/patcher -tilaan painamalla MODE -painiketta uudelleen.

Entäs ne LEDit?

Jokaisessa painikkeessa on neljä LEDiä (joka on asetteluessani jokaisen painikkeen oikealla puolella); Näissä LED -valoissa on useita valoja:

1) ne kertovat, millä parametrisivulla olet (ylempi merkkivalo palaa, kun olet sivulla 1, alla oleva LED -valo palaa, kun sivu 2 on aktiivinen, LED 3 palaa … sinä keksit sen itse). Meillä on vain 3 sivun pankkiautomaatti, mutta koodi voidaan helposti virittää käsittelemään enemmän sivuja;

2) toinen LED osoittaa parametrit sivu 2 JA palaa, kun mikro -ohjain lähettää edellisen korjaustiedoston (korjaustiedoston kutsu);

3) kolmas LED osoittaa parametrit sivu 3 JA palaa satunnaistamisprosessin aikana.

Neljäs LED ei tee mitään MIDI -ohjaintilassa, ja sitä käytetään yleiseen MODE -muutokseen.

Kaikki nämä toiminnot lähetetään MIDI -viesteinä, joten jotta ne olisivat tehokkaita, syntetisaattorisi on pystyttävä vastaanottamaan ja tulkitsemaan tällaisia viestejä

Vaihe 2: "Piilotettu" 16 askeleen sekvensseri

The
The

Kuten sanottu, testatessani ohjainta tajusin, että olisi hienoa antaa nuottisarja suorittaa, jotta voisin säätää syntetisaattorin parametreja ja saada paremman käsityksen lopullisesta vaikutuksesta sävyyn. Minulla on ohjelmistosekvensseri (pidän seq24: stä niin paljon!), Mutta tämä laitteisto on lähes täydellinen 16-vaiheinen sekvensseri! Sitten se oli vain koodi toteuttaa sen.

Voit vaihtaa säätimen ja sekvensseritilan välillä painamalla painiketta #4 (MODE -painike).

Sekvensseritilassa painikkeet toimivat eri tavalla ja LEDit antavat sinulle uutta tietoa:

- ensimmäinen painike (VAIHTO -painike), kun sitä painetaan, mahdollistaa tempon, nuotin pituuden, kanavat ja oktaavimuutoksen; tempoarvo saadaan ensimmäisen potentiometrin sijainnista, nuotin pituus lasketaan toisesta potentiometrin asennosta, MIDI-kanavat kolmannesta ja neljännestä potentiometrin asennosta ja oktaavi (-1 o-+2) viidennestä potista. Voit säätää nopeutta 40 BPM: stä (käännä potentiometri #1 täyteen vastapäivään pitäen painiketta #1 painettuna) lähes 240 BPM: ään (käännä potentiometri #1 täyteen myötäpäivään pitäen painiketta #1 painettuna). Voit asettaa nuotin pituudeksi puolet, neljännes, kahdeksas ja kuusitoista nuotti kääntämällä potti #2 pitämällä VAIHTO -painiketta painettuna. Voit asettaa MIDI -kanavat (ensisijainen kanava ja toissijainen kanava) väliltä 1 - 16. Perustodistusten vaihteluväli (C2 - F#4) voidaan laskea yhdellä oktaavilla tai lisätä yhdellä tai kahdella oktaavilla.

Oletusarvo on 120 BPM ja nuotin pituus neljännesmuistiin.

- toinen painike käynnistää ja lopettaa nuotit. Kuten sanottu, jos vaihdat tilaa painamalla painiketta #4 (MODE) sarjan aikana, siirryt ohjaimen tilaan, mutta sarja jatkuu.

- kolmas painike on PANIIKKI! Painamalla sitä kaikki muistiinpanot sammutetaan.

- neljättä käytetään vaihtamaan globaalien tilojen (pather tai sekvensseri) välillä, kun painiketta #1 ei paineta, tai sekvenssitilojen välillä (katso jäljempänä), kun #1 on painettuna.

Jos painat sekvensseritilassa tilanvalintapainiketta samalla, kun pidät painiketta #1 (SHIFT) painettuna, voit vaihtaa kolmen eri sekvenssitilan välillä:

1-16 askeleen mustavalkosarja

2 - 16 askeleen polyjärjestys: huomaa myös, että yksi oktaavi on pienempi kuin potin määrittämät (tämä tyhjentää 2 ääntä / lyönti)

3 - 8 askeleen polyjärjestys, kaksikanavainen: kaksi rinnakkaista 8 askeleen jaksoa lähetetään kahdelle eri kanavalle (CH1 ja CH2 oletuksena); asettamalla sama kanava-arvo sekä ensisijaisella että toissijaisella kanavalla, voit saada kaksi rinnakkaista 8-vaiheista jaksoa samalla (polyfonisella) syntetisaattorilla.

Tietoja LEDeistä: heti kun siirryt sekvensseritilaan, kaikki neljä valoa syttyvät. Kun aloitat sekvenssin, LEDit seuraavat järjestystä (tai jaksoja). Laitoin yhden LEDin neljän potentiometrin välein ja se riittää minulle. Luonnosta olisi helppo muokata siten, että se käsittelee 16 LEDiä, yksi kullekin askeleelle.

Askelsekvenssin ohitusominaisuudet, joita joku voisi löytää tarpeellisiksi: MIDI sync IN, askeleet pidossa (voit sulkea vain askeleen), CV ulos.

Olen ottanut käyttöön kellon ulos, mutta se on jotenkin viallinen. Kokeilin tätä varten kahta lähestymistapaa (toinen ajastimella ja toinen ilman keskeytyksiä), mutta ne molemmat olivat epätäydellisiä (tai täysin epäonnistuneet). MIDI-kellon on oltava tiukka ja täydellinen toimimaan pitkällä aikavälillä. Kellosignaali lähetetään joka tapauksessa ja voit poistaa sen käytöstä luonnoksesta (katso lisätietoja myöhemmin).

Huomaa, että tämä askeljärjestys on MIDI tai halutessasi digitaalinen, joten jotta se toimisi, sen on oltava yhdistettynä syntetisaattoriin, joka voi vastaanottaa ja tulkita tällaisia viestejä

Vaihe 3: Tarvittavat laitteet ja rakentaminen

Tarvittavat laitteet ja rakentaminen
Tarvittavat laitteet ja rakentaminen
Tarvittavat laitteet ja rakentaminen
Tarvittavat laitteet ja rakentaminen
Tarvittavat laitteet ja rakentaminen
Tarvittavat laitteet ja rakentaminen
Tarvittavat laitteet ja rakentaminen
Tarvittavat laitteet ja rakentaminen

Näiden sanojen jälkeen pidä hauskaa!

Menemme yhteiseen Arduinon suuntaan. Käytin Arduino MEGA: ta, koska analogisia tuloja oli paljon (haluamme laatikon, joka on täynnä nuppuja, eikö?!:)).

Erityisesti Arduino MEGA pystyy käsittelemään 16 analogista tuloa (joitain laitteiston säätöjä, ts. Muokkaamalla, voit lisätä tätä, mutta emme mene tähän reittiin täällä), joten lähetämme 48 MIDI -viestiä 16 potentiometrin kautta. Jokainen potentiometri ohjaa sitten kolmea parametria, yksi kullekin "sivulle"; sivut valitaan kytkinpainikkeella.

Laitteistoluettelo:

- 1x Arduino MEGA

- 16x lineaarinen, yksi kierros 10 K ohmin potentiometri

- 16x potin nupit

- 4x hetkelliset painikkeet

- 4x LED

- 6x 220 ohmin vastus

- 1x MIDI -liitin

- 1x ABS -projektien laatikko

Jotkut kaapelit, juotoslanka ja 6-8 tuntia vapaa -aikaa.

Käytin perfboardia ja joitain tapin otsikoita ymmärtääkseni eräänlaisen kilven, johon juotin vastukset ja ohjasin kaapelit. Tämän etuna on se, että voit ottaa Arduinosi esiin ja käyttää sitä muihin projekteihin (meillä kaikilla loppuu jossain vaiheessa Arduino -levyt!). Se ei ole pakollista joka tapauksessa, ja toinen hyvä lähestymistapa voisi olla juottaminen arduino MEGA -päät ja juotoskaapelit suoraan paikoilleen.

Käytin 200 ohmin vastuksia 220 ohmin vastuksen sijasta ja ne toimivat joka tapauksessa täydellisesti; Veikkaisin, että jopa 150 ohmin vastukset toimisivat loistavasti (sekä MIDI -viestinnässä että LED -valoissa).

Laatikon muotoilemiseksi levitin ensin laatikon pinnalle hieman liimapaperia, mitaten, mihin reikiin porata (minulla oli 3 cm reiästä reikään, jotta kaikki ruukut mahtuisivat), tein ohjainreiät ja suurennettiin sitten oikealle koko, jotta ruukut langat tai napit kiertyvät mini -poralla. Käytin enemmän tai vähemmän 2 tuntia laatikon viimeistelyyn. Tajusin myös pieniä reikiä ja liimasin LEDit paikalleen.

Porasin myös reiän MIDI OUT -liitäntään ja toisen arduino-virtaliittimeen (käytin suoraan sisäänrakennettua USB-virtaliitintä ja lukitsin arduino MEGA: n tiukasti paikalleen).

VAROITUS: Käytä aina AINA silmien ja käsien suojaimia porauksen aikana, mitä tahansa materiaalia käytät (muovia, puuta, metalleja, komposiitteja … sillä ei ole väliä: olet vaarassa sekä sähkötyökalujen että syöpyneen/poltetun materiaalin lastujen suhteen) liikkuvasta työkalusta).

Sitten laitoin kaikki kattilat ja napit ja juotin komponentit liitteenä olevan kuvan mukaisesti. Tehokas tapa vähentää lopullisen esineen painoa (ja kaapeleiden pituutta) on ketjuttaa kaikki ruukut sekä 5V -linjalla että GND -linjalla.

Ja ennen kuin kukaan kysyy: Tiedän, että käyttämäni laatikko on ruma! Mutta se oli ilmaista eikä mikään voittanut ilmaiseksi:)

Vaihe 4: Johdotus

Johdotus
Johdotus

Asioiden kytkeminen on helppoa, kun johdot potentiometrin (x16), painikkeen (x4) ja LEDin (x4) Arduino -mikrokorttiin. Kaikki Arduinon perusteet on käsitelty täällä:)

Liitäntä on johdotus. Huomaa, että:

- Käytetään kaikkia analogisia nastoja (A0 - A15), yksi kutakin potentiometriä kohti;

- 4 digitaalista nastaa (tuloa) käytetään (D51, D49, D47, D45), yksi kutakin painiketta varten;

- muita 4 digitaalista nastaa (ulostuloa) käytetään LEDeille (D43, D41, D39, D37);

- MIDI -lähtöliitäntä on erittäin yksinkertainen ja vaatii kaksi 220 ohmin vastusta (mutta 150 ohmiin asti toimii)

- Painikkeet eivät vaadi alasvetovastauksia, koska luonnos aktivoi sisäiset Arduinon vetovoimat.

- Jokainen LED pyytää kovettavaa rajoittavaa vastusta (200–220 ohmia ovat sopivia vihreille LEDeille).

Käytin luettelossa olevia digitaalisia nastoja raaka-aineena, mutta ne eivät ole "erityisiä" nastoja (emme käytä joidenkin nastojen pwm-ominaisuutta täällä tai jotain muuta nastakohtaista ominaisuutta): voit asettaa suosikkisi digitaaliset nastat, mutta muista muuttaa koodi vastaavasti tai painikkeet/LEDit eivät toimi!

Huomaa, että kuvassa oleva MIDI OUT -liitäntä on edestä (ei takaa).

Vaihe 5: Ohjelmisto - jotain linkkiä teoriaan

En aio selittää System Exclusive- tai Control Change -viestien koko teoriaa, koska siellä on paljon hyviä artikkeleita ja on typerää kirjoittaa uudelleen jo kirjoitettu.

Muutama pikalinkki Roland SysExin käyttöönottoa varten:

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

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

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

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

ja muutama linkki MIDI: hen yleensä:

-

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

Vaihe 6: Ohjelmisto - luonnos

Tässä liitteenä on luonnos, jonka sinun pitäisi ladata Arduino Mega -laitteeseesi.

Yritin pitää ohjelmoijan mahdollisimman "yleismaailmallisena", mikä tarkoittaa, että yritin vähentää syntetisaattorikohtaisia koodinpätkiä. Yritin pitää koodin mahdollisimman yksinkertaisena. Vaihejärjestyksen lisääminen teki asioista monimutkaisempia ja koodista sotkuisemman, joka tapauksessa se oli sen arvoista minulle. Koodin pitäminen "universaalina" on siksi säätimen asettelu niin "satunnainen": se noudattaa MIDI -toteutuksen parametrijärjestystä, jonka syntetisaattorin valmistaja on määritellyt käsikirjassa. Se saattaa olla aluksi hämmentävää, mutta siihen tottuu nopeasti.

Oletuskoodi/luonnos/laiteohjelmisto tukee "vain" 48 parametria (kolme sivua, joista jokaisessa on 16 nuppia), joten kaikkia syntetisaattorisi tukemia MIDI -viestejä ei voida hallita (ajattele esimerkiksi Access Virus tai Novation Supernova: ne hyväksyvät enemmän tai alle 110 MIDI -yhteensopivaa parametria). Voit helposti muuttaa luonnosta tukemaan lisää viestejä tarvittaessa.

Itse asiassa Roland Alpha-Juno, JX8P, Korg DW8000 ja Oberheim Matrix 6 -yhteensopivia SysEx-viestejä tuetaan. Jätin koodin Juno 106 -yhteensopiville viesteille, jos tarvitset sitä.

Matrix 6: lle minun oli valittava ohjattavat parametrit. Jätin pois kolmannen kirjekuoren, toisen rampin ja jotain muuta. Matriisia ei voi kuitenkaan ohjata MIDI: n kautta, joten sekin on poissa. Tarvitset päivitetyn laiteohjelmiston (versio 2.14 tai uudempi) ja asetat parametrin "Master -> Sysex Enable" arvoksi "3".

Kello on jotenkin buginen (kellon on oltava tiukka ja täydellinen toimimaan niin kuin pitäisi ja luultavasti kaksi omaksumaani lähestymistapaa, jos ne eivät ole tehokkaita). Oletuksena se on pois käytöstä.

Koodi sisältää kommentteja, joten ei tarvitse kommentoida täällä enempää.

Kuten aina: muista, etten ole tosielämän koodaaja ja varmasti on olemassa parempia tapoja koodata mitä tarvitsemme täällä. Jos olet koodaaja ja sinulla on ehdotuksia, olet tervetullut! Lähetä minulle kaikki muunnelmat, jotka voivat lisätä koodin tehokkuutta ja tehokkuutta, ja sisällytän sen pääluonnokseen (viitaten tietenkin avustajaan!).

Opin aina jotain uutta lukemalla hyvää kooderin koodia;)

Vaihe 7: Aiheeseen liittyvät projektit

Sikäli kuin tiedän, siellä ei ole MIDI -parametrin ohjainta ja sekvensseriä (ehkä vanha Behringer BCR2000, jossa on muutettu laiteohjelmisto?)

Joka tapauksessa, jos et ole altis toteuttamaan tällaista laatikkoa, mutta olet erittäin kiinnostunut halvoista ratkaisuista syntetiparametrien etähallintaan, harkitse näitä muita vaihtoehtoja:

- CTRL MIDI -editori: tämä on loistava, ilmainen avoimen lähdekoodin ohjelma, joka toimii Win/Linux/Mac -tietokoneella ja joka voi muuttaa tietokoneesi täydelliseksi SysEx -syntetisaattorin ohjaimeksi

- David Konsumerin "junosex" CC -muunnin: tämä projekti vaatii pientä laitteistotyötä puolestasi ja idea on loistava - arduino -pohjainen CC -SysEx -muunnin, jonka avulla voit käyttää tavallista ei -SysEx -MIDI -ohjainta (eli AKAI MPK -näppäimistöä)) puhuaksesi SysEx-valmis syntetisaattorisi kanssa

Suositeltava: