Daftar Isi:

Sarung Tangan Tari: 9 Langkah
Sarung Tangan Tari: 9 Langkah

Video: Sarung Tangan Tari: 9 Langkah

Video: Sarung Tangan Tari: 9 Langkah
Video: EduBilliard | CARA AGAR TUMPUAN TANGAN LU STABIL + WELCOME TO BILLIARD SPORTS MEDIA 2024, Juli
Anonim
Sarung Tangan Tari
Sarung Tangan Tari

Dalam tutorial ini, saya akan memandu Anda merancang sarung tangan yang memungkinkan Anda berinteraksi dengan musik melalui tarian. Anda akan membuat sarung tangan yang mendukung akselerometer, merancang komposisi di Ableton, dan kemudian menghubungkan keduanya dengan cara yang rumit atau sederhana seperti yang Anda inginkan!

Perlengkapan

  • Ableton (atau uji coba gratis)
  • Sebuah Arduino
  • Kabel jumper
  • Besi solder
  • Kardus
  • Pistol lem panas
  • Banyak imajinasi

Langkah 1: Konsep

Proyek ini dirancang untuk menyenangkan. Jika cara kerja proyek contoh dalam tutorial ini tidak menyenangkan bagi Anda, desain ulang!

Saya sarankan memakai beberapa lagu favorit Anda, gerakkan tangan Anda ke sana, dan lihat apa yang terjadi. Apakah Anda menggerakkan tangan Anda ke atas dan ke bawah? Sisi ke sisi? Perlahan atau cepat? Aspek musik apa yang membuat Anda ingin menggerakkan tangan? Jika Anda memiliki daftar ini, Anda mungkin dapat menemukan beberapa cara untuk menggabungkan gerakan yang Anda sukai ke dalam algoritme akhirnya.

Berikut adalah gerakan yang saya gunakan:

  • Gerakan naik-turun yang cepat memicu dimulainya lagu, drum, atau bass. (Ini terjadi pada titik yang berbeda dalam lagu, tidak harus secara bersamaan!)
  • Gerakan lambat dan miring dari sisi ke sisi memicu suara yang lebih bergema dan bernada tinggi.
  • Pada satu bagian tertentu dari lagu tersebut, memiringkan tangan saya ke atas membuat musik menjadi tenang -- jadi saya "menangkapnya" dengan tangan terkepal.

Gunakan ini atau buat sendiri!

(Harap diperhatikan: tutorial ini tidak mencakup cara menghasilkan musik atau melodi secara langsung di Ableton! Jika Anda mengikuti petunjuk ini, Anda hanya dapat menambah/mengurangi volume trek atau penerapan efek audio.)

Langkah 2: Siapkan Akselerometer

Siapkan Akselerometer
Siapkan Akselerometer

Pertama, cari tahu jenis akselerometer yang Anda miliki. Saya menggunakan yang ini; akselerometer tiga sumbu apa pun dapat digunakan. (Atau coba jenis sensor lain jika Anda ingin menjadi liar.) Pastikan Anda tahu cara membaca data akselerometer dari Arduino. Anda mungkin perlu mengunduh perpustakaan untuk akselerometer Anda jika menggunakan sesuatu yang lebih kompleks daripada input analog.

Setelah mengujinya dengan papan tempat memotong roti, solder kabel pendek berkode warna ke dalam pin akselerometer Anda. Letakkan kabel merah di pin daya, kabel hitam di pin ground, dan kabel lain yang diperlukan untuk komunikasi akselerometer. (Jika Anda memiliki akselerometer I2C, ini akan menjadi pin SCL dan SDA. Jika Anda memiliki akselerometer analog, kemungkinan akan ada satu pin untuk masing-masing keluaran x, y, dan z.) Pastikan solder Anda solid dan bahwa manik-manik tidak tumpang tindih antara pin yang berdekatan.

Langkah 3: Bangun Sarung Tangan

Bangun Sarung Tangan
Bangun Sarung Tangan

Potong selembar karton tipis atau kertas tebal menjadi persegi panjang yang sedikit lebih besar dari akselerometer Anda. Rekatkan akselerometer ke karton, pastikan Anda menempelkan lem di bagian bawah. Kemudian, rekatkan akselerometer yang didukung kardus ke bagian belakang sarung tangan Anda. Jahit setiap kabel dengan longgar ke pergelangan tangan sarung tangan untuk meredakan ketegangan pada akselerometer, lalu sarung tangan Anda siap. Hubungkan ke kabel yang lebih panjang agar memiliki cukup ruang untuk menggerakkan tangan Anda saat dicolokkan.

Langkah 4: Tulis di Ableton

Sekarang saatnya untuk membuat lagu yang pada akhirnya Anda akan menggunakan sarung tangan untuk mengontrol. Saya merekomendasikan loop Ableton yang semuanya terdengar bagus bersama-sama, tetapi dapat digunakan untuk membangun secara bertahap: coba melodi, akord, bass, dan perkusi. Anda akan dapat menggunakan sarung tangan Anda untuk mengontrol kapan setiap putaran diputar atau tidak.

Jika Anda dapat memikirkan jenis suara apa pun yang menarik untuk sesekali dimasukkan ke dalam sebuah lagu, seperti efek suara yang aneh atau instrumen yang tidak biasa, coba tambahkan satu atau dua di antaranya juga! Anda dapat mengikatnya ke gerakan tangan yang kurang umum untuk membawa sesuatu yang menarik sesekali.

Berikut ini tautan ke komposisi saya yang kompatibel dengan Arduino, jika Anda tidak ingin menulisnya sendiri:

(Sayangnya, mengajari Anda Ableton tidak termasuk dalam cakupan tutorial. Namun, ada banyak video petunjuk yang bagus di luar sana, dan Ableton memiliki uji coba gratis 90 hari! Saya merekomendasikan video ini.)

Langkah 5: Mulai Menggunakan Firma

Mulai Menggunakan Firma
Mulai Menggunakan Firma

Untuk mengaktifkan Arduino Anda untuk berkomunikasi dengan Ableton, Anda harus menggunakan perpustakaan yang disebut Firmata. Anda juga harus mengunduh Connection Kit untuk Ableton.

Di Ableton, klik Paket> Kit Koneksi> Perangkat di menu di kiri atas, lalu klik dua kali pada perangkat pertama (Arduino) untuk menambahkannya. Pastikan Anda mengingat trek Ableton mana yang Anda tambahkan perangkatnya!

Langkah 6: Uji Firma

Uji Firma
Uji Firma

Pertama, kami akan menguji dan memastikan Arduino Anda berkomunikasi dengan Ableton. Unggah cuplikan kode ini ke Arduino Anda dan jalankan:

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

Ini adalah minimal yang dibutuhkan untuk berkomunikasi dengan Firma. Ini terus mengirimkan output 800 (dari 1024) ke port 0 perangkat Firma di Ableton. Jika Anda mengunggah kode ini ke Arduino Anda saat Anda membuka perangkat Firma di Ableton, itu akan terlihat seperti gambar di atas. (Petakan port 0 ke apa pun di Ableton untuk dapat melihat nilainya.)

Anda dapat mengklik tombol Peta dan kemudian perangkat apa pun yang kompatibel dengan Firma di Ableton untuk menambahkan pemetaan antara input yang diterima ke port tersebut dan nilai perangkat Ableton tersebut. Contoh mudah termasuk volume trek apa pun atau dial apa pun dalam efek audio. Jelajahi dan lihat apa yang dapat Anda temukan untuk dipetakan!

Langkah 7: Pengaruhi Musik Dengan Gerakan Tangan Anda

Pengaruhi Musik Dengan Gerakan Tangan Anda!
Pengaruhi Musik Dengan Gerakan Tangan Anda!

Pada saat ini, Anda harus memiliki beberapa musik di Ableton, skrip Firma di Arduino Anda, dan sarung tangan akselerometer terpasang. Mari kita membuat musik!

Petakan port perangkat Arduino di Ableton ke berbagai hal (saya sarankan volume trek), lalu tambahkan baris kode untuk mengirim data ke setiap port dari Arduino.

Firma.sendAnalog(port, volumeLevel);

Gunakan kode seperti ini untuk setiap port Firma.

Jika Anda ingin melakukan sesuatu yang sederhana, Anda dapat mengirim nilai akselerometer yang belum diproses ke port Ableton dan memetakannya dari sana. Untuk pengalaman yang lebih canggih, Anda dapat memutuskan: nilai akselerometer apa yang harus memicu suara, bagaimana, dan kapan?

Kemudian mainkan semua loop Ableton Anda, jalankan kode Arduino Anda, dan menarilah!

(Penafian: jika Anda berencana membuat segala jenis algoritme kompleks untuk lagu Anda, mungkin perlu banyak waktu untuk menyempurnakannya. "Dance away" mungkin kurang akurat daripada yang diantisipasi.)

Langkah 8: Kelas Lacak (bonus!)

Jika Anda tidak keberatan volume muncul atau memiliki cara lain untuk menguranginya, lewati langkah ini. Jika tidak, baca terus!

Saya perhatikan bahwa mengubah volume dari senyap ke penuh dalam sekali jalan menghasilkan beberapa suara letupan yang tidak menyenangkan, dan menyenangkan untuk dapat memudarkan volume secara lebih bertahap. Namun, sulit untuk melakukan ini di lingkungan pemrograman sinkron Arduino. Jadi, inilah beberapa kode untuk menghilangkan popping:

kelas Lacak{ publik: int volume; int volumeTujuan; int kecepatan pembaruan; Lacak() { volume = 0; volumeTujuan = 0; pembaruanKecepatan = 0; } void setVolumeGoal(int tujuan) { volumeGoal = tujuan; } int getVolumeGoal() { mengembalikan volumeGoal; } void setUpdateSpeed(int fastness) { updateSpeed = tahan luntur; } int getVolume() { mengembalikan volume; } void updateVolume() { if((volume > volumeGoal) && ((volume - volumeGoal) >= updateSpeed)) { volume -= updateSpeed; } else if((volume = updateSpeed)) { volume += updateSpeed; } } void mute(int fastness) { volumeGoal = 50; updateSpeed = tahan luntur; } batal penuh(int tahan luntur) { volumeGoal = 950; updateSpeed = tahan luntur; }};

Setiap Trek memiliki volume saat ini, volume sasaran, dan kecepatan saat bergerak menuju volume sasaran tersebut. Saat Anda ingin mengubah volume trek, panggil setVolumeGoal(). Setiap kali Anda menjalankan fungsi loop() di Arduino Anda, panggil updateVolume() di setiap track, lalu kirim informasi itu ke Firma dengan getVolume(). Ubah kecepatan pembaruan untuk fadeout yang lebih cepat atau lebih bertahap! Juga, hindari mengatur volume ke 0 jika Anda bisa; sebagai gantinya, setel ke nilai yang sangat rendah (default dalam mute() adalah 100).

Langkah 9: Panjang Lacak, Ketukan, dan Lainnya (bonus!)

Anda dapat melakukan banyak hal untuk membuat suara yang dihasilkan dari proyek Anda lebih mudah untuk didengarkan. Berikut adalah beberapa opsi:

Anda dapat melacak berapa lama lagu telah berjalan. Untuk melakukan ini, Anda harus mencari tahu kapan lagu itu dimulai; Saya merekomendasikan loop sementara dalam fungsi setup() yang menunda kode Anda berjalan sampai merasakan gerakan tangan. Simpan waktu mulai lagu dalam variabel menggunakan milis(), dan periksa sudah berapa lama berlangsung setiap kali Anda mengulang(). Anda dapat menggunakan ini untuk mengaktifkan atau menonaktifkan fitur tertentu pada waktu tertentu dari lagu tersebut.

Jika Anda tahu berapa lama loop Anda dalam milidetik, Anda juga dapat melacak berapa banyak loop yang telah Anda lalui untuk pemahaman yang lebih bernuansa tentang struktur lagu!

Masalah potensial lain yang mungkin Anda temui adalah kapan harus memulai dan menghentikan trek agar tidak diputar. Saya memecahkan masalah ini dengan melacak ketukan ukuran lagu tersebut saat ini. Kemudian saya dapat memutar trek untuk sejumlah ketukan setelah gerakan, alih-alih langsung memotongnya. Ini membuat segalanya mengalir lebih lancar. Berikut ini contohnya:

if(millis() - lastLoop >= 4000) { loop += 1; lastLoop = milis(); for(int j = 0; j < 8; j++) { beatNow[j] = false; } } ketukan = (milis() - lastLoop) / 250; if(beat != lastBeat) { lastBeat = beat; ketukanKiri -= 1; }

Pastikan Anda memperbarui volume sesuai dengan nilai beatNow[beat] dan/atau beatsLeft. Contoh kode yang menggabungkan hampir semua hal dalam tutorial ini, ditambah beberapa, dilampirkan jika Anda ingin melihatnya dalam praktik.

Direkomendasikan: