Mündəricat:

Arduino MIDI Ritm Bölmə Sequencer: 8 Addım (Şəkillərlə birlikdə)
Arduino MIDI Ritm Bölmə Sequencer: 8 Addım (Şəkillərlə birlikdə)

Video: Arduino MIDI Ritm Bölmə Sequencer: 8 Addım (Şəkillərlə birlikdə)

Video: Arduino MIDI Ritm Bölmə Sequencer: 8 Addım (Şəkillərlə birlikdə)
Video: Драм-секвенсор Arduino: 8 дорожек, 16 шагов на такт, 8 тактов на паттерн 2024, Iyul
Anonim
Arduino MIDI Ritm Bölmə Sequencer
Arduino MIDI Ritm Bölmə Sequencer
Arduino MIDI Ritm Bölmə Sequencer
Arduino MIDI Ritm Bölmə Sequencer
Arduino MIDI Ritm Bölmə Sequencer
Arduino MIDI Ritm Bölmə Sequencer

Yaxşı bir proqram nağara maşınına sahib olmaq bu gün asan və ucuzdur, amma siçan istifadə etmək mənim üçün əyləncəni öldürür. Bu səbəbdən, əvvəlcə 12 fərqli baraban elementini (hissəsini) işə sala bilən, 64 mərhələli təmiz MIDI nağara ardıcıllığı olaraq nəyin nəzərdə tutulduğunu başa düşdüm, amma sonra bir ritm bölmə sekanserində inkişaf etdi …

… ora gedirik!

Addım 1: Necə Çalışır

Bu avadanlıq tək başına səs yarada bilməz, ancaq MIDI vasitəsilə xarici aparatı sıralayır. Bu o deməkdir ki, MIDI qeyd mesajları ilə tetiklenebilecek nağara səslərinizin bir səs generatoruna ehtiyacınız olacaq (bir nümunə götürən və ya bir nağara sintezatoru və ya ən sevdiyiniz nağara proqramı olan bir kompüter).

Əsasən bir çubuğun hər bir addımı üçün bir 4 x 4 düyməli matrisdən (LED -lərdən) ibarətdir. Bütün 64 addımlar ardıcıllığı 4 pillə vurulan 16 pillədən ibarətdir. Hər addım bir qeydin 1/16 hissəsidir.

İki iş rejimi var: canlı rejim və redaktə rejimi.

Düzəliş rejimində, əslində hər addımda hansı nağara çalacağını təyin edərək ardıcıllığınızı addım-addım düzəldə bilərsiniz.

Xarici aparat cihazınız ("baraban") "10" kanal nömrəsində fərqli "MIDI qeyd nömrələri" üçün bir MIDI "qeyd" mesajı göndərməklə işə salınır. Varsayılan olaraq bu qeyd nömrələri var

baraban #1 (yəni vuruş) -> "60" MIDI qeyd nömrəsi

tambur #2 (yəni tələ) -> "62" MIDI qeyd nömrəsi

nağara #3 (yəni alqış) -> "64" MIDI qeyd nömrəsi

tambur #4 (yəni Hihat) -> "65" MIDI qeyd nömrəsi

baraban #5 -> "67" MIDI qeyd nömrəsi

baraban #6 -> "69" MIDI qeyd nömrəsi

tambur #7 -> "71" MIDI qeyd nömrəsi

tambur #8 -> "72" MIDI qeyd nömrəsi

tambur #9 -> "74" MIDI qeyd nömrəsi

baraban #10 -> "76" MIDI qeyd nömrəsi

baraban #11 -> "77" MIDI qeyd nömrəsi

tambur #12 -> "79" MIDI qeyd nömrəsi

İstəyirsinizsə, bu dəyərləri (və MIDI kanalını) eskizdə dəyişə bilərsiniz.

Addım düymələrinə basaraq canlı rejimdə, serial vasitəsilə MIDI mesajları göndərərək hər bir addımla əlaqəli zərb alətləri oynaya bilərsiniz. Düymələrinizi və/və ya daxil olan MIDI mesajlarınızı yaza bilərsiniz.

Həm canlı rejimdə, həm də redaktə rejimində bir nağara səssiz edə bilər (və ya aça bilərsiniz), hal -hazırda aktiv olan nağara "gəzdirin" və ardıcıllığınızı "yelləyin".

Ritm bölməsi?

Tambur sıralayıcılarının əksəriyyəti sırf MIDI baraban hissələri tetikleyicisidir və hər bir nağara səsi üçün sabit bir MIDI qeyd nömrəsi vardır. Bu vəziyyətdə, təmiz bir "baraban sıralayıcı" dan daha çox "ritm bölmə sekanserinə" sahibik, çünki sintezatorları belə ardıcıllıqla düzəldə bilərsiniz.

Ətraflı məlumat və xüsusiyyətlərin tam siyahısı üçün QUICK START GUIDE oxuyun.

Addım 2: Avadanlıq

Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq

Bu layihə bir Arduino DUE lövhəsi ətrafında həyata keçirilir. Cihazı mümkün qədər sadə saxlamağa çalışdım, yəni LED sürücülərindən istifadə etmədən. Arduino DUE, çıxış cərəyanı məhdudiyyətləri səbəbiylə (pindən asılı olaraq 5 mA -dan 15 mA -a qədər) bir LED sürücüsü olmadan bir dəstə LED idarə etmək üçün ən uyğun lövhə deyil, amma ən sürətli Arduino və işləmə zamanı hər şeydir. sequencers ilə. Buna görə də unutmayın ki, BU hardware konfiqurasiyası, ehtimal ki, Arduino DUE -ni məhdudiyyətlərə itələyir və uzun müddətdə ona zərər verə bilər.

Deyilənə görə, hardware əsasən 16 düymə, funksiyalar üçün 5 əlavə düymə və 3 potansiyometrdən ibarət 16 LED (hər addım üçün bir) sekanserdir. Canlı qeyd funksiyasını əlavə etdikdən sonra qırmızı LED də əlavə etdim.

İşdə maddi sənəd:

- 1 dəfə Arduino DUE

- İnteqrasiya edilmiş LEDləri olan 16x anlıq, kilidlənməyən düymələr (istəsəniz xarici LEDlərdən istifadə edə bilərsiniz, lakin aşağı güclü LEDlərdən istifadə etməyi unutmayın!)

- 1x qırmızı LED (aşağı güc!)

- 5x ani, bağlanmayan düymələr

- 3x 10K tək dönmə, xətti, potensiometrlər

- 3x 6.5 mm panelli mono jak dişi

- 1x plastik qutu (190x140x70 mm ölçülü korpusdan istifadə etmişəm)

- 2x 5 pinli DIN qadın panel montaj yuva konnektoru (MIDI)

- 1x iki tərəfli 70x90 mm mükəmməl lövhə

- 2x40 pinli kişi tək sıra pin başlıq zolağı (2.54 mm), qızılla örtülmüşsə daha yaxşıdır

- 1x H11L1 optokupl

- 1x 1N4148 diod

- 23x 1000 ohm rezistorlar

- 3x 220 ohm rezistorlar

- 2x BC547 pnp transistorlar

… lehim teli, bəzi kabellər, lehimləmə stansiyası, bir qazma aləti … və boş vaxt:)

Diqqət yetirin ki, şəkillərdəki düymələr çirkin sıçrayış səbəbindən başqa bir növ (hətta daha ucuz …) düymələrlə əvəz edilmişdir …

Layihənin tamamlanması üçün lazım olan vaxt: 8-10 saat

XƏBƏRDARLIQ: Qazma zamanı hər zaman qoruyucu eynək və əlcək geyin! İsti material ləkələri gözlərinizə yansıtıla bilər və ya dərinizlə təmasda olarsa yanıqlara və ya ətrafınızdakı insanlara daha da ciddi ziyan vurar

Addım 3: tellər

Tellər
Tellər
Tellər
Tellər
Tellər
Tellər

Addım düymələri Arduino pinlərinə birbaşa 22 -dən (addım 1) -dən 37 -yə (addım 16) bağlıdır. Düymələr zəmini papatya zəncirlə bağlanır və Arduino DUE zəminə bağlıdır. Arduino inteqrasiya edilmiş çəkmə rezistorlarının proqram təminatı olması səbəbiylə çəkmə və ya açılan rezistorlara ehtiyac yoxdur (eskizə baxın).

Eyni, addımlardan başqa funksiyalar üçün istifadə olunan əlavə 5 düymə (Arduino sancaqları 2, 3, 4, 5 və 6) üçün də keçərlidir. Sıralarımı uzaqdan oynaya bilmək və dayandırmaq üçün "start" düyməsinə paralel olaraq 6.5 mm qadın dişi konnektoru da qoydum.

LEDlər, cərəyanı məhdudlaşdırmaq və mikrokontrolörün qorunması üçün hər biri 1K ohm rezistorla 38 (addım #1) - 53 (addım #16) aralığında torpaq (papatya zənciri) və Arduino DUE pinlərinə qoşulur.

Potansiyometrlər əlavə olunmuş şəkildə göstərildiyi kimi bağlanır. İstinad gərginliyinin 5V deyil, 3.3V olduğuna diqqət yetirin. İstifadə olunan girişlər A0, A1 və A2 -dir.

Korg Polysix və Roland Juno 6/60 kimi köhnə 80 -lərin sintezini birləşdirmək üçün lazım olanlar kimi arpej siqnalları üçün iki tetikleyici çıxış da tətbiq etdim. A3 və A4 sancaqlarına bağlanırlar, ancaq rəqəmsal siqnallardan istifadə etmək istəsəniz rəqəmsal sancaqlar istifadə edə bilərsiniz. V-Trig (gərginlik tetikleyicisi) siqnalları ilə uyğun bir synth sıralamaq niyyətindəsinizsə, cərəyanı azaltmaq üçün 1k ohm seriyalı rezistor kifayət edər; S-Trig (keçid tetikleyicisi) sintezi halında, sadə bir pnp keçid dövrəsinə ehtiyacınız olacaq (əlavə edilmiş sxemə baxın).

MIDI IN və OUT sxemləri əlavə şəkillərdə sxematik şəkildə göstərilmişdir. Diqqət yetirin ki, əksər arduinoların əksinə olaraq, Rx1 və Tx1 standart olaraq DUE lövhələrində Rx0 və Tx0 əvəzinə istifadə olunur. Bu əladır, çünki hər dəfə Rx bağlantısını kəsmədən eskizinizi yükləyə bilərsiniz. H11L1 optokuplundan istifadə etdiyimə də diqqət yetirin, çünki Arduino DUE 3.3V həddində ümumi 6N138 kimi işləyə bilmədim.

Addım 4: Proqram təminatı

Eskiz Arduino IDE -də yazılıb və Arduino DUE lövhəsinə yüklənməlidir. Eskizi arduino DUE -a necə yükləmək barədə ətraflı məlumat verməyəcəyəm. Arduino DUE ilə ilk təcrübəniz varsa, bunu oxuyun. Arduino IDE ilə ilk təcrübəniz varsa, bunu da oxuyun.

Yenilənmiş firmwareHERE (github linki) yükləyə bilərsiniz.

Eskiz əla FortySevenEffects MIDI kitabxanasına əsaslanır. Kitabxananı arduino IDE -də quraşdırmalısınız.

Hər bir barabana təyin edilmiş MIDI çıxış qeydləri, eskizdəki drumNote [STEPS_NUM] dəyişənliyi ilə təyin olunur. Onları istəyinizə görə dəyişə bilərsiniz.

Zərb alətləri üçün MIDI çıxış kanal nömrəsi "10" olaraq təyin olunur.

Mən real həyatda kod yazan deyiləm və burada ehtiyac duyduqlarımızı kodlaşdırmağın daha yaxşı yolları var. Hər hansı bir təklifi olan bir kod yazan varsa, xoş gəlmisiniz! Zəhmət olmasa kodun səmərəliliyini/effektivliyini artıra biləcək hər hansı bir dəyişikliyi mənə göndərin və mən onu əsas eskizə daxil edəcəm (açıq şəkildə İştirakçıya istinadən!).

Addım 5: Tez Başlanğıc Kılavuzu

DƏRMƏLƏR: ADIM-ADAM SIRALAMA

Sekanserinizi işə saldıqda (və ya sıfırlayanda) boş bir ardıcıllıq yüklənəcək. Sekanser düzəldici rejimdə açılır, ilk çubuğu tutub/bağlayır və ilk nağara (yəni vuruş) seçilir. Bu o deməkdir ki, hər hansı bir addım düyməsinə basaraq dərhal həmin addımlara "vuruş" təyin edəcəksiniz. Tamburun işə salınacağı həcm, barabanı pilləyə təyin edərkən "həcm" potensiometrinin mövqeyi ilə müəyyən edilir. Əvvəllər təyin edilmiş bir addım düyməsini yenidən basaraq, o mərhələdəki cari tamburu təyin etməyəcəksiniz.

"Başlat" düyməsini basarsanız, LED -lərinizin soldan sağa, yuxarıdan aşağıya doğru işlədiyini və vuruşun hər addımını keçəndə "vurma" oynadığını görürsünüz.

"Shift" düyməsinə basıldıqda, 1 -ci sıradakı 1 -ci addımın LEDini (ilk tamburun seçildiyini bildirir) və dördüncü cərgədəki ilk addımı (ilk çubuğa kilidləndiyiniz mənasını verir) görürsünüz. İndi "shift" düyməsini basıb saxlayarkən başqa bir addım düyməsinə basaraq ardıcıllıqla istədiyiniz nağara dəyişə bilərsiniz. Yeni barabanı seçdikdən sonra "shift" düyməsini buraxın. Bütün LEDlər sönəcək (çünki yeni barabanı heç bir addıma təyin etməmisiniz) və yeni tamburu addımlara təyin etməyə başlaya bilərsiniz. Lazım olan bütün davulları təkrarlayın (12 -ə qədər).

Gözəl bir nümunə yaratdığınız üçün "shift" düyməsini basıb saxlayın və alt sıradakı vurgulanmış addımı söndürün (istifadə etdiyim düzeni qəbul etmisinizsə 4 -cü sıranın 1 -ci addımı olmalıdır): yalnız " kilidini açdı "indi bütün 4 çubuğun üzərində işləyəcək. Altdakı xam LED -lər "hərəkət etməyə" başlayacaq, bu da hazırda hansı çubuğun çalındığını göstərir (çubuğun irəliləməsi). Yalnız ilk barda bir sıra oynayacağını və digər 3 çubuğun heç bir səs çıxarmayacağını görəcəksiniz. Davulları yalnız ilk çubuğa təyin etdiyiniz üçün, digərləri boş qalır. Əl ilə doldura bilərsiniz ("shift" düyməsini basıb saxlayarkən son 4 addımlı düymələrdən birini basaraq yeni bir çubuq seçin, barabanlardan birini seçin, addımları doldurun və s.) Və ya yaratdığınız çubuq ardıcıllığını kopyalayıb yapışdıra bilərsiniz. redaktə rejiminə girərək (ilk çubuğa yenidən kilidləyin) və "shift" düyməsini basıb saxlayarkən "qeyd" ə basaraq (indi "yapışdır" funksiyasını yerinə yetirir) bütün çubuqlara. Dediklərindən daha asandır.

DRUMLAR: CANLI PLAY MODU

Başlanğıcda sequencer redaktə rejimindədir. Redaktə rejimindən çıxmaq üçün "shift" düyməsini basıb saxlamalı və hazırda saxlanılan/kilidlənmiş çubuq düyməsini basmalısınız (4 -cü sıradakı addım düyməsi aktivdir). Bu, əvvəllər kilidlənmiş çubuğun LEDini söndürəcək və ardıcıllığı açacaq. İndi canlı oyun rejimindəsiniz.

Canlı oynatma rejimində, hər hansı bir addım düyməsinə basaraq həmin düymə ilə əlaqəli nağara işə salınacaq.

Ardıcıllığınızı yaşamaq istəyirsinizsə, "play" düyməsinə basaraq ardıcıllığa başlayın, sonra "record" düyməsinə basın (yalnız canlı oyun rejimində). Qırmızı LED yanacaq. Baraban ardıcıllığı idarəetmə paneli matrisində və ya daxil olan hər hansı bir MIDI qeyd mesajında (yəni xarici MIDI klaviaturasından) oynadığınız qeyd olunacaq.

Digər funksiyalar

"Roll" düyməsinə basaraq, hazırda aktiv olan nağara hər addımda (rulonda) çalınacaq. Bu həm "addım-addım", həm də "canlı oyun" rejimlərində işləyir.

"Səssiz" düyməsini basıb saxlayarkən hər hansı bir addım düyməsinə basaraq, o mərhələyə aid olan nağara səssiz qalacaq (və ya səssiz). Bu həm "addım-addım", həm də "canlı oyun" rejimlərində işləyir.

"REC" düyməsini basıb saxlayarkən nisbi addım düyməsini basaraq müəyyən bir baraban ardıcıllığını təmizləyə bilərsiniz.

"Başlat" düyməsini 3 saniyədən çox saxlayaraq bütün ardıcıllığı (yumşaq sıfırlama) silə bilərsiniz.

"Yelləncək" potensiometrini çevirərək ardıcıllığınızı "yelləyə" bilərsiniz.

"Shift" düyməsini basıb saxlayarkən "səssiz" düyməsini basaraq MIDI yankısını söndürə/aktivləşdirə bilərsiniz. MIDI echo aktiv olduqda (standart), MIDI INPUT yuvasında olan hər hansı bir məlumat MIDI OUTPUT yuvasına göndəriləcək (yalnız MIDI notu, notu, pitch bend, aftertouch və nəzarət dəyişikliyi əks olunur).

Həm MIDI saat girişi, həm də çıxışı standart olaraq tətbiq olunur və aktivdir. Saat girişi alınmadığı təqdirdə, temp xüsusi potensiometrlə təyin olunur. Bir MIDI saat girişi alınarsa, temp bundan hesablanır və temp potensiometri cavab verməyəcək. MIDI saatı həmişə MIDI -yə göndərilir.

Addım 6: Ritm Bölməsi

Orijinal fikir, 12 müstəqil baraban hissəsini sıralamaq üçün "saf" 64 addımlı MIDI baraban sıralayıcı idi. Bir az sınaqdan sonra, bir bas xəttini də idarə etmənin yaxşı olacağını gördüm və addım-addım dəyişən bir xüsusiyyətini yalnız son barabana həvalə etdim. Bundan sonra kodu yenidən dəyişdirdim ki, hər nağara içərisindəki yerini dəyişim və 12 sintezatora qədər idarə edim. Daha sonra bir düzəlişə polifoniya əlavə etdim (hər bir sintez üçün polifoniya standart olaraq 3 ilə məhdudlaşdı).

Cəmləşdirmək:

- CANLI rejimdə olarkən, CANLI qeydlə məşğul olsanız və ardıcıllıqla başlasanız, daxil olan MIDI qeyd mesajlarını polifonik olaraq qeyd edə bilərsiniz. Səs və həcm məlumatları saxlanılacaq. Pitch bend və aftertoutch məlumatları itirilir. MIDI Control Change mesajları saxlanacaq. Kanal başına, addım başına yalnız bir CC yuvanız olduğunu unutmayın.

- Ardıcıllıq dayandırılarsa, təyinat düyməsini basıb saxlayaraq və istədiyiniz düymələri (eyni anda və ya bir -bir) basaraq müəyyən bir çubuğun müəyyən bir addımına qədər 3 pitch dəyərini (akkord) qeyd edə bilərsiniz. MIDI IN portuna qoşulmuş klaviatura.

Diqqət yetirin:

- Bir addımda tetiklenen qeyd, növbəti addımda "öldürülür". Notun uzunluğunu artırmaq üçün sintezatorunuzun "buraxma" VCA parametri ilə hərəkət edin.

- zərb alətlərindən fərqli olaraq notlar "rulon" düyməsinə basaraq rulonda çalına bilməz.

- CANLI qeyd edərkən, daxil olan MIDI kanal məlumatları nisbi "baraban" addımında saxlanılır (MIDI kanalı #1 -> "nağara" #1 və s.).

"REC" düyməsini basıb saxlayarkən nisbi "baraban" addım düyməsini basaraq xüsusi bir synth ardıcıllığını təmizləyə bilərsiniz. Yenidən basmaq baraban sırasını da siləcək. Bir CC ardıcıllığı qeydə alındısa, ilk olaraq silinəcək, sonra CC -> Synth -> Drum əmrinə əməl edin.

Addım 7: Arpej Tetikleyicileri

80-ci illərin əvvəllərində MIDI əvvəli sintezlər tez-tez bəzən "arpeggio trigger girişi" ilə təchiz olunmuşdur. 2.5-dən 5.0 V-a qədər siqnal göndərməklə (V-trig və ya "gərginlik tetikleyicisi") və ya arpej tetikleyicisini (S-Trig və ya "switch trigger") topraklayaraq sintezatora bir arpej ardıcıllığında bir addım irəliləməsini deyə bilərsiniz. Xüsusi bir tetikleyicisi olmayan bir sekvensatorla idarə etmək çətin ola bilər (bəzən V-trig sintezləri üçün məqsədəuyğun olaraq istifadə edildiyi yerdən "rimshot" səsləri eşidilir), ancaq bir mikrokontrolör lövhəsi ilə bu siqnal və idarəetməni asanlıqla idarə edə bilərsiniz. fabrik tərəfindən nəzərdə tutulduğu kimi synth arpeggio.

Bu ritm bölmə ardıcıllığı, iki fərqli sintezatorun arpeggiatorunu müstəqil olaraq işə salma imkanı ehtiva edir.

İstifadəsi çox asandır: baraban 11 və ya 12 -ni seçin ("shift" düyməsini basarkən 11 və ya 12 -ci addımı basın) və arpeggiatorun bir addım hərəkət etməsini istədiyiniz addımları aktivləşdirin. Bu yolla, bütün addımları aktivləşdirərək bir notun 1/16 hissəsini nizamlı arpejlərə və ya hər bir addımı aktivləşdirərək 1/8 hissəsini "proqramlaşdıra" bilərsiniz. Bundan əlavə, nizamsız bir yol izləyən addımları aktivləşdirərək daha mürəkkəb arpejləri proqramlaşdıra bilərsiniz.

Nəzarət etmək istədiyiniz synth tərəfindən dəstəklənən tetikleyici siqnal növündən asılı olaraq sadə bir hardware dəyişikliyinə ehtiyacınız olacaq: V-trig (yəni Roland synths) vəziyyətində arduino trigger çıxışı olan 1 Kohm rezistor qoyun. S-trig (yəni Korg synths) vəziyyətində, etibarlı bir keçid tetikleyicisi üçün "məftil" addımına əlavə edilmiş şematik istifadə edin.

Addım 8: İşlər işləmirsə …

Nisbətən sadə bir layihə belə, ilk dəfə açdığınızda 100% işləməyəcək. Burada, Məsələn, düymələr və LED -lər arasındakı uyğunsuzluq çox vacibdir və uyğunlaşdırılmamış bir naqillər ardıcıllığı istifadə etməyəcək hala gətirəcəkdir.

Addım ardıcıllığını təşkil edən bütün fərqli komponentləri sınamaq üçün sadə bir test eskizi yazdım (əlavəyə baxın).

Ən son sınaq firmware proqramını BURADAN yükləyə bilərsiniz (GitHub linki).

Test eskizi aşağıdakı kimi işləyir:

- bir addım düyməsini basın: müvafiq LED yanmalıdır və MIDI çıxışına kanal 10-da bir MIDI notu göndəriləcək.

- bir funksiya düyməsini basın: ilk 5 LEDdən biri yanacaq.

-potensiometr yandırın: LEDlər buna uyğun olaraq yanacaq (birinci qazan -> birinci LEDlər sırası, ikinci qazan -> ikinci LED sırası, üçüncü qazan -> üçüncü LED sırası).

- bir MIDI notu alınarsa, ilk LED yanıb sönəcək.

MIDI echo -nun standart olaraq aktiv olduğunu unutmayın. Bu o deməkdir ki, bir synth və MRSS arasında bir MIDI döngüsünüz varsa, bu problemlərə səbəb ola bilər (əksər hallarda tətiklənən proqnozlaşdırıla bilən bir cüt qeyd yaşadım, eyni zamanda çox aşağı notlar tetiklendi və MIDI ilə sintezləri olan ümumiyyətlə cavab verməyən daxili klaviatura MIDI Throu kimi çıxış etmək … bu sintezdən asılıdır). Əgər belədirsə, "shift" düyməsini basıb saxlayarkən "səssiz" düyməsini basaraq MIDI yankısını söndürün.

Tövsiyə: