Mundarija:

Raqs qo'lqopi: 9 qadam
Raqs qo'lqopi: 9 qadam

Video: Raqs qo'lqopi: 9 qadam

Video: Raqs qo'lqopi: 9 qadam
Video: Ayrim sport turlari bilan shug‘ullanish gigienasi Jismoniy tarbiya va bolalar sportining gigienik m 2024, Iyul
Anonim
Raqs qo'lqopi
Raqs qo'lqopi

Bu darslikda men sizga raqs orqali musiqa bilan muloqot qilish imkonini beradigan qo'lqopni yaratishni o'rgataman. Siz akselerometr bilan ishlaydigan qo'lqop qurasiz, Abletonda kompozitsiyani loyihalashtirasiz va keyin ikkalasini xohlaganingizcha murakkab yoki sodda tarzda bog'laysiz!

Ta'minotlar

  • Ableton (yoki bepul sinov)
  • Arduino
  • Jumper kabellari
  • Lehimlash temir
  • Karton
  • Issiq yopishtiruvchi qurol
  • Ko'p tasavvur

1 -qadam: Kontseptsiya

Ushbu loyiha qiziqarli bo'lishi uchun mo'ljallangan. Agar ushbu darslikdagi namunali loyiha sizga yoqmasa, uni qayta loyihalashtiring!

Men sizga eng sevimli qo'shiqlarni qo'yishni, ularga qo'llaringizni siljitishni va nima bo'lishini ko'rishni maslahat beraman. Qo'llaringizni yuqoriga va pastga siljitasizmi? Yonma-yon? Sekin yoki tez? Musiqaning qaysi jihatlari qo'lingizni qimirlatishga undaydi? Agar sizda bularning ro'yxati yozilgan bo'lsa, ehtimol siz o'zingiz yoqtirgan harakatlarni sizning oxirgi algoritmlaringizga qo'shishning ba'zi usullarini aniqlay olasiz.

Mana men ishlatgan harakatlar:

  • Yuqoriga va pastga tez harakat qilish qo'shiq, baraban yoki bassni ishga tushiradi. (Bular qo'shiqning turli nuqtalarida sodir bo'ladi, bir vaqtning o'zida emas!)
  • Yonma-yon yonma-yon, sekin harakatlanish yanada aks sado va baland tovushni keltirib chiqaradi.
  • Qo'shiqning ma'lum bir qismida qo'limni yuqoriga burish musiqani tinchlantiradi, shuning uchun men uni yopiq mushtim bilan "ushladim".

Ulardan foydalaning yoki o'zingiz tayyorlang!

(E'tibor bering: bu qo'llanmada Abletonda qanday musiqa yoki ohang yaratish mumkinligi ko'rsatilmagan! Agar siz ushbu ko'rsatmalarga amal qilsangiz, siz treklar hajmini yoki ovoz effektlarini qo'llashni kamaytira olasiz.)

2 -qadam: akselerometrni tayyorlang

Akselerometrni tayyorlang
Akselerometrni tayyorlang

Birinchidan, sizda qanday akselerometr borligini aniqlang. Men buni ishlatganman; har qanday uch o'qli akselerometr bajaradi. (Yoki yovvoyi bo'lishni xohlasangiz, boshqa turdagi sensorni sinab ko'ring.) Arduino -dan akselerometr ma'lumotlarini o'qishni bilganingizga ishonch hosil qiling. Agar analog kirishdan ko'ra murakkabroq narsa ishlatilsa, akselerometringiz uchun kutubxona yuklab olishingiz kerak bo'ladi.

Sinov taxtasi bilan sinab ko'rgandan so'ng, akselerometrning pinlariga qisqa rangli kodli simlarni lehimlang. Quvvat piniga qizil simni, tuproqli pinga qora simni va akselerometr aloqasi uchun zarur bo'lgan boshqa simlarni joylashtiring. (Agar sizda I2C akselerometri bo'lsa, bu SCL va SDA pinlari bo'ladi. Agar sizda analog akselerometr bo'lsa, x, y va z chiqishlarining har biri uchun bitta pin bo'lishi mumkin.) Lehimingiz mustahkam va boncuklar qo'shni pinlar orasiga to'g'ri kelmaydi.

3 -qadam: Qo'lqopni yarating

Qo'lqopni yarating
Qo'lqopni yarating

Yupqa karton yoki qalin qog'ozni akselerometringizdan biroz kattaroq to'rtburchaklar qilib kesib oling. Kartonga akselerometrni yopishtiring, uning pastki qismiga elim qo'yganingizga ishonch hosil qiling. Keyin, qo'lqopning orqa qismiga kartonli akselerometrni yopishtiring. Akselerometrdagi kuchlanishni yo'qotish uchun har bir simni qo'lqop bilagiga mahkam tikib qo'ying, shunda qo'lqopingiz tayyor bo'ladi. Tarmoqqa ulanganingizda qo'lingizni harakatlantirish uchun etarli joy bo'lishi uchun uni uzunroq simlarga ulang.

4 -qadam: Abletonda yozing

Endi siz qo'lqop yordamida nazorat qilish uchun qo'shiq yozish vaqti keldi. Men Ableton looplarini tavsiya qilaman, bularning barchasi birgalikda yaxshi eshitiladi, lekin asta -sekin to'plash uchun ishlatilishi mumkin: ohang, akkord, bass va perkussiyani sinab ko'ring. Siz qo'lqopdan foydalanib, har bir tsikl qachon o'ynashi yoki ishlamasligini nazorat qila olasiz.

Agar siz g'aroyib ovoz effekti yoki noan'anaviy asbob kabi vaqti -vaqti bilan qo'shiqqa qo'shilishi mumkin bo'lgan har qanday qiziqarli tovushlarni o'ylab topsangiz, ulardan bir yoki ikkitasini qo'shib ko'ring! Vaqti-vaqti bilan qiziqarli narsalarni olib kelish uchun siz ularni kamroq qo'l harakatlariga bog'lashingiz mumkin.

Arduino bilan mos keladigan kompozitsiyamga havola, agar siz o'zingiznikini yozishni xohlamasangiz, (Afsuski, sizga Abletonni o'rgatish darslik doirasiga kirmaydi. Ammo u erda juda ko'p yaxshi videolar bor va Abletonda 90 kunlik bepul sinov muddati bor! Men bu videoni tavsiya qilaman.)

5 -qadam: Firmata -dan foydalanishni boshlang

Firmata -dan foydalanishni boshlang
Firmata -dan foydalanishni boshlang

Arduino -ga Ableton bilan aloqa o'rnatish uchun siz Firmata nomli kutubxonadan foydalanishingiz kerak. Bundan tashqari, Ableton uchun Connection Kit -ni yuklab olishingiz kerak bo'ladi.

Ableton -da, chap yuqori menyudagi Paketlar> Ulanish to'plami> Qurilmalar -ni bosing va keyin uni qo'shish uchun birinchi qurilmani (Arduino) ikki marta bosing. Qurilmani qaysi Ableton qo'shig'iga qo'shganingizni eslang.

6 -qadam: Firmata -ni sinab ko'ring

Sinov Firmata
Sinov Firmata

Birinchidan, biz Arduino Ableton bilan aloqa o'rnatayotganini tekshirib ko'ramiz. Ushbu kod parchasini Arduino -ga yuklang va ishga tushiring:

#include void analogWriteCallback (bayt pin, int qiymati) {if (IS_PIN_PWM (pin)) {pinMode (PIN_TO_DIGITAL (pin), OUTPUT); analogWrite (PIN_TO_PWM (pin), qiymat); }} void setup () {Firmata.setFirmwareVersion (FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION); Firmata.attach (ANALOG_MESSAGE, analogWriteCallback); Firmata.begin (57600);} void loop () {Firmata.sendAnalog (0, 800);}

Bu Firmata bilan muloqot qilish uchun zarur bo'lgan minimal minimal. U doimiy ravishda Abletondagi Firmata qurilmasining 0 portiga 800 (1024 dan) chiqishini yuboradi. Agar siz Abletonda Firmata qurilmasi ochiq bo'lsa, bu kodni Arduino -ga yuklasangiz, u yuqoridagi rasmga o'xshash bo'lishi kerak. (Qiymatlarni ko'rish uchun Abletondagi 0 -portni xaritaga joylashtiring.)

Siz ushbu portga olingan kirish va Ableton qurilmasining qiymati o'rtasidagi xaritani qo'shish uchun Ableton-dagi xarita tugmachasini va keyin Firmata-ga mos keladigan har qanday qurilmani bosishingiz mumkin. Oson misollar, ovoz effektidagi har qanday trekning ovozini yoki terishni o'z ichiga oladi. Kashf eting va xaritada nimani topishingiz mumkinligini ko'ring!

7 -qadam: Musiqaga qo'l harakatlaringiz bilan ta'sir qiling

Musiqaga qo'l harakati bilan ta'sir qiling!
Musiqaga qo'l harakati bilan ta'sir qiling!

Bu vaqtga kelib, siz Abletonda musiqa, Arduino -da Firmata ssenariysi va akselerometr qo'lqopi bo'lishi kerak. Keling, musiqa qilaylik!

Abletondagi Arduino qurilmasining portlarini har xil narsalarga joylashtiring (men trekning hajmini taklif qilaman), so'ngra Arduino -dan har bir portga ma'lumotlarni yuborish uchun kod satrlarini qo'shing.

Firmata.sendAnalog (port, volumeLevel);

Har bir Firmata porti uchun shunday koddan foydalaning.

Agar siz oddiy ish qilmoqchi bo'lsangiz, akselerometr qiymatlarini qayta ishlanmagan holda Ableton portlariga yuborishingiz va ularni o'sha erdan xaritaga qo'yishingiz mumkin. Keyinchalik murakkab tajriba uchun siz qaror qabul qilishingiz mumkin: akselerometrning qaysi qiymatlari tovushlarni, qanday va qachon ishga tushirishi kerak?

Keyin Abletonning barcha looplarini o'ynang, Arduino kodingizni ishlating va raqsga tushing!

(Ogohlantirishlar: agar siz qo'shiqingiz uchun har qanday murakkab algoritmni yaratishni rejalashtirmoqchi bo'lsangiz, sozlashni ko'p vaqt talab qilishi mumkin. "Raqsga tushish" kutilganidan kamroq aniq bo'lishi mumkin.)

8 -qadam: trek klassi (bonus!)

Agar siz ovoz balandligining pasayishiga qarshi bo'lmasangiz yoki uni kamaytirishning boshqa usuli bo'lsa, bu bosqichni o'tkazib yuboring. Aks holda, o'qing!

Men ovoz balandligidan ovozni to'liq o'chirishga o'tish yoqimsiz tovushlarni keltirib chiqaradi va ovozni asta -sekin o'chirib qo'yish yoqimli. Biroq, Arduinoning sinxron dasturlash muhitida buni qilish qiyin. Shunday qilib, poppingni yo'q qilish uchun ba'zi kodlar:

class Track {public: int volume; int volumeGoal; int updateSpeed; Track () {tovush = 0; volumeGoal = 0; updateSpeed = 0; } void setVolumeGoal (int goal) {volumeGoal = goal; } int getVolumeGoal () {return volumeGoal; } bo'sh bo'sh setUpdateSpeed (int fastness) {updateSpeed = tezlik; } int getVolume () {qaytish hajmi; } void updateVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } if if ((volume = updateSpeed)) {volume += updateSpeed; }} bo'sh ovozsiz (int fastness) {volumeGoal = 50; updateSpeed = tezlik; } void full (int fastness) {volumeGoal = 950; updateSpeed = tezlik; }};

Har bir trekning joriy hajmi, maqsadli hajmi va shu maqsadli hajmga qarab harakatlanish tezligi bor. Agar trekning ovozini o'zgartirmoqchi bo'lsangiz, setVolumeGoal () ga qo'ng'iroq qiling. Har safar Arduino -da loop () funktsiyasini ishga tushirganingizda, har bir trekda updateVolume () ga qo'ng'iroq qiling va keyin bu ma'lumotlarni getVolume () bilan Firmata -ga yuboring. Tezroq yoki asta -sekin yo'qolishi uchun yangilanish tezligini o'zgartiring! Iloji bo'lsa, ovoz balandligini 0 ga qo'yishdan saqlaning; Buning o'rniga, uni juda past qiymatga qo'ying (mute () da standart qiymati 100).

9 -qadam: Track Length, Beats va boshqalar (bonus!)

Loyihangizdan kelib chiqadigan tovushni eshitishni osonlashtirish uchun siz ko'p ishlarni qilishingiz mumkin. Mana bir nechta variant:

Siz qo'shiq qancha vaqt ishlaganini kuzatishingiz mumkin. Buni amalga oshirish uchun siz qo'shiq qachon boshlanganini aniqlashingiz kerak; Setup () funktsiyasida kodni qo'l harakatini sezmaguncha ishlashini kechiktiradigan vaqtinchalik tsiklni tavsiya qilaman. Millis () yordamida qo'shiqning boshlanish vaqtini o'zgaruvchida saqlang va har safar () aylanganda qancha vaqt davom etganligini tekshiring. Siz buni qo'shiqning ma'lum vaqtlarida ba'zi funktsiyalarni yoqish yoki o'chirish uchun ishlatishingiz mumkin.

Agar siz tsikllaringiz millisekundlarda qanchalik uzunligini bilsangiz, qo'shiq tuzilishini yanada aniqroq tushunish uchun siz qancha tsikllardan o'tganingizni kuzatib borishingiz mumkin!

Siz duch kelishi mumkin bo'lgan yana bir muammo - trekni qachon boshlash va to'xtatish. Men bu masalani qo'shiq hozirda qanday o'lchovda ekanligini kuzatib borish orqali hal qildim. Keyin men darhol imo -ishoradan so'ng, har qanday sonda treklarni ijro etishim mumkin edi. Bu ishlar ancha silliq o'tishini ta'minlaydi. Mana bir misol:

if (millis () - lastLoop> = 4000) {halqa += 1; lastLoop = millis (); uchun (int j = 0; j <8; j ++) {beatNow [j] = noto'g'ri; }} urish = (millis () - lastLoop) / 250; if (beat! = lastBeat) {lastBeat = beat; beatsLeft -= 1; }

Hajmlarni beatNow [beat] va/yoki beatsLeft qiymatlariga mos ravishda yangilaganingizga ishonch hosil qiling. Bu qo'llanmada deyarli hamma narsani o'z ichiga olgan misol kodi, bundan tashqari, agar siz uni amalda ko'rishni xohlasangiz, ilova qilinadi.

Tavsiya: