Съдържание:

Танцова ръкавица: 9 стъпки
Танцова ръкавица: 9 стъпки

Видео: Танцова ръкавица: 9 стъпки

Видео: Танцова ръкавица: 9 стъпки
Видео: УРОЦИ ПО ФОЛКЛОРНИ ТАНЦИ - ЕПИЗОД 9 2024, Ноември
Anonim
Танцова ръкавица
Танцова ръкавица

В този урок ще ви преведа през проектирането на ръкавица, която ви позволява да взаимодействате с музиката чрез танц. Ще изградите ръкавица с активиран акселерометър, ще проектирате композиция в Ableton и след това ще свържете двете по толкова сложен или прост начин, колкото искате!

Консумативи

  • Ableton (или безплатен пробен период)
  • Ардуино
  • Кабелни кабели
  • Поялник
  • Картон
  • Пистолет за горещо лепило
  • Много въображение

Стъпка 1: Концепция

Този проект е проектиран да бъде забавен. Ако начинът, по който работи примерният проект в този урок, не ви е забавен, препроектирайте го!

Препоръчвам да пуснете някои от любимите си песни, да преместите ръцете си към тях и да видите какво се случва. Движите ли ръцете си нагоре-надолу? Страна до страна? Бавно или бързо? Какви аспекти на музиката ви карат да движите ръцете си? Ако имате списък с тях, вероятно ще можете да измислите някои начини да включите движенията, които ви харесват, във вашите евентуални алгоритми.

Ето движенията, които използвах:

  • Бързо движение нагоре-надолу задейства началото на песента, барабани или бас. (Това се случва в различни точки на песента, не непременно едновременно!)
  • Бавното, наклонено движение отстрани на страна задейства по-ехо, висок звук.
  • В един конкретен участък от песента, накланянето на ръката ми нагоре прави музиката по -тиха - така че я „хванах“в затворения си юмрук.

Използвайте тези или направете своя собствена!

(Моля, обърнете внимание: този урок не обхваща как да генерирате музика или мелодии на живо в Ableton! Ако се придържате към тези инструкции, ще можете само да увеличите/намалите силата на звука на песни или прилагането на аудио ефекти.)

Стъпка 2: Подгответе акселерометъра

Подгответе акселерометъра
Подгответе акселерометъра

Първо, разберете какъв тип акселерометър имате. Използвах този; това ще направи всеки триосен акселерометър. (Или опитайте друг тип сензор, ако искате да се побъркате.) Уверете се, че знаете как да четете данните за акселерометъра от Arduino. Може да се наложи да изтеглите библиотека за вашия акселерометър, ако използва нещо по -сложно от аналоговия вход.

След като сте го тествали с макет, запоявайте къси цветно кодирани проводници в щифтовете на вашия акселерометър. Поставете червен проводник в захранващия щифт, черен проводник в заземяващия щифт и всички други необходими проводници за комуникация с акселерометър. (Ако имате I2C акселерометър, това ще бъдат SCL и SDA щифтовете. Ако имате аналогов акселерометър, вероятно ще има по един щифт за всеки от изходите x, y и z.) Уверете се, че спойката ви е твърда и че мънистата не се припокриват между съседни щифтове.

Стъпка 3: Изградете ръкавицата

Изградете ръкавицата
Изградете ръкавицата

Нарежете парче тънък картон или дебела хартия в правоъгълник, малко по -голям от вашия акселерометър. Залепете акселерометъра към картона, като се уверите, че поставяте лепило на дъното. След това залепете акселерометъра с картонена основа на гърба на ръкавицата. Зашийте всеки проводник свободно към китката на ръкавицата, за да облекчите напрежението на акселерометъра и тогава вашата ръкавица е готова. Свържете го към по -дълги проводници, за да имате достатъчно място, за да преместите ръката си, когато е включена.

Стъпка 4: Композирайте в Ableton

Сега е време да композирате песента, която в крайна сметка ще използвате с ръкавицата, за да контролирате. Препоръчвам Ableton цикли, които звучат добре заедно, но могат да се използват за постепенно изграждане: опитайте мелодия, акорди, бас и перкусии. Ще можете да използвате ръкавицата си, за да контролирате дали всеки цикъл свири или не.

Ако се сетите за интересни видове звуци, които от време на време да включвате в песен, като странен звуков ефект или нетрадиционен инструмент, опитайте да добавите и един или два от тях! Можете да ги свържете с по-рядко срещани движения на ръцете, за да внесете от време на време нещо интересно.

Ето линк към моята съвместима с Arduino композиция, в случай че не искате да напишете своя собствена:

(За съжаление преподаването на Ableton не е в обхвата на урока. Въпреки това има много добри видеоклипове с инструкции и Ableton има 90-дневен безплатен пробен период! Препоръчвам този видеоклип.)

Стъпка 5: Започнете да използвате Firmata

Започнете да използвате Firmata
Започнете да използвате Firmata

За да разрешите на вашия Arduino да комуникира с Ableton, ще трябва да използвате библиотека, наречена Firmata. Също така ще трябва да изтеглите комплекта за връзка за Ableton.

В Ableton щракнете върху Packs> Connection Kit> Devices в менюто в горния ляв ъгъл и след това щракнете двукратно върху първото устройство (Arduino), за да го добавите. Уверете се, че сте запомнили към коя песен на Ableton сте добавили устройството!

Стъпка 6: Тествайте Firmata

Тествайте Firmata
Тествайте Firmata

Първо ще тестваме и ще се уверим, че вашият Arduino комуникира с Ableton. Качете този кодов фрагмент във вашия Arduino и го стартирайте:

#include void analogWriteCallback (байтов щифт, int стойност) {if (IS_PIN_PWM (pin)) {pinMode (PIN_TO_DIGITAL (pin), OUTPUT); analogWrite (PIN_TO_PWM (пин), стойност); }} 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);}

Това е минимумът, необходим за комуникация с Фирмата. Той непрекъснато изпраща изход от 800 (от 1024) към порт 0 на устройството Firmata в Ableton. Ако качите този код на вашия Arduino, докато имате отворено устройство Firmata в Ableton, той трябва да изглежда като изображението по -горе. (Картирайте порт 0 към всичко в Ableton, за да можете да видите стойностите.)

Можете да щракнете върху бутона Карта и след това всяко съвместимо с Firmata устройство в Ableton, за да добавите съпоставяне между получените данни към този порт и стойността на това Ableton устройство. Лесните примери включват силата на звука на всяка песен или набиране в рамките на аудио ефект. Разгледайте и вижте какво можете да намерите, за да картографирате!

Стъпка 7: Влияйте на музиката с движенията на ръцете си

Влияйте на музиката с движенията на ръцете си!
Влияйте на музиката с движенията на ръцете си!

По това време трябва да имате малко музика в Ableton, скрипт на Firmata на вашия Arduino и прикрепена ръкавица за акселерометър. Нека да направим малко музика!

Картирайте портовете на устройството Arduino в Ableton към различни неща (предлагам проследяване на силата на звука) и след това добавете редове код за изпращане на данни към всеки порт от Arduino.

Firmata.sendAnalog (порт, томLevel);

Използвайте този код за всеки порт на Firmata.

Ако искате да направите нещо просто, можете да изпратите стойностите на акселерометъра необработени до портовете на Ableton и да ги картографирате от там. За по -сложно изживяване можете да решите: какви стойности на акселерометъра трябва да задействат звуци, как и кога?

След това пуснете всичките си цикли на Ableton, стартирайте кода на Arduino и танцувайте!

(Отказ от отговорност: ако планирате да създадете някакъв сложен алгоритъм за песента си, може да отнеме много време за фина настройка. „Dance away“може да е по-малко точен от очакваното.)

Стъпка 8: Класът на песента (бонус!)

Ако нямате нищо против изскачането на силата на звука или имате друг начин да го смекчите, пропуснете тази стъпка. Иначе чети нататък!

Забелязах, че превключването на силата на звука от заглушен до пълен наведнъж създава някои неприятни пукащи звуци и е хубаво да можете да намалите силата на звука по -постепенно. Трудно е обаче да се направи това в синхронната среда за програмиране на Arduino. Ето няколко кода, които да накарат изскачането да изчезне:

class Track {public: int том; int volumeGoal; int updateSpeed; Track () {том = 0; volumeGoal = 0; updateSpeed = 0; } void setVolumeGoal (int цел) {volumeGoal = цел; } int getVolumeGoal () {връщам volumeGoal; } void setUpdateSpeed (int устойчивост) {updateSpeed = скорост } int getVolume () {върнат том; } void updateVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } иначе if ((том = updateSpeed)) {том += updateSpeed; }} void mute (int устойчивост) {volumeGoal = 50; updateSpeed = устойчивост; } void full (int устойчивост) {volumeGoal = 950; updateSpeed = устойчивост; }};

Всяка песен има текущ обем, обем на целта и скорост, с която се движи към този обем на целта. Когато искате да промените силата на звука на песен, обадете се на setVolumeGoal (). Всеки път, когато стартирате функцията loop () във вашия Arduino, извикайте updateVolume () на всяка песен и след това изпратете тази информация до Firmata с getVolume (). Променете скоростта на актуализиране за по -бързо или по -постепенно затихване! Също така, ако можете, избягвайте настройката на силата на звука на 0; вместо това го задайте на много ниска стойност (по подразбиране в mute () е 100).

Стъпка 9: Дължина на песента, ритъм и още (бонус!)

Можете да направите много неща, за да направите звука, получен от вашия проект, по -лесен за слушане. Ето няколко опции:

Можете да проследите колко дълго се изпълнява песента. За да направите това, ще трябва да разберете кога започва песента; Препоръчвам цикъл while във функцията setup (), който забавя изпълнението на кода ви, докато не усети движение на ръката. Съхранявайте началния час на песента в променлива с помощта на millis () и проверявайте колко време е продължило всеки път, когато циклирате (). Можете да използвате това, за да активирате или деактивирате определени функции в определени часове на песента.

Ако знаете колко дълги са вашите цикли в милисекунди, можете също да проследите колко цикли сте преминали за по -нюансирано разбиране на структурата на песента!

Друг потенциален проблем, който може да срещнете, е кога да стартирате и спрете пускането на песен. Реших това, като проследих в кой ритъм на мярка се намира песента в момента. След това можех да пускам песни за произволен брой удари след жест, вместо да го прекъсна веднага. Това прави нещата да протичат много по -гладко. Ето един пример:

if (millis () - lastLoop> = 4000) {цикли += 1; lastLoop = millis (); for (int j = 0; j <8; j ++) {beatNow [j] = невярно; }} ритъм = (millis () - lastLoop) / 250; if (beat! = lastBeat) {lastBeat = ритъм; beatsLeft -= 1; }

Уверете се, че сте актуализирали обемите съответно до стойностите на beatNow [beat] и/или beatsLeft. Примерен код, включващ почти всичко в този урок, плюс някои, е приложен, в случай че искате да го видите на практика.

Препоръчано: