Isi kandungan:

Sarung Tangan Tarian: 9 Langkah
Sarung Tangan Tarian: 9 Langkah

Video: Sarung Tangan Tarian: 9 Langkah

Video: Sarung Tangan Tarian: 9 Langkah
Video: cara yang simpel untuk mengenakan kain sarung buat acra tarian anak-anak 2024, November
Anonim
Sarung Tangan Tarian
Sarung Tangan Tarian

Dalam tutorial ini, saya akan memandu anda merancang sarung tangan yang membolehkan anda berinteraksi dengan muzik melalui tarian. Anda akan membina sarung tangan yang dilengkapi dengan akselerometer, merancang komposisi di Ableton, dan kemudian menghubungkan kedua-duanya dengan cara yang rumit atau sederhana seperti yang anda mahukan!

Bekalan

  • Ableton (atau percubaan percuma)
  • Seorang Arduino
  • Kabel pelompat
  • Besi pematerian
  • Kadbod
  • Pistol gam panas
  • Banyak khayalan

Langkah 1: Konsep

Projek ini dirancang untuk menjadi menyeronokkan. Sekiranya cara projek contoh dalam tutorial ini tidak menyenangkan bagi anda, reka semula!

Saya cadangkan memakai beberapa lagu kegemaran anda, gerakkan tangan anda dan melihat apa yang berlaku. Adakah anda menggerakkan tangan ke atas dan ke bawah? Sisi ke sisi? Perlahan atau cepat? Apa aspek muzik yang membuat anda ingin menggerakkan tangan anda? Sekiranya anda mempunyai senarai ini, anda mungkin dapat mengetahui beberapa cara untuk memasukkan gerakan yang anda gemari ke dalam algoritma akhirnya.

Berikut adalah gerakan yang saya gunakan:

  • Gerakan naik dan turun yang cepat mencetuskan permulaan lagu, drum, atau bass. (Ini berlaku pada titik yang berbeza dalam lagu, tidak semestinya serentak!)
  • Gerakan sisi-ke-sisi yang perlahan dan sukar memicu suara yang lebih bergema dan bernada tinggi.
  • Pada satu bahagian lagu, memiringkan tangan saya ke atas membuat muzik menjadi sunyi - jadi saya "menangkapnya" di tangan saya yang tertutup.

Gunakan ini atau buat sendiri!

(Harap maklum: tutorial ini tidak merangkumi cara menghasilkan muzik atau melodi secara langsung di Ableton! Sekiranya anda mematuhi arahan ini, anda hanya akan dapat menambah / menurunkan jumlah trek atau aplikasi kesan audio.)

Langkah 2: Sediakan Accelerometer

Sediakan Accelerometer
Sediakan Accelerometer

Pertama, ketahui jenis pecutan yang anda ada. Saya menggunakan yang ini; apa-apa pecutan tiga paksi yang akan dilakukan. (Atau cuba jenis sensor lain jika anda ingin menjadi liar.) Pastikan anda tahu membaca data pecutan dari Arduino. Anda mungkin perlu memuat turun perpustakaan untuk pecutan jika menggunakan sesuatu yang lebih kompleks daripada input analog.

Setelah mengujinya dengan papan serbuk roti, pasangkan wayar berkod warna pendek ke dalam pin akselerometer anda. Letakkan wayar merah di pin kuasa, wayar hitam di pin ground, dan wayar lain yang diperlukan untuk komunikasi pecutan. (Sekiranya anda mempunyai akselerometer I2C, ini akan menjadi pin SCL dan SDA. Jika anda mempunyai pecutan analog, kemungkinan akan ada satu pin untuk setiap output x, y, dan z.) Pastikan solder anda padat dan bahawa manik tidak bertindih antara pin bersebelahan.

Langkah 3: Bina Sarung Tangan

Bina Sarung Tangan
Bina Sarung Tangan

Potong sekeping kadbod nipis atau kertas tebal menjadi segi empat tepat sedikit lebih besar daripada pecutan anda. Lekatkan accelerometer ke kadbod, pastikan anda meletakkan gam di bahagian bawah. Kemudian, lekatkan accelerometer yang disokong kadbod ke bahagian belakang sarung tangan anda. Jahit setiap wayar secara longgar ke pergelangan tangan sarung tangan untuk menghilangkan ketegangan pada accelerometer, dan kemudian sarung tangan anda sudah siap. Sambungkannya ke wayar yang lebih panjang agar mempunyai ruang yang cukup untuk menggerakkan tangan anda semasa ia dipasang.

Langkah 4: Karang di Ableton

Kini tiba masanya untuk menyusun lagu yang akhirnya anda gunakan sarung tangan untuk mengawalnya. Saya mengesyorkan gelung Ableton agar semuanya terdengar baik, tetapi dapat digunakan untuk membangun secara beransur-ansur: cuba melodi, kord, bass, dan perkusi. Anda akan dapat menggunakan sarung tangan anda untuk mengawal bila setiap gelung dimainkan atau tidak.

Sekiranya anda dapat memikirkan jenis bunyi yang menarik untuk kadang-kadang dimasukkan ke dalam lagu, seperti kesan bunyi yang aneh atau instrumen yang tidak konvensional, cuba tambahkan juga satu atau dua daripadanya! Anda boleh mengikatnya dengan gerakan tangan yang tidak biasa untuk membawa sesuatu yang menarik sekali-sekala.

Berikut adalah pautan ke komposisi saya yang serasi dengan Arduino, sekiranya anda tidak mahu menulis sendiri:

(Malangnya, mengajar anda Ableton bukan dalam ruang lingkup tutorial. Walau bagaimanapun, terdapat banyak video panduan bagus di luar sana, dan Ableton mempunyai percubaan percuma selama 90 hari! Saya mengesyorkan video ini.)

Langkah 5: Mula Menggunakan Firmata

Mula Menggunakan Firmata
Mula Menggunakan Firmata

Untuk membolehkan Arduino anda berkomunikasi dengan Ableton, anda perlu menggunakan perpustakaan yang bernama Firmata. Anda juga perlu memuat turun Kit Sambungan untuk Ableton.

Di Ableton, klik Pek> Kit Sambungan> Peranti di menu di kiri atas, dan kemudian klik dua kali pada peranti pertama (Arduino) untuk menambahkannya. Pastikan anda mengingat trek Ableton mana yang anda tambahi peranti itu!

Langkah 6: Uji Firmata

Uji Firmata
Uji Firmata

Pertama, kami akan menguji dan memastikan Arduino anda berkomunikasi dengan Ableton. Muat naik coretan kod ini ke Arduino anda dan jalankan:

#include void analogWriteCallback (pin byte, nilai int) {if (IS_PIN_PWM (pin)) {pinMode (PIN_TO_DIGITAL (pin), OUTPUT); analogWrite (PIN_TO_PWM (pin), nilai); }} batal persediaan () {Firmata.setFirmwareVersion (FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION); Firmata.attach (ANALOG_MESSAGE, analogWriteCallback); Firmata.begin (57600);} gelung kekosongan () {Firmata.sendAnalog (0, 800);}

Ini adalah minimum yang diperlukan untuk berkomunikasi dengan Firmata. Ia secara berterusan mengirimkan output 800 (dari 1024) ke port 0 peranti Firmata di Ableton. Sekiranya anda memuat naik kod ini ke Arduino anda semasa peranti Firmata dibuka di Ableton, ia akan kelihatan seperti gambar di atas. (Petakan peta 0 ke apa sahaja di Ableton untuk dapat melihat nilainya.)

Anda boleh mengklik butang Peta dan kemudian mana-mana peranti yang sesuai dengan Firmata di Ableton untuk menambahkan pemetaan antara input yang diterima ke port tersebut dan nilai peranti Ableton tersebut. Contoh mudah termasuk kelantangan trek atau dail mana pun dalam kesan audio. Terokai dan lihat apa yang dapat anda temukan untuk dipetakan!

Langkah 7: Mempengaruhi Muzik Dengan Pergerakan Tangan Anda

Mempengaruhi Muzik Dengan Pergerakan Tangan Anda!
Mempengaruhi Muzik Dengan Pergerakan Tangan Anda!

Pada masa ini, anda mungkin mempunyai beberapa muzik di Ableton, skrip Firmata di Arduino anda, dan sarung akselerometer. Mari buat muzik!

Petakan port peranti Arduino di Ableton untuk perkara yang berbeza (saya cadangkan jumlah trek), dan kemudian tambahkan baris kod untuk menghantar data ke setiap port dari Arduino.

Firmata.sendAnalog (port, volumeLevel);

Gunakan kod seperti ini untuk setiap port Firmata.

Sekiranya anda ingin melakukan sesuatu yang mudah, anda boleh menghantar nilai pecutan yang belum diproses ke port Ableton dan memetakannya dari sana. Untuk pengalaman yang lebih canggih, anda dapat memutuskan: nilai akselerometer apa yang harus mencetuskan bunyi, bagaimana, dan kapan?

Kemudian mainkan semua gelung Ableton anda, jalankan kod Arduino anda, dan menari!

(Penafian: jika anda merancang untuk membuat jenis algoritma kompleks untuk lagu anda, mungkin memerlukan banyak masa untuk memperbaikinya. "Menari jauh" mungkin kurang tepat daripada yang dijangkakan.)

Langkah 8: Kelas Trek (bonus!)

Sekiranya anda tidak keberatan munculnya volume atau ada cara lain untuk mengurangkannya, lewati langkah ini. Jika tidak, baca terus!

Saya perhatikan bahawa menukar kelantangan dari disenyapkan menjadi penuh dalam satu masa akan menghasilkan beberapa bunyi timbul yang tidak menyenangkan, dan bagus untuk memantapkan kelantangan secara beransur-ansur. Walau bagaimanapun, sukar untuk melakukan ini di persekitaran pengaturcaraan serentak Arduino. Jadi, inilah beberapa kod untuk membuat pop timbul hilang:

kelas Track {public: int volume; int volumeGoal; int updateSpeed; Jejak () {isipadu = 0; isi padu = 0; kemas kiniSpeed = 0; } batal setVolumeGoal (matlamat int) {volumeGoal = matlamat; } int getVolumeGoal () {pulangan volumeGoal; } kekosongan setUpdateSpeed (int fastness) {updateSpeed = fastness; } int getVolume () {jumlah pulangan; } batal kemas kiniVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } lain jika ((volume = updateSpeed)) {volume + = updateSpeed; }} batal bisu (int fastness) {volumeGoal = 50; updateSpeed = ketahanan; } kekosongan penuh (int fastness) {volumeGoal = 950; updateSpeed = ketahanan; }};

Setiap Trek mempunyai volume semasa, volume gol, dan kecepatan di mana ia bergerak menuju volume gol tersebut. Apabila anda ingin menukar kelantangan trek, panggil setVolumeGoal (). Setiap kali anda menjalankan fungsi loop () di Arduino anda, panggil updateVolume () pada setiap trek, dan kemudian hantarkan maklumat tersebut ke Firmata dengan getVolume (). Tukar kelajuan kemas kini untuk pudar yang lebih cepat atau lebih beransur-ansur! Juga, elakkan menetapkan kelantangan ke 0 jika anda boleh; sebaliknya, tetapkan ke nilai yang sangat rendah (lalai dalam bisu () adalah 100).

Langkah 9: Panjang Trek, Beats, dan Banyak Lagi (bonus!)

Anda boleh melakukan banyak perkara agar suara yang dihasilkan dari projek anda lebih senang didengar. Berikut adalah beberapa pilihan:

Anda boleh mengesan berapa lama lagu itu berjalan. Untuk melakukan ini, anda harus memikirkan kapan lagu bermula; Saya mengesyorkan loop sementara dalam fungsi setup () yang menunda kod anda daripada berjalan sehingga ia merasakan gerakan tangan. Simpan waktu mula lagu dalam pemboleh ubah menggunakan millis (), dan periksa berapa lama lagu itu berlaku setiap kali anda mengulangi (). Anda boleh menggunakannya untuk mengaktifkan atau mematikan ciri tertentu pada waktu tertentu lagu.

Sekiranya anda tahu berapa lama gelung anda dalam milisaat, anda juga dapat mengesan berapa banyak gelung yang anda lalui untuk memahami struktur lagu yang lebih bernuansa!

Masalah lain yang mungkin anda hadapi adalah ketika memulakan dan menghentikan trek daripada dimainkan. Saya menyelesaikannya dengan memerhatikan ukuran lagu yang sedang dimainkan oleh lagu itu. Kemudian saya dapat memainkan lagu untuk sebilangan rentak setelah memberi isyarat, bukannya memotongnya dengan segera. Ini menjadikan arus mengalir dengan lebih lancar. Inilah contohnya:

if (millis () - lastLoop> = 4000) {gelung + = 1; lastLoop = millis (); untuk (int j = 0; j <8; j ++) {beatNow [j] = false; }} beat = (millis () - lastLoop) / 250; jika (beat! = lastBeat) {lastBeat = beat; beatsLeft - = 1; }

Pastikan anda mengemas kini jumlah yang sesuai dengan nilai beatNow [beat] dan / atau beatsLeft. Contoh kod yang menggabungkan hampir semua perkara dalam tutorial ini, ditambah beberapa, dilampirkan sekiranya anda ingin melihatnya dalam praktik.

Disyorkan: