Sisällysluettelo:

Arduino MIDI Rhythm Section Sequencer: 8 vaihetta (kuvilla)
Arduino MIDI Rhythm Section Sequencer: 8 vaihetta (kuvilla)

Video: Arduino MIDI Rhythm Section Sequencer: 8 vaihetta (kuvilla)

Video: Arduino MIDI Rhythm Section Sequencer: 8 vaihetta (kuvilla)
Video: A DIY Arduino Sequencer Walk Through 2024, Heinäkuu
Anonim
Arduino MIDI -rytmiosaston sekvensseri
Arduino MIDI -rytmiosaston sekvensseri
Arduino MIDI -rytmiosaston sekvensseri
Arduino MIDI -rytmiosaston sekvensseri
Arduino MIDI -rytmiosaston sekvensseri
Arduino MIDI -rytmiosaston sekvensseri

Hyvä ohjelmistorumpukone on nykyään helppoa ja halpaa, mutta hiiren käyttö tappaa minut. Siksi ymmärsin, mitä alun perin oli tarkoitettu puhtaana 64 askeleen laitteisto -MIDI -rumpusekvensserinä, joka kykenee laukaisemaan jopa 12 erilaista rumpuelementtiä (osaa), mutta kehittyi sitten rytmiosan sekvensseriksi …

… Näillä mennään!

Vaihe 1: Näin se toimii

Tämä laitteisto ei voi tuottaa ääniä yksinään, vaan vain järjestää ulkoisen laitteiston MIDI: n kautta. Tämä tarkoittaa sitä, että tarvitset rumpuääniesi äänigeneraattorin (näytteenottimen tai rummun syntetisaattorin tai PC: n, jossa on suosikki rumpiohjelmistosi tai mitä haluat), jotka voidaan laukaista MIDI-muistutusviesteillä.

Se koostuu pääasiassa 4 x 4 painikkeen matriisista (LED -valoilla), yksi jokaista palkin askelta varten. Koko 64 askeleen jakso koostuu 16 askeleesta kerrottuna 4 baarilla. Jokainen vaihe on 1/16 nuotista.

Toimintatiloja on kaksi: live -tila ja muokkaustila.

Muokkaustilassa voit itse muokata sekvenssiäsi vaihe vaiheelta määrittämällä, mikä rumpu soittaa jokaisessa vaiheessa.

Ulkoinen laitteisto ("rumpu") laukaistaan lähettämällä MIDI -huomautus "-viesti eri" MIDI -muistiinpanonumeroille "kanavalla" 10 ". Oletusarvoisesti nämä muistiinpanonumerot ovat

rumpu #1 (eli potku) -> MIDI -muistiinpanon numero "60"

rumpu #2 (eli virveli) -> MIDI -muistiinpanon numero "62"

rumpu #3 (eli taputus) -> MIDI -muistiinpanon numero "64"

rumpu #4 (eli Hihat) -> MIDI -muistiinpanon numero "65"

rumpu #5 -> MIDI -muistiinpanon numero "67"

rumpu #6 -> MIDI -muistiinpanon numero "69"

rumpu #7 -> MIDI -muistiinpanon numero "71"

rumpu #8 -> MIDI -muistiinpanon numero "72"

rumpu #9 -> MIDI -muistiinpanon numero "74"

rumpu #10 -> MIDI -muistiinpanon numero "76"

rumpu #11 -> MIDI -muistiinpanon numero "77"

rumpu #12 -> MIDI -muistiinpanon numero "79"

Voit halutessasi muuttaa näitä arvoja (ja MIDI -kanavaa) luonnoksessa.

Live -tilassa painamalla askelpainikkeita voit toistaa kuhunkin vaiheeseen liittyviä rumpuja lähettämällä MIDI -viestejä sarjaportin kautta. Voit tallentaa napautuksesi ja/tai saapuvat MIDI -viestit reaaliaikaisesti.

Sekä live -tilassa että muokkaustilassa voit mykistää (tai poistaa mykistyksen) rummun, "toistaa" parhaillaan aktiivista rumpua ja "heiluttaa" sarjasi.

Rytmiosasto?

Useimmat rumpusekvenssit ovat puhtaasti MIDI -rummun osien laukaisijoita, ja niissä on kiinteä MIDI -nuottinumero jokaiselle rumpuäänelle. Tässä tapauksessa meillä on "rytmiosa sekvensseri" enemmän kuin puhdas "rumpusekvensseri", koska voit jopa sekvensoida syntetisaattoreita.

Lue PIKA -ALOITUSOPAS saadaksesi lisätietoja ja täydellisen luettelon ominaisuuksista.

Vaihe 2: Laitteisto

Laitteisto
Laitteisto
Laitteisto
Laitteisto
Laitteisto
Laitteisto

Tämä projekti toteutetaan Arduino DUE -levyn ympärillä. Yritin pitää laitteiston mahdollisimman yksinkertaisena, eli välttämällä LED -ohjainten käyttöä. Arduino DUE ei todennäköisesti ole sopivin levy käsittelemään joukko LED -valoja ilman LED -ohjainta, koska sen lähtövirtarajat (5 mA - 15 mA, nastasta riippuen), mutta se on nopein Arduino ja ajoitus on kaikki asioiden käsittelyssä sekvensoijien kanssa. Muista siis, että TÄMÄ laitteistokokoonpano todennäköisesti työntää Arduino DUE: n rajansa ja voi vahingoittaa sitä pitkällä aikavälillä.

Laitteisto on kuitenkin pääasiassa 16 painiketta, 16 LEDiä (yksi jokaiselle vaiheelle) sekvensseri, jossa on 5 lisäpainiketta toiminnoille ja 3 potentiometriä. Lisäsin myös punaisen LED -valon live -tallennustoiminnon lisäämisen jälkeen.

Tässä materiaaliluettelo:

- 1x Arduino DUE

- 16x hetkelliset, lukitsemattomat painikkeet, joissa on integroidut LEDit (voit käyttää ulkoisia LED -valoja, jos haluat, mutta muista käyttää pienitehoisia LED -valoja !!)

- 1x punainen LED (vähän virtaa!)

- 5x hetkelliset, lukitsemattomat painikkeet

- 3x 10K yhden kierroksen lineaariset potentiometrit

- 3x 6,5 mm paneeliasennettava mono -naarasliitin

- 1x muovikotelo (käytin 190x140x70 mm koteloa)

- 2x 5-nastainen DIN-naaraspaneelin kiinnityspistoke (MIDI)

- 1x kaksipuolinen 70x90 mm -levy

- 2x 40 -nastainen urospuolinen yksirivinen nastatulppa (2,54 mm), parempi jos kullattu

- 1x H11L1 -optoeritin

- 1x 1N4148 diodi

- 23x 1000 ohmin vastukset

- 3x 220 ohmin vastukset

- 2x BC547 pnp -transistorit

… Juotoslanka, jotkut kaapelit, juotosasema, poratyökalu… ja vapaa -aikaa:)

Huomaa, että kuvien painikkeet on korvattu toisen tyyppisillä (jopa halvemmilla …) painikkeilla törkeän pomppimisen vuoksi…

Projektin suorittamiseen tarvittava aika: 8-10 tuntia

VAROITUS: Käytä AINA suojalaseja ja käsineitä porauksen aikana! Kuumat materiaalihiutaleet voivat heijastua silmiin tai joutua kosketuksiin ihon kanssa ja aiheuttaa palovammoja tai jopa vakavampia vahinkoja sinulle tai ympärilläsi oleville ihmisille

Vaihe 3: Johdot

Johdot
Johdot
Johdot
Johdot
Johdot
Johdot

Askelpainikkeet on kytketty suoraan Arduino -nastoihin 22 (vaihe 1) - 37 (vaihe 16). Painikkeiden maa on ketjutettu ja yhdistetty Arduino DUE -maahan. Pullup- tai pull -down -vastuksia ei tarvita, koska Arduinon integroidut pullup -vastukset ovat ohjelmistokäyttöisiä (katso luonnos).

Sama koskee 5 muuta painiketta (Arduino -nastat 2, 3, 4, 5 ja 6), joita käytetään muihin toimintoihin kuin vaiheisiin. Laitoin myös 6,5 mm: n naarasliittimen rinnakkain "Käynnistä" -painikkeen kanssa, jotta voin toistaa ja pysäyttää sekvenssini etänä.

LEDit on kytketty maadoitukseen (ketjutusketju) ja Arduino DUE -nastoihin 38 (vaihe #1) - 53 (vaihe #16) sarjassa 1 K ohmin vastuksella, joka rajoittaa virrankulutusta ja säilyttää mikro -ohjaimen.

Potentiometrit on kytketty oheisen kuvan mukaisesti. Huomaa, että vertailujännite on 3.3V, ei 5V. Käytetyt tulot ovat A0, A1 ja A2.

Toteutin myös kaksi liipaisulähtöä arpeggio -signaaleille, kuten vanhan 80 -luvun syntetisaattorin, kuten Korg Polysixin ja Roland Juno 6/60: n. Ne on liitetty nastoihin A3 ja A4, mutta voit käyttää digitaalisia nastoja, jos haluat olla digitaalisia signaaleja. Jos aiot sekvensoida V-Trig-signaalien (jännitelaukaisimien) kanssa yhteensopivan syntetisaattorin, riittää 1 k ohmin sarjan vastus virrankulutuksen vähentämiseksi; jos kyseessä on S-Trig (kytkinliipaisin) syntetisaattori, tarvitset yksinkertaisen pnp-kytkinpiirin (katso oheinen kaavio).

MIDI IN- ja OUT -piirit on esitetty kaavioina liitteenä olevissa kuvissa. Huomaa, että toisin kuin useimmat arduinot, Rx1 ja Tx1 käytetään oletuksena DUE -levyillä Rx0: n ja Tx0: n sijasta. Tämä on hienoa, koska voit ladata luonnoksen ilman, että sinun on katkaistava Rx -yhteys joka kerta. Huomaa myös, että olen käyttänyt H11L1 -optoerotinta, koska en pystynyt ajamaan niin kuin pitäisi, kuten tavallisen 6N138: n pitäisi Arduino DUE 3.3V -rajan sisällä.

Vaihe 4: Ohjelmisto

Luonnos on kirjoitettu Arduino IDE: hen ja se on ladattava Arduino DUE -kortillesi. En mene yksityiskohtiin siitä, miten luonnos ladataan arduino DUE -laitteeseesi. Jos tämä on ensimmäinen kokemuksesi Arduino DUE: sta, lue tämä. Jos tämä on ensimmäinen kokemuksesi arduino IDE: stä, lue myös tämä.

Voit ladata päivitetyn laiteohjelmiston TÄSTÄ (github -linkki).

Luonnos perustuu erinomaiseen FortySevenEffects MIDI -kirjastoon. Sinun on asennettava kirjasto arduino IDE: hen.

Kullekin rummulle määritetyt MIDI -out -muistiinpanot määritellään luonnoksen drumNote [STEPS_NUM] -muuttujalla. Voit muuttaa niitä haluamallasi tavalla.

Rummujen MIDI -lähtökanavan numero on oletuksena "10".

En ole koodaaja tosielämässä ja varmasti on parempia tapoja koodata mitä tarvitsemme täällä. Jos olet kooderi, jolla 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!).

Vaihe 5: Pikaopas

RUMMUT: VAIHE-VAIHE JÄRJESTYS

Heti kun käynnistät sekvensserin (tai nollaat sen), tyhjä sarja ladataan. Sekvensseri käynnistyy muokkaustilassa, kun ensimmäinen palkki on pidetty/lukittu ja ensimmäinen rumpu (eli potku) on valittu. Tämä tarkoittaa, että painamalla mitä tahansa askelpainiketta, annat välittömästi "potkun" näille vaiheille. Rummun käynnistyvä äänenvoimakkuus määräytyy "äänenvoimakkuuden" potentiometrin asennon avulla, kun rumpu määritetään vaiheeseen. Painamalla uudelleen aiemmin määritettyä askelpainiketta voit poistaa nykyisen rummun määrityksen kyseisessä vaiheessa.

Jos painat "Käynnistä" -painiketta, LED -valot kulkevat vasemmalta oikealle, ylhäältä alas ja toistavat "potkua" aina, kun potkuaskel ylitetään.

Kun pidät "shift" -painiketta painettuna, näet ensimmäisen rivin ensimmäisen vaiheen LED -valon (eli ensimmäinen rumpu on valittu) ja neljännen rivin ensimmäisen vaiheen LED -valon (eli olet lukittu ensimmäiseen palkkiin). Voit nyt vaihtaa rumpua, jonka haluat järjestää painamalla toista askelpainiketta ja pitämällä samalla "shift" painettuna. Kun olet valinnut uuden rummun, vapauta "shift". Kaikki LEDit sammuvat (koska et ole määrittänyt uutta rumpua mihinkään vaiheeseen) ja voit aloittaa uuden rummun määrittämisen vaiheisiin. Toista kaikki tarvittavat rummut (enintään 12).

Nyt kun olet luonut mukavan kuvion, pidä "shift" -painiketta painettuna ja sammuta alirivin korkean tason vaihe (sen pitäisi olla 4. rivin 1. vaihe, jos olet käyttänyt samaa asettelua, jota käytin): olet juuri " avaa "sekvenssin, joka kulkee nyt kaikkien 4 palkin yli. Alemmat raaka -LEDit alkavat "liikkua", mikä osoittaa, mikä palkki soitetaan parhaillaan (palkin eteneminen). Huomaat, että vasta kun ensimmäinen palkki soittaa sekvenssin, ja kaikki muut 3 palkkia eivät tuota ääniä. Tämä johtuu siitä, että olet määrittänyt rummut vain ensimmäiselle tangolle, muut jätetään tyhjäksi. Voit täyttää ne käsin (valitse uusi palkki painamalla yhtä neljästä viimeisestä askelpainikkeesta pitäen samalla painettuna "shift", valitse yksi rumpuista, täytä vaiheet jne. Jne.) Tai kopioi ja liitä luomasi palkkisarja kaikille palkeille siirtymällä muokkaustilaan (lukitse uudelleen ensimmäiseen palkkiin) ja painamalla "record" (joka nyt ottaa käyttöön "liitä" -toiminnon) pitäen samalla painettuna "shift". Helpommin tehty kuin sanottu.

RUMMUT: LIVE PLAY MODE

Käynnistyksen yhteydessä sekvensseri on muokkaustilassa. Voit poistua muokkaustilasta pitämällä "shift" -painiketta painettuna ja painamalla tällä hetkellä pidettyä/lukittua palkkipainiketta (4. rivin askelpainike päällä). Tämä sammuttaa aiemmin lukitun palkin LED -valon ja avaa sarjan lukituksen. Olet nyt live -toistotilassa.

Live -toistotilassa painikkeeseen liittyvä rumpu käynnistyy painamalla mitä tahansa askelpainiketta.

Jos haluat tallentaa sarjasi live -nauhoituksella, aloita sarja painamalla "play" ja paina sitten "record" -painiketta (vain live -toistotilassa). Punainen LED syttyy. Toistosi rumpusekvenssin ohjauspaneelin matriisilla tai saapuva MIDI-muistutusviesti (eli ulkoiselta MIDI-näppäimistöltä) tallennetaan.

Muut toiminnot

Painamalla "roll" -painiketta nykyinen aktiivinen rumpu soitetaan jokaisessa vaiheessa (rullassa). Tämä toimii sekä "askel askeleelta" että "live-play" -tiloissa.

Kun painat mitä tahansa askelpainiketta ja pidät samalla painettuna "mykistys" -painiketta, tähän vaiheeseen liittyvä rumpu mykistetään (tai mykistys poistetaan). Tämä toimii sekä "askel askeleelta" että "live-play" -tiloissa.

Voit tyhjentää tietyn rumpusekvenssin painamalla vastaavaa askelpainiketta ja pitämällä "REC" -painiketta painettuna.

Voit tyhjentää koko sekvenssin (pehmeä nollaus) pitämällä käynnistyspainiketta painettuna yli 3 sekuntia.

Voit "heiluttaa" sarjaa kääntämällä "swing" -potentiometriä.

Voit poistaa MIDI -kaiun käytöstä/ottaa sen käyttöön painamalla "mykistys" -painiketta ja pitämällä samalla "vaihto" -painiketta painettuna. Kun MIDI -kaiku on käytössä (oletus), kaikki MIDI INPUT -liitännässä olevat tiedot lähetetään MIDI OUTPUT -liitäntään (vain MIDI -huomautus päälle, huomautus pois, nousu, jälkikosketus ja säätimen muutos toistetaan).

Sekä MIDI -kellotulo että -lähtö toteutetaan ja otetaan käyttöön oletusarvoisesti. Jos kellotuloa ei vastaanoteta, tempo asetetaan omalla potentiometrillä. Jos vastaanotetaan MIDI -kellotulo, tempo lasketaan siitä ja tempo -potentiometri ei vastaa. MIDI -kello lähetetään aina MIDI -lähtöön.

Vaihe 6: Rytmiosa

Alkuperäinen idea oli "puhdas" 64 -vaiheinen MIDI -rumpusekvensseri jopa 12 itsenäisen rumpuosan sekvensoimiseksi. Testauksen jälkeen huomasin, että olisi ollut mukavaa ohjata myös bassoääntä, ja annoin muuttuvan äänenvoimakkuuden ominaisuuden vain viimeisimmälle rummulle. Tämän jälkeen muutin koodia uudelleen niin, että voisin muuttaa sävelkorkeutta jokaisessa rummussa ja ohjata jopa 12 syntetisaattoria. Muutos myöhemmin lisäsin polyfoniaa (polyfonia per syntetisaattori rajoitettu oletuksena 3: een).

Yhteenvetona:

- LIVE-tilassa, jos LIVE-tallennus on käytössä ja sarja on aloitettu, voit tallentaa saapuvat MIDI-muistiinpanoviestit moniäänisesti. Pitch- ja äänenvoimakkuustiedot tallennetaan. Pitch bend ja jälkikaiutin tiedot menetetään. MIDI Control Change -viestit tallennetaan. Muista, että sinulla on vain yksi CC -paikka kanavaa kohden.

- Jos sekvenssi on pysäytetty, voit tallentaa enintään 3 sävelkorkeusarvoa (sointu) tietyn palkin tiettyyn vaiheeseen pitämällä kohdevaihepainiketta painettuna ja painamalla (samanaikaisesti tai yksi kerrallaan) haluamasi näppäimet näppäimistö on kytketty MIDI IN -porttiin.

Huomaa, että:

- Vaiheessa laukaistu nuotti "tapetaan" heti seuraavassa vaiheessa. Jos haluat pidentää nuotin pituutta, toimi syntetisaattorisi "release" VCA -parametrin mukaan.

- toisin kuin rummut, nuotteja ei voi soittaa rullassa painamalla "roll" -painiketta.

- LIVE -tallennuksen aikana saapuvat MIDI -kanavatiedot tallennetaan suhteelliseen "rummun" vaiheeseen (MIDI -kanava 1 -> "rumpu" 1 ja niin edelleen).

Voit tyhjentää tietyn syntetisaattorisekvenssin painamalla suhteellista "rummun" askelpainiketta ja pitämällä "REC" -painiketta painettuna. Painamalla sitä uudelleen tyhjenee myös rumpusarja. Jos tallennettiin CC -sekvenssi, se poistetaan ensimmäisenä, ja noudata sitten järjestystä CC -> Synth -> Drum

Vaihe 7: Arpeggio -laukaisimet

80-luvun alun pre-MIDI-syntetisaattorit on usein varustettu joskus nimellä "arpeggio trigger input". Lähettämällä 2,5-5,0 V: n trig-signaalin (V-trig tai "jännitteen liipaisin") tai maadoittamalla arpeggio-liipaisutulon (S-Trig tai "kytkinliipaisin") voit kertoa syntetisaattorille siirtyvän yhden askeleen arpeggio-sekvenssissä. Tämä voi olla vaikeaa hallita sekvensserillä ilman erillistä laukaisinta (joskus "rimshot" -ääniä omistetusta ulostulosta, jossa/niitä käytetään apuna V-trig-syntikoille), mutta mikrokortilla voit hallita tällaista signaalia ja ohjausta helposti syntetisaattorisi, kuten tehtaalla oli tarkoitettu.

Tämä rytmiosasekvensseri sisältää mahdollisuuden laukaista kahden eri syntetisaattorin muuntajan itsenäisesti.

Käyttö on erittäin helppoa: valitse rumpu 11 tai 12 (paina vaihetta 11 tai 12 samalla kun painat "shift") ja aktivoi vaiheet, joiden haluat arpeggiaattorin siirtyvän yhden askeleen. Tällä tavalla voit "ohjelmoida" erittäin tiukan 1/16 nuotin pituuden säännöllisistä arpeggioista aktivoimalla kaikki vaiheet tai 1/8 aktivoimalla joka toisen askeleen. Lisäksi voit ohjelmoida monimutkaisempia arpeggioja aktivoimalla vaiheet epäsäännöllisen polun mukaan.

Riippuen ohjattavan syntetisaattorin tukemasta liipaisusignaalin tyypistä, tarvitset yksinkertaisen laitteistomuutoksen: V-trig (eli Roland-syntetisaattorit) tapauksessa aseta 1 Kohm: n vastus sarjaan arduino-laukaisulähdöllä. Jos kyseessä on S-trig (eli Korg-syntetisaattori), käytä kytkentävaiheeseen kiinnitettyä shemaattista kytkimen turvallista liipaisinta.

Vaihe 8: Jos asiat eivät toimi…

Jopa tällainen suhteellisen yksinkertainen projekti ei todennäköisesti toimi 100% ensimmäisen kerran, kun käynnistät sen. Tässä, esimerkiksi, painikkeiden ja LED -valojen välinen ristiriita on ratkaisevan tärkeää, ja vertaansa vailla oleva johdotus tekee sekvensseristä käyttökelvottoman.

Jotta voisin testata kaikki eri vaiheen sekvensserin muodostavat komponentit, kirjoitin yksinkertaisen testiluonnoksen (katso liite).

Voit ladata uusimman testin laiteohjelmiston TÄSTÄ (GitHub -linkki).

Testiluonnos toimii seuraavasti:

- paina askelpainiketta: vastaavan LED-valon pitäisi syttyä ja MIDI-muistutus kanavalla 10 lähetetään MIDI-lähtöön.

- paina toimintopainiketta: yksi viidestä ensimmäisestä LEDistä syttyy.

-käännä potentiometriä: LEDit syttyvät vastaavasti (ensimmäinen kattila -> ensimmäinen LED -rivi, toinen kattila -> toinen LED -rivi, kolmas potti -> kolmas LED -rivi).

- jos vastaanotetaan MIDI -muistiinpano, ensimmäinen LED -valo vilkkuu.

Muista, että MIDI -kaiku on oletusarvoisesti käytössä. Tämä tarkoittaa sitä, että jos sinulla on MIDI-silmukka syntetisaattorin ja MRSS: n välillä, tämä voi aiheuttaa ongelmia (olen kokenut ennustettavan kaksoisnoodin, joka laukaisee suurimman osan ajasta, mutta myös hyvin alhaisia nuotteja, jotka käynnistyvät ja yleisesti reagoimaton sisäänrakennettu näppäimistö, jossa on MIDI-syntetisaattorit MIDI Throu… se riippuu syntetisaattorista). Jos näin on, poista MIDI -kaiku käytöstä painamalla "mykistys" -painiketta ja pitämällä samalla painettuna "vaihtopainike".

Suositeltava: