Innholdsfortegnelse:
- Trinn 1: Hva er akkurat dette (og hva er ikke …)
- Trinn 2: Den "skjulte" sekvensen med 16 trinn
- Trinn 3: Nødvendig maskinvare og bygging
- Trinn 4: Kabling
- Trinn 5: Programvare - noen lenker til teori
- Trinn 6: Programvare - skissen
- Trinn 7: Relaterte prosjekter
Video: (nesten) Universal MIDI SysEx CC Programmer (og Sequencer ): 7 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
På midten av åttitallet startet synth -produsenter en "less is better" -prosess som førte til barebonesyntes. Dette tillot reduksjon av kostnadene på produsentens side, men gjorde oppdateringsprosessen tediuos om ikke umulig for den endelige brukeren.
Produsenter selv og tredjepartsbedrifter innså valgfrie bokser fulle av knotter og/eller glidebrytere for å la deg faktisk "leke" med dine synths toner, men disse er dumt overpris i dag, og som alltid er vi tvunget til å finne billige løsninger selv;)
Dette prosjektet kom fra mitt behov for å enkelt programmere oppdateringer på noen av mine siste synthkjøp: en Roland Alpha Juno 2 og JX8P. Det begynte som en enkel SysEx-kontroller, deretter vokste det opp på meg og ble noe mer komplekst, med andre synths som støttes på veien (Korg DW8000, Oberheim Matrix 6/6R, SCI MAX) og en innebygd sequencer.
I denne instruksen vil jeg vise deg hvordan du kan realisere din egen kontroller: et billig verktøy som emulerer de høyt prisede parameterkontrollboksene … og mer (les videre for detaljer …).
Trinn 1: Hva er akkurat dette (og hva er ikke …)
MIDI SysEx og Control Change -kontrolleren her er i hovedsak en 16 knotter (potensiometre) og 4 knapper MIDI -kontroller. Standardskissen håndterer tre "sider", for totalt 48 synthtoneparametere.
Jeg gjorde kontrolleren kompatibel med kontrollendrings-MIDI-meldinger (en enkel og "global" type MIDI-melding som ble mye brukt av synthprodusenter spesielt fra 90-tallet) og SysEx-meldinger (en annen type MIDI-melding, langt mindre generell og sterkt syntespesifikk tungt brukt på 80 -tallet).
Spesielt er kontrolleren som standard kompatibel med:
- Roland Alpha Juno (1/2)
- Roland JX8P
- Korg DW8000
- Oberheim Matrix 6/6R (> 2.14 fastvare)
- Sekvensielle kretser MAX/SixTrak.
Du kan til slutt aktivere kontrolleren til å handle på hvilken som helst synth som kan motta MIDI -kontrollendringsmeldinger (CC), men den er deaktivert som standard.
Siden prosjektet er åpen kildekode, er det veldig enkelt å støtte en hvilken som helst annen synth etter eget valg (se kodetrinnet for detaljer).
Toneparameteroppsettet med alle disse tallene kan være forvirrende i begynnelsen, men det er ikke "tilfeldig" slik det kan se ut: det følger rekkefølgen til produsentens MIDI -implementeringskart. Dette var et designvalg for å holde koden enkel og "universell".
Du kan laste ned bildeark med 4x4 "layout" jeg innså for Alpha-Junos, JX8P, DW8000, Matrix 6 og MAX/SixTrak på denne siden: blå parametere er de du kan justere mens du er på side 1, svart dem på side 2 og oransje de på side 3.
Selv om kontrolleren ikke har noen skjerm, er det en glede å leke med synths som viser deg hvilken parameter som blir innstilt i sanntid. JX8P og Matrix 6, for eksempel, er i stand til dette; Alpha Juno, i stedet, viser deg ikke parameteren som blir endret og gjør ting litt vanskeligere (men å lage fantastiske patcher er definitivt gjennomførbart og enklere enn ved å bruke det innebygde knobløse grensesnittet); DW8000 har bare numeriske skjermer, men du kan se tweakins i sanntid, slik at den plasserer seg i mellom på dette.
Hva med knappene der?
Vel, den første (øverst til venstre i oppsettet mitt) er for sidesurfing: hopp til neste parameter side ved hvert trykk på knappen. Lysdioder indikerer hvilken side du er på.
Den andre når du trykker på den, send lappen du jobbet med tilbake til synthen (finn ut: du lagde oppdateringen i livet ditt, berørte deretter en programknapp på synthflaten og den knappespesifikke oppdateringen ble lastet inn … alt arbeidet ditt har gått !). Med denne knappen kan du sende alle verdiene programmereren hadde husket under den siste oppdateringsprosessen. Denne tilbakekallingsprosessen fungerer ikke hvis du trykker på randomizer igjen (randomiseringsprosessen overskriver alle parametrene i minnet) og den er bare effektiv på parametere du redigerte minst én gang. Den siste oppdateringen lagres ikke i minnet etter nedleggelse.
Den tredje er for en sekundær funksjon: randomisereren/lapperen! Vri knottene du vil at parameteren de skal handle på, låst til minimumsverdien (dvs. oscillator LFO, oscillator -konvolutt osv.) Eller vri helt med klokken for å maksimere verdien (dvs. oscillator -blandingsvolum, VCA -volum, etc.) og trykk knappen for å starte randomiseringsprosessen for alle andre parametere.
Den fjerde knappen er der for å aktivere et påskeegg (slags …) jeg plasserte i koden etter å ha lagt merke til at oppsettet var perfekt for … en 16 trinns MIDI -sekvensor! Akkurat: Trykk på den fjerde knappen (MODE -knappen), kontrolleren går inn i "sequencer -modus", og du får lov til å utløse notater på samme måte som den gamle analoge sequencer gjorde. Fint øh!
Trykk på MODE -knappen igjen for å gå tilbake til kontroller/patcher -modus.
Hva med disse lysdiodene?
Det er 4 lysdioder i samsvar med hver knapp (til høyre for hver knapp i oppsettet mitt); disse lysdiodene har flere pourpouses:
1) de forteller deg hvilken parameter side du er i (øvre LED lyser når du er på side 1, LED under lyser når side 2 er aktiv, LED 3 lyser … du skjønte det selv). Vi er begrenset til 3 sider minibank, men koden kan enkelt stilles inn for å håndtere flere sider;
2) den andre lysdioden indikerer parametere side 2 OG lyser når mikrokontrolleren sender den forrige oppdateringen (patch -tilbakekalling);
3) den tredje lysdioden indikerer parametere side 3 OG lyser under randomiseringsprosessen.
Den fjerde lysdioden gjør ingenting i MIDI -kontrollermodus og brukes til global MODE -endring.
Alle disse funksjonene overføres som MIDI -meldinger, så for å være effektiv må synthen din kunne/motta og tolke denne typen meldinger
Trinn 2: Den "skjulte" sekvensen med 16 trinn
Som sagt, mens jeg testet kontrolleren innså jeg at det ville være flott å la en sekvens av notater kjøre slik at jeg kunne justere synthparametere og få en bedre ide om den endelige effekten på tonen. Jeg har en software sequencer (jeg liker seq24 så godt!), Men denne maskinvaren er en nesten PERFEKT 16-trinns sequencer! Da var det bare et spørsmål om kode for å implementere den.
Du kan veksle mellom kontrollermodus og sekvensemodus ved å trykke på knapp #4 (MODE -knapp).
Mens i sequencer -modus fungerer knappene annerledes og lysdioder gir deg ny informasjon:
- den første knappen (SHIFT -knappen) når du trykker på, tillater tempo, notelengde, kanaler og oktavmodifikasjon; tempoverdien er gitt av posisjonen til det første potensiometeret, notatlengden beregnes fra den andre potensiometerposisjonen, MIDI-kanaler fra den tredje og fjerde potensiometerposisjonen og oktav (-1 o opp til +2) fra den femte potten. Du kan kontrollere tempoet fra 40 BPM (vri potensiometeret #1 fullt mot klokken mens du holder knappen #1 inne) til nesten 240 BPM (vri potensiometeret #1 fullt med klokken mens du holder knappen #1 inne). Du kan sette notatlengde til halvdel, kvartnote, åttenote, sekstendedel, ved å dreie potten #2 mens du holder SHIFT -knappen inne. Du kan stille MIDI -kanaler (primær kanal og sekundær kanal) fra 1 til 16. Grunnnotene (fra C2 til F#4) kan senkes med en oktav eller økes med en eller to oktaver.
Som standard er tempoet satt til 120 BPM og notatlengde til kvartnoter.
- den andre knappen starter og stopper notatrekkefølgen. Som sagt, hvis du endrer modus ved å trykke på knappen #4 (MODE) mens du kjører sekvensen, går du inn i kontrollermodus, men sekvensen fortsetter å kjøre.
- den tredje knappen er en PANIKK! Ved å trykke den ned, blir alle notater slått av.
- den fjerde brukes til å veksle mellom globale moduser (pather eller sequencer) når knapp #1 ikke trykkes, eller mellom sekvensmoduser (se følgende) når #1 er trykket ned.
I sequencer -modus kan du veksle mellom tre forskjellige sekvensmodi:
1 - 16 trinn monosekvens
2 - 16 trinn polysekvens: notater en oktav lavere enn de som er definert av potter utløses også (dette tapper 2 stemmer per slag)
3 - 8 trinns polysekvens, dobbeltkanal: to parallelle 8 -trinnssekvenser sendes til to forskjellige kanaler (CH1 og CH2 som standard); ved å sette den samme kanalverdien både på primær- og sekundærkanalen kan du få to parallelle 8-trinnssekvenser spilt av den samme (polyfoniske) synthesizeren.
Om LED: så snart du går inn i sequencer -modus, lyser alle fire lysene. Når du starter sekvensen, vil lysdioder følge sekvensen (eller sekvensene). Jeg plasserte en LED hver fjerde potensiometer og er godt nok for meg. Det ville være enkelt å endre skissen for å håndtere 16 lysdioder, en for hvert trinn du.
Step sequencer miss -funksjonene noen kan finne nødvendige: MIDI -synkronisering IN, trinn hold (du kan bare stenge et trinn av), CV ut.
Jeg har implementert klokke OUT, men er på en måte buggy. Jeg prøvde to tilnærminger for dette (en med og en uten tidsavbrudd), men de var begge ufullkomne (eller totalt mislykkede). MIDI-klokken må være strengt perfekt for å fungere på lang sikt. Et klokkesignal sendes uansett, og du kan deaktivere det direkte på skissen (se senere for detaljer).
Legg merke til at denne trinnsekvenseren er MIDI, eller digital hvis du foretrekker det, så for å fungere må du være koblet til en synth som er aktivert for å motta og tolke denne typen meldinger
Trinn 3: Nødvendig maskinvare og bygging
Etter alle disse ordene, la oss ha det gøy!
Vi går den vanlige Arduino -veien. Jeg brukte en Arduino MEGA på grunn av den høye mengden analoge innganger (vi vil ha en eske full av knotteknapper, ikke sant?!)).
Spesielt kan Arduino MEGA håndtere 16 analoge innganger (med litt maskinvaretilpasning, dvs. ved å mikse, kan du øke dette, men vi går ikke denne ruten her), så vi skal sende de 48 MIDI -meldingene via 16 potensiometre. Hvert potensiometer vil deretter kontrollere tre parametere, en for hver "side"; sider velges med en bryterknapp.
Maskinvare liste:
- 1x Arduino MEGA
- 16x lineære, enkelt sving 10 K ohm potensiometre
- 16x gryteknotter
- 4x øyeblikkelige trykknapper
- 4x LED
- 6x 220 ohm motstand
- 1x MIDI -kontakt
- 1x ABS -prosjektboks
Litt kabel, loddetråd og seks - åtte timers fritid.
Jeg brukte et perfboard og noen pinneoverskrifter for å innse et slags skjold jeg loddet motstandene på og ledet kablene. Dette har fordelen av å la deg ta ut din Arduino og bruke den til andre prosjekter (vi har alle lite på Arduino -brett på et tidspunkt!). Det er uansett ikke obligatorisk, og en annen god tilnærming kan være å avlodde arduino MEGA -pinnehodene og loddekablene direkte på plass.
Jeg brukte 200 ohm motstander i stedet for 220 ohm motstander, og de fungerer perfekt uansett; Jeg vil vedde på at selv 150 ohm motstander ville fungere bra (for både MIDI -kommunikasjon og lysdioder).
For å forme esken, la jeg først litt klebepapir på boksens overflate, målt hvor hullene skulle bores (jeg hadde 3 cm fra hull til hull for å la alle grytene passe) lagde styrehullene og forstørret deretter til høyre størrelse for å la gryter tråden eller knapper tråden passere med en mini drill. Jeg brukte mer eller mindre 2 timer på å gjøre boksen ferdig. Jeg skjønte også små hull, og limte lysdioder på plass.
Jeg boret også et hull for MIDI OUT-kontakten og et annet for arduino-strømkontakten (jeg brukte direkte den innebygde USB-strømkontakten og låste arduino MEGA godt på plass).
ADVARSEL: Bruk ALLTID beskyttelsesbriller for øyne og hender mens du borer, uansett materiale du jobber med (plast, tre, metaller, kompositter … det spiller ingen rolle: du er i fare både når det gjelder elektroverktøy og flis av materiale som erodert/avfyrt fra det bevegelige verktøyet).
Deretter plasserte jeg alle gryter og knapper og loddet komponentene i henhold til vedlagt bilde. En effektiv måte å redusere vekten på det endelige objektet (og lengden på kabler) er å kjede alle potter både på 5V -linjen og GND -linjen.
Og før noen spør: Jeg vet, den boksen jeg brukte er stygg! Men det var gratis og ingenting slår gratis:)
Trinn 4: Kabling
Det er enkelt å koble til ting som å koble til et potensiometer (x16), en trykknapp (x4) og LED (x4) til et Arduino mikrokontrollerbord. Alt det grunnleggende om Arduino er dekket her:)
Vedlagt er ledningen. Legg merke til det:
- Alle analoge pinner brukes (fra A0 til A15), en for hvert potensiometer;
- 4 digitale pinner (innganger) brukes (fra D51, D49, D47, D45), en for hver knapp;
- andre 4 digitale pinner (utganger) brukes til lysdioder (D43, D41, D39, D37);
- MIDI ut -tilkobling er veldig enkel og ber om to 220 ohm motstander (men ned til 150 ohm vil fungere)
- Knappene ber ikke om nedtrekksmotstandene fordi skissen aktiverer de interne Arduinos pullup -motstander.
- Hver LED ber om en strømbegrensende motstand (200-220 ohm er ok for grønne lysdioder).
Jeg brukte de oppførte digitale pinnene for varer, men de er ikke "spesielle" pinner (vi bruker ikke pwm-funksjonen til noen pinner her eller en annen pinnespesifikk funksjon): du kan angi dine digitale favorittpinner, men husk å endre koden tilsvarende eller knappene/lysdiodene dine vil ikke fungere!
Vær oppmerksom på at MIDI OUT -tilkoblingen på bildet er FRONT (ikke bakfra).
Trinn 5: Programvare - noen lenker til teori
Jeg kommer ikke til å forklare hele teorien bak System Exclusive eller Control Change -meldinger fordi det er mange gode artikler der ute, og det er dumt å skrive om det som allerede er skrevet.
Bare en rask lenke for implementering av 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 noen lenker for MIDI generelt:
-
-https://www.music-software-development.com/midi-tut…
Trinn 6: Programvare - skissen
Her er vedlagt skissen du bør laste opp til din Arduino Mega.
Jeg prøvde å holde programmereren så "universell" som mulig, noe som betyr at jeg prøvde å redusere syntespesifikke kodebiter. Jeg prøvde å holde koden så enkel som mulig. Å legge til trinnsekvenseren gjorde ting mer komplekse og koden mer rotete, uansett var det verdt det for meg. Å beholde koden "universell" er derfor kontrolleroppsettet er så "tilfeldig": det følger parameterrekkefølgen for MIDI -implementeringen som synth -produsenten definerte i håndboken. Det kan være forvirrende i begynnelsen, men du vil bli vant til det veldig fort.
Standardkoden/skissen/fastvaren støtter "bare" 48 parametere (tre sider med 16 knapper hver), så det kan ikke være mulig å kontrollere alle MIDI -meldingene som støttes av synthen din (tenk på et Access Virus eller Novation Supernova: de godtar mer eller mindre 110 MIDI -kompatible parametere). Du kan enkelt endre skissen for å støtte flere meldinger, om nødvendig.
Egentlig støttes SysEx-meldinger som er kompatible med Roland Alpha-Juno, JX8P, Korg DW8000 og Oberheim Matrix 6. Jeg forlot koden for Juno 106 -kompatible meldinger i tilfelle du trenger det.
For Matrix 6 måtte jeg velge parametrene som skulle kontrolleres. Jeg utelot den tredje konvolutten, den andre rampen og noe annet. Matrisen kan ikke styres via MIDI uansett, så den er ute også. Du trenger den oppdaterte fastvaren (ver. 2.14 eller nyere), og du bør sette parameteren "Master -> Sysex Enable" til "3".
Klokke ut er en eller annen måte buggy (klokken må være strengt perfekt for å fungere som den skal, og sannsynligvis de to tilnærmingene jeg valgte var ikke effektive). Som standard er den deaktivert.
Koden inneholder kommentarer, så det er ikke nødvendig å kommentere mer her.
Som alltid: husk at jeg ikke er en koder i det virkelige liv, og det er sikkert bedre måter å kode det vi trenger her. Hvis du er en koder og har forslag, er du velkommen! Send meg en variant som kan øke kodens effektivitet/effektivitet, og jeg vil inkludere den i hovedskissen (siterer selvfølgelig bidragsyteren!).
Jeg lærer alltid noe nytt ved å lese en god koderkode;)
Trinn 7: Relaterte prosjekter
Så vidt jeg vet, er det ikke en MIDI -parameterkontroller og sequencer der ute (kanskje den gamle Behringer BCR2000 med en modifisert fastvare?)
Uansett, hvis du ikke er tilbøyelig til å realisere en boks som denne, men veldig interessert i billige løsninger for å kontrollere synthparameterne eksternt, bør du vurdere disse andre alternativene:
- CTRL MIDI -editor: dette er et strålende, gratis open source -program som kjører på win/Linux/mac som kan gjøre PC -en til en full kontroller for SysEx -synths
- David Konsumer "junosex" CC -omformer: dette prosjektet ber om mindre maskinvarearbeid på din side, og ideen er flott - en arduino -basert CC til SysEx -omformer som lar deg bruke en vanlig ikke -SysEx MIDI -kontroller (dvs. et AKAI MPK -hovedtastatur) for å snakke med din SysEx-klare synth
Anbefalt:
Slik rengjør du nesten hvilken som helst spillkontroller: 5 trinn
Hvordan rengjøre nesten hvilken som helst spillkontroller: Jeg har en håndfull av disse Logitech Dual Action -kontrollerne som jeg bruker til en Raspberry Pi -emulator, som jeg skal laste opp en instruksjonsfil for snart. Da jeg prøvde å bruke denne kontrolleren (den hadde vært lagret for over et år), de fleste knappene på
Arduino MIDI Rhythm Section Sequencer: 8 trinn (med bilder)
Arduino MIDI Rhythm Section Sequencer: Å ha en god programvaretrommemaskin er enkelt og billig i dag, men å bruke mus dreper moroa for meg. Dette er grunnen til at jeg innså hva som opprinnelig var ment som en ren 64 -trinns maskinvare MIDI trommesekvenser som var i stand til å utløse opptil 12 forskjellige trommelem
Gjør nesten alt til en høyttaler: 13 trinn (med bilder)
Gjør nesten alt til en høyttaler: Du kan gjøre nesten alle gjenstander til en høyttaler ved hjelp av en piezo -plate og en håndfull ekstra komponenter. Selv om dette kan virke som magi, er det faktisk en ganske enkel teknisk forklaring. Ved å kjøre en piezo -plate ved hjelp av en forsterker, kan platen
Spin Coater V1 (nesten analog): 9 trinn (med bilder)
Spin Coater V1 (nesten analog): Ikke alt utstyr er laget for å vare, jeg er en student/forsker som studerer tynne filmmaterialer for solteknologi. En gang av utstyrene jeg er avhengig av kalles en spinnbelegg. Dette er et verktøy som brukes til å lage tynne filmer av et materiale fra en flytende oppløsning
Hvordan bytte ut et grafikkort på nesten hvilken som helst datamaskin: 8 trinn
Hvordan bytte ut et grafikkort på nesten hvilken som helst datamaskin: Hei, jeg heter Joseph. Jeg er en datamaskinentusiast som liker å lære folk om datamaskiner. Jeg skal vise deg hvordan du bytter ut et grafikkort i en datamaskin, slik at du kan oppgradere din egen datamaskin når du har lyst. Erstatter en grafikk