Mündəricat:

Rəqs əlcəyi: 9 addım
Rəqs əlcəyi: 9 addım

Video: Rəqs əlcəyi: 9 addım

Video: Rəqs əlcəyi: 9 addım
Video: məşq (naxcivan rəqs kursu) 2024, Noyabr
Anonim
Rəqs Əlcəyi
Rəqs Əlcəyi

Bu dərslikdə rəqslə musiqi ilə qarşılıqlı əlaqə qurmağa imkan verən bir əlcək hazırlamağı öyrədəcəyəm. Bir akselerometrlə işləyən əlcək quracaqsınız, Abletonda bir kompozisiya dizayn edəcəksiniz və sonra hər ikisini istədiyiniz qədər mürəkkəb və ya sadə bir şəkildə bağlayacaqsınız!

Təchizat

  • Ableton (və ya pulsuz sınaq)
  • Bir Arduino
  • Keçid kabelləri
  • Lehimleme dəmir
  • Karton
  • İsti yapışqan silahı
  • Çox təsəvvür

Addım 1: Konsepsiya

Bu layihə əylənmək üçün hazırlanmışdır. Bu dərslikdəki nümunə layihə sizin üçün əyləncəli deyilsə, yenidən dizayn edin!

Sevdiyiniz mahnılardan bir neçəsini qoymağı, əllərinizi onlara çəkməyi və nə olduğunu görməyi məsləhət görürəm. Əllərinizi yuxarı-aşağı hərəkət etdirirsinizmi? Yan-yana? Yavaş və ya tez? Musiqinin hansı tərəfləri əllərinizi hərəkət etdirmək istəyinizə səbəb olur? Bunların siyahısını yazmısınızsa, ehtimal ki, zövq aldığınız hərəkətləri son alqoritmlərinizə daxil etməyin bəzi yollarını anlaya biləcəksiniz.

İşdə istifadə etdiyim hərəkətlər:

  • Sürətli aşağı və aşağı hərəkət, mahnının, davulun və ya basın başlamasına səbəb olur. (Bunlar mahnının fərqli nöqtələrində olur, eyni anda deyil!)
  • Yavaş, əyilmiş yan-yana hərəkət, daha çox əks-səda verən, yüksək bir səsi işə salır.
  • Mahnının müəyyən bir hissəsində əlimi yuxarı əymək musiqini sakitləşdirir - buna görə də yumruğumu "tutdum".

Bunlardan istifadə edin və ya özünüz edin!

(Diqqət yetirin: bu dərslik Abletonda necə musiqi və ya melodiyaların necə yaradılacağını əhatə etmir! Bu təlimatlara əməl etsəniz, yalnız mahnıların həcmini və ya səs effektlərinin tətbiqini artıra/azalda biləcəksiniz.)

Addım 2: Akselerometr hazırlayın

Akselerometr hazırlayın
Akselerometr hazırlayın

Əvvəlcə hansı növ akselerometriniz olduğunu anlayın. Mən bunu istifadə etdim; hər hansı bir üç oxlu akselerometr edəcək. (Və ya vəhşicəsinə getmək istəsəniz başqa bir sensoru sınayın.) Arduinodan akselerometr məlumatlarının necə oxunacağını bildiyinizə əmin olun. Analog girişdən daha mürəkkəb bir şey istifadə edərsə, akselerometriniz üçün bir kitabxana yükləməyiniz lazım ola bilər.

Çörək taxtası ilə sınadıqdan sonra qısa rəngli telləri akselerometrinizin pinlərinə lehimləyin. Elektrik pininə qırmızı tel, torpaq pininə qara tel və akselerometr ünsiyyəti üçün lazım olan digər tellər qoyun. (I2C sürətləndiriciniz varsa, bu SCL və SDA sancaqları olacaq. Analog akselerometriniz varsa, çox güman ki, x, y və z çıxışlarının hər biri üçün bir pin olacaq.) Lehiminizin möhkəm və muncuqların bitişik sancaqlar arasında üst -üstə düşməməsi.

Addım 3: Əlcək hazırlayın

Əlcək hazırlayın
Əlcək hazırlayın

İncə karton və ya qalın kağız parçasını akselerometrinizdən bir qədər böyük olan düzbucağa kəsin. Sürətölçəni kartona yapışdırın, altına yapışqan qoyduğunuzdan əmin olun. Sonra kartonlu akselerometrini əlcəyinizin arxasına yapışdırın. Akselerometrdəki gərginliyi aradan qaldırmaq üçün hər teli əlcəyin biləyinə sərbəst tikin və əlcək hazırdır. Əlinizi bağladığınız zaman əlinizi hərəkət etdirmək üçün kifayət qədər yerə sahib olmaq üçün daha uzun tellərə bağlayın.

Addım 4: Abletonda yazın

İndi idarə etmək üçün əlcəkdən istifadə edəcəyiniz mahnını yazmağın vaxtı gəldi. Hamısı birlikdə yaxşı səslənən, lakin tədricən qurmaq üçün istifadə edilə bilən Ableton döngələrini tövsiyə edirəm: melodiyalar, akkordlar, bas və zərb alətlərini sınayın. Əlcəklərinizdən hər bir döngənin nə vaxt oynanacağını və ya oynamayacağını idarə etmək üçün istifadə edə biləcəksiniz.

Bəzən qəribə bir səs effekti və ya qeyri -ənənəvi bir alət kimi bir mahnıya daxil etmək üçün hər hansı bir maraqlı səs düşünə bilirsinizsə, bunlardan bir və ya ikisini əlavə etməyə çalışın! Arada bir maraqlı bir şey gətirmək üçün onları daha az yayılmış əl hərəkətlərinə bağlaya bilərsiniz.

Arduino ilə uyğun kompozisiyamın bağlantısı budur, özünüzdən birini yazmaq istəmirsinizsə:

(Təəssüf ki, sizə Ableton öyrətmək tutorialın əhatə dairəsinə daxil deyil. Bununla birlikdə orada çoxlu yaxşı videolar var və Abletonda 90 günlük pulsuz sınaq müddəti var! Bu videonu məsləhət görürəm.)

Addım 5: Firmata istifadə etməyə başlayın

Firmata istifadə etməyə başlayın
Firmata istifadə etməyə başlayın

Arduino'nun Ableton ilə əlaqə qurmasını təmin etmək üçün Firmata adlı kitabxanadan istifadə etməlisən. Ableton üçün Əlaqə dəstini də yükləməlisiniz.

Abletonda, sol üstdəki menyuda Paketlər> Bağlantı Kiti> Cihazlar düyməsini basın və sonra əlavə etmək üçün ilk cihazı (Arduino) iki dəfə vurun. Cihazı hansı Ableton parçasına əlavə etdiyinizi xatırladığınızdan əmin olun!

Addım 6: Firmata sınayın

Test Firmata
Test Firmata

Əvvəlcə Arduino -nun Ableton ilə əlaqə qurduğunu yoxlayacağıq. Bu kod parçasını Arduino -ya yükləyin və işlədin:

#include void analogWriteCallback (byte pin, int value) {if (IS_PIN_PWM (pin)) {pinMode (PIN_TO_DIGITAL (pin), OUTPUT); analogWrite (PIN_TO_PWM (pin), dəyər); }} boş quraşdırma () {Firmata.setFirmwareVersion (FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION); Firmata.attach (ANALOG_MESSAGE, analogWriteCallback); Firmata.begin (57600);} boşluq döngəsi () {Firmata.sendAnalog (0, 800);}

Bu, Firmata ilə ünsiyyət qurmaq üçün lazım olan minimum minimumdur. Davamlı olaraq Abletondakı Firmata cihazının 0 portuna 800 (1024 -dən) çıxışı göndərir. Bu kodu Abletonda açıq bir Firmata cihazınız olarkən Arduino -ya yükləsəniz, yuxarıdakı şəklə bənzəməlidir. (Dəyərləri görmək üçün 0 portunu Abletondakı hər hansı bir şeylə müqayisə edin.)

Harita düyməsini və sonra Abletondakı Firmata uyğun hər hansı bir cihazı tıklayaraq, həmin porta alınan girişlə həmin Ableton cihazının dəyəri arasında bir eşleme əlavə edə bilərsiniz. Asan nümunələr, hər hansı bir parçanın və ya səs effektində istənilən yığımın həcmini əhatə edir. Kəşf edin və xəritədə tapa biləcəyiniz şeylərə baxın!

Addım 7: Əl Hərəkətlərinizlə Musiqiyə Təsir Edin

Əl Hərəkətlərinizlə Musiqiyə Təsir Edin!
Əl Hərəkətlərinizlə Musiqiyə Təsir Edin!

Bu vaxta qədər Abletonda bir az musiqi, Arduino'da bir Firmata ssenarisi və akselerometr əlcəyi taxmalısan. Gəlin bir az musiqi edək!

Abletondakı Arduino cihazının limanlarını fərqli şeylərlə müqayisə edin (izləmə həcmini təklif edirəm) və sonra Arduinodan hər limana məlumat göndərmək üçün kod xətləri əlavə edin.

Firmata.sendAnalog (liman, həcm səviyyəsi);

Hər Firmata portu üçün bu kimi kodu istifadə edin.

Sadə bir şey etmək istəyirsinizsə, işlənməmiş akselerometr dəyərlərini Ableton limanlarına göndərə və oradan xəritəyə qoya bilərsiniz. Daha mürəkkəb bir təcrübə üçün qərar verə bilərsiniz: hansı akselerometr dəyərləri səsləri, necə və nə vaxt tetiklemelidir?

Sonra bütün Ableton döngələrinizi oynayın, Arduino kodunuzu işlədin və rəqs edin!

(İmtina: mahnınız üçün hər hansı bir kompleks alqoritm yaratmağı planlaşdırırsınızsa, onu tənzimləmək çox vaxt çəkə bilər. "Uzaqdan rəqs et" gözləniləndən daha az dəqiq ola bilər.)

Addım 8: Parça Sınıfı (bonus!)

Həcm artımına qarşı deyilsinizsə və ya onu azaltmaq üçün başqa bir yolunuz yoxdursa, bu addımı atlayın. Əks təqdirdə, oxuyun!

Səsin bir anda tamdan səsə keçməsinin bəzi xoşagəlməz səslər yaratdığını gördüm və həcmi tədricən azaltmaq çox xoşdur. Ancaq Arduino -nun sinxron proqramlaşdırma mühitində bunu etmək çətindir. Beləliklə, patlamayı aradan qaldırmaq üçün bəzi kodlar var:

sinif Track {public: int volume; int volumeGoal; int updateSpeed; Track () {həcmi = 0; volumeGoal = 0; updateSpeed = 0; } void setVolumeGoal (int goal) {volumeGoal = goal; } int getVolumeGoal () {return volumeGoal; } boşluq setUpdateSpeed (int fastness) {updateSpeed = sürət; } int getVolume () {qaytarma həcmi; } void updateVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } başqa əgər ((həcm = updateSpeed)) {həcm += updateSpeed; }} boş səssiz (int fastness) {volumeGoal = 50; updateSpeed = sürət; } void full (int fastness) {volumeGoal = 950; updateSpeed = sürət; }};

Hər bir Parçanın cari həcmi, bir hədəf həcmi və bu hədəf həcminə doğru hərəkət etdiyi bir sürət var. Bir parçanın səsini dəyişdirmək istədiyiniz zaman setVolumeGoal () nömrəsinə zəng edin. Hər dəfə Arduino -da loop () funksiyasını işlədərkən, hər trekdə updateVolume () -ə zəng edin və sonra bu məlumatı getVolume () ilə Firmata göndərin. Daha sürətli və ya daha çox tədricən sönmək üçün yeniləmə sürətini dəyişdirin! Mümkünsə, səs səviyyəsini 0 olaraq təyin etməyin; bunun əvəzinə çox aşağı bir dəyərə qoyun (mute () -də standart dəyər 100 -dir).

Addım 9: Uzunluğu, Beats və Daha çoxunu izləyin (bonus!)

Layihənizdən çıxan səsin dinlənilməsini asanlaşdırmaq üçün çox şey edə bilərsiniz. Burada bir neçə variant var:

Mahnının nə qədər davam etdiyini izləyə bilərsiniz. Bunu etmək üçün mahnının nə vaxt başladığını anlamalısınız; Setup () funksiyasında kodunuzun əl hərəkətini hiss edənə qədər işləməsini gecikdirən bir müddət döngəsini tövsiyə edirəm. Millis () istifadə edərək mahnının başlama vaxtını dəyişəndə saxlayın və hər döngədə () nə qədər davam etdiyini yoxlayın. Mahnının müəyyən vaxtlarında müəyyən xüsusiyyətləri aktiv etmək və ya söndürmək üçün bundan istifadə edə bilərsiniz.

Döngülərinizin milisaniyədə nə qədər uzun olduğunu bilirsinizsə, mahnı quruluşunu daha dəqiq başa düşmək üçün neçə döngə keçdiyinizi də izləyə bilərsiniz!

Qarşılaşa biləcəyiniz başqa bir problem, bir trekin nə vaxt başlamasını və dayandırılmasını. Mahnının hazırda hansı ölçüdə olduğunu izləyərək bunu həll etdim. Sonra dərhal kəsmək əvəzinə, bir jestdən sonra istənilən sayda vuruş üçün parçaları ifa edə bilərdim. Bu, işlərin daha hamar axını təmin edir. Budur bir nümunə:

if (millis () - lastLoop> = 4000) {döngələr += 1; lastLoop = milis (); for (int j = 0; j <8; j ++) {beatNow [j] = yalan; }} beat = (millis () - lastLoop) / 250; if (beat! = lastBeat) {lastBeat = beat; beatsLeft -= 1; }

Həcmləri beatNow [beat] və/və ya beatsLeft dəyərlərinə uyğun olaraq yenilədiyinizə əmin olun. Bu təlimatda demək olar ki, hər şeyi, üstəlik bəzilərini özündə birləşdirən nümunə kod, praktikada görmək istəsəniz əlavə olunur.

Tövsiyə: