Përmbajtje:

Doreza e Vallëzimit: 9 Hapa
Doreza e Vallëzimit: 9 Hapa

Video: Doreza e Vallëzimit: 9 Hapa

Video: Doreza e Vallëzimit: 9 Hapa
Video: Крушение четырёхмачтового судна Pamir 2024, Korrik
Anonim
Doreza e Vallëzimit
Doreza e Vallëzimit

Në këtë tutorial, unë do t'ju tregoj duke hartuar një dorezë që ju lejon të ndërveproni me muzikën përmes vallëzimit. Ju do të ndërtoni një dorezë të mundësuar nga akselerometri, do të krijoni një përbërje në Ableton dhe pastaj do t'i lidhni të dyja në një mënyrë aq komplekse ose të thjeshtë sa të dëshironi!

Furnizimet

  • Ableton (ose provë falas)
  • Një Arduino
  • Kabllo kërcyes
  • Makine per ngjitjen e metalit
  • Kartoni
  • Armë me zam të nxehtë
  • Shumë imagjinatë

Hapi 1: Koncepti

Ky projekt është krijuar për të qenë argëtues. Nëse mënyra se si funksionon projekti shembullor në këtë tutorial nuk është argëtuese për ju, ridizajnoni atë!

Unë rekomandoj të vishni disa nga këngët tuaja të preferuara, të lëvizni duart drejt tyre dhe të shihni se çfarë ndodh. A i lëviz duart lart-poshtë? Krah për krah? Ngadalë apo shpejt? Cilat aspekte të muzikës ju bëjnë të dëshironi të lëvizni duart? Nëse keni një listë të këtyre të shkruara, me siguri do të jeni në gjendje të gjeni disa mënyra për të përfshirë lëvizjet që ju pëlqejnë në algoritmet tuaja eventuale.

Këtu janë lëvizjet që kam përdorur:

  • Një lëvizje e shpejtë lart e poshtë shkakton fillimin e këngës, daulleve ose basit. (Këto ndodhin në pika të ndryshme të këngës, jo domosdoshmërisht njëkohësisht!)
  • Një lëvizje e ngadaltë, e pjerrët nga njëra anë në tjetrën shkakton një tingull më jehonë dhe me zë të lartë.
  • Në një pjesë të veçantë të këngës, përkulja e dorës lart e bën muzikën të qetësohet - kështu që e kam "kapur" atë në grushtin tim të mbyllur.

Përdorni këto ose bëni tuajin!

(Ju lutemi vini re: ky mësim nuk mbulon se si të gjeneroni muzikë ose melodi drejtpërdrejt në Ableton! Nëse i përmbaheni këtyre udhëzimeve, do të jeni në gjendje të rrisni/ulni vëllimin e këngëve ose aplikimin e efekteve audio.)

Hapi 2: Përgatitni Përshpejtuesin

Përgatitni Akselerometrin
Përgatitni Akselerometrin

Së pari, kuptoni se çfarë lloj akselerometri keni. Kam përdorur këtë; çdo akselerometër me tre boshte do të bëjë. (Ose provoni një lloj tjetër sensori nëse doni të egërsoheni.) Sigurohuni që dini të lexoni të dhënat e përshpejtuesit nga Arduino. Ju mund të keni nevojë të shkarkoni një bibliotekë për përshpejtuesin tuaj nëse përdor ndonjë gjë më komplekse sesa hyrja analoge.

Pasi ta keni testuar me një dërrasë buke, bashkoni telat e shkurtër të koduar me ngjyra në kunjat e përshpejtuesit tuaj. Vendosni një tel të kuq në kunjin e energjisë, një tel të zi në kunjin e tokëzimit dhe çdo tela tjetër të nevojshme për komunikimin e përshpejtuesit. (Nëse keni një përshpejtues I2C, ky do të jetë kunja SCL dhe SDA. Nëse keni një akselerometër analog, ka të ngjarë të ketë një kunj për secilën nga daljet x, y dhe z.) Sigurohuni që saldimi juaj të jetë i fortë dhe që rruazat të mos mbivendosen midis kunjave ngjitur.

Hapi 3: Ndërtoni dorezën

Ndërtoni Dorezën
Ndërtoni Dorezën

Pritini një copë kartoni të hollë ose letër të trashë në një drejtkëndësh pak më të madh se përshpejtuesi juaj. Ngjiteni akselerometrin në karton, duke u siguruar që po vendosni zam në pjesën e poshtme. Pastaj, ngjiteni përshpejtuesin e mbështetur në karton në pjesën e pasme të dorezës tuaj. Qepni çdo tel lirshëm në kyçin e dorezës për të lehtësuar tensionin në përshpejtuesin, dhe pastaj doreza juaj është gati. Lidheni atë me tela më të gjatë në mënyrë që të keni hapësirë të mjaftueshme për të lëvizur dorën kur është e lidhur.

Hapi 4: Kompozoni në Ableton

Tani është koha për të kompozuar këngën që përfundimisht do të përdorni dorezën për të kontrolluar. Unë rekomandoj sythe Ableton që të gjitha tingëllojnë mirë së bashku, por mund të përdoren për t'u ndërtuar gradualisht: provoni melodi, akorde, bas dhe perkusion. Ju do të jeni në gjendje të përdorni dorezën tuaj për të kontrolluar kur secili lak luan ose jo.

Nëse mund të mendoni për ndonjë lloj tingujsh interesantë që herë pas here të përfshihen në një këngë, si një efekt tingulli i çuditshëm ose një instrument jokonvencional, provoni të shtoni edhe një ose dy prej tyre! Ju mund t'i lidhni ato me lëvizje më pak të zakonshme të duarve për të sjellë diçka interesante herë pas here.

Këtu keni një lidhje me përbërjen time të pajtueshme me Arduino, në rast se nuk doni të shkruani një nga tuajat:

(Fatkeqësisht, të të mësosh Ableton nuk është brenda fushës së mësimit. Megjithatë, ka shumë video të mira si për të dalë atje, dhe Ableton ka një provë falas 90-ditore! Unë rekomandoj këtë video.)

Hapi 5: Filloni të përdorni Firmata

Filloni të përdorni Firmata
Filloni të përdorni Firmata

Për të mundësuar që Arduino juaj të komunikojë me Ableton, do t'ju duhet të përdorni një bibliotekë të quajtur Firmata. Ju gjithashtu do të duhet të shkarkoni Kutinë e Lidhjes për Ableton.

Në Ableton, klikoni Pakot> Kompleti i lidhjes> Pajisjet në menunë në pjesën e sipërme të majtë, dhe pastaj klikoni dy herë në pajisjen e parë (Arduino) për ta shtuar atë. Sigurohuni që mbani mend se në cilën pjesë Ableton keni shtuar pajisjen!

Hapi 6: Testoni firmat

Firmata Testi
Firmata Testi

Së pari, ne do të testojmë dhe sigurohemi që Arduino juaj po komunikon me Ableton. Ngarko këtë fragment kodi në Arduino tuaj dhe drejtojeni atë:

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

Ky është minimumi i nevojshëm për të komunikuar me Firmata. Ai vazhdimisht dërgon një dalje prej 800 (nga 1024) në portin 0 të pajisjes Firmata në Ableton. Nëse e ngarkoni këtë kod në Arduino tuaj ndërsa keni një pajisje Firmata të hapur në Ableton, duhet të duket si imazhi i mësipërm. (Hartoni portën 0 për çdo gjë në Ableton për të qenë në gjendje të shihni vlerat.)

Ju mund të klikoni butonin Harta dhe më pas çdo pajisje të pajtueshme me Firmata në Ableton për të shtuar një hartë midis hyrjes së marrë në atë port dhe vlerës së asaj pajisje Ableton. Shembujt e thjeshtë përfshijnë vëllimin e çdo pjese ose ndonjë telefonuesi brenda një efekti audio. Eksploroni dhe shikoni se për çfarë mund të gjeni në hartë!

Hapi 7: Ndikoni muzikën me lëvizjet e duarve tuaja

Ndikoni Muzikën me Lëvizjet tuaja të Duarve!
Ndikoni Muzikën me Lëvizjet tuaja të Duarve!

Deri në këtë kohë, duhet të keni pak muzikë në Ableton, një skenar Firmata në Arduino tuaj dhe një fiks të akselerometrit të bashkangjitur. Le të bëjmë pak muzikë!

Hartoni portat e pajisjes Arduino në Ableton për gjëra të ndryshme (unë sugjeroj vëllimin e gjurmimit), dhe më pas shtoni linja kodesh për të dërguar të dhëna në secilën portë nga Arduino.

Firmata.sendAnalog (porta, vëllimiNiveli);

Përdorni kodin si ky për secilën portë Firmata.

Nëse doni të bëni diçka të thjeshtë, mund t'i dërgoni vlerat e përshpejtuesit të papërpunuara në portet Ableton dhe t'i hartoni ato nga atje. Për një përvojë më të sofistikuar, mund të vendosni: cilat vlera të akselerometrit duhet të shkaktojnë tinguj, si dhe kur?

Pastaj luani të gjitha sythet tuaja Ableton, drejtoni kodin tuaj Arduino dhe vallëzoni!

(Mohim: nëse po planifikoni të krijoni ndonjë lloj algoritmi kompleks për këngën tuaj, mund të duhet shumë kohë për të rregulluar mirë. "Dance away" mund të jetë më pak i saktë se sa ishte parashikuar.)

Hapi 8: Klasa e Gjurmëve (bonus!)

Nëse nuk e keni parasysh që vëllimi të shfaqet ose keni një mënyrë tjetër për ta zbutur atë, kaloni këtë hap. Përndryshe, lexoni!

Vura re se kalimi i volumit nga i heshtur në i plotë me një lëvizje krijon disa tinguj të pakëndshëm që shfaqen, dhe është mirë të jesh në gjendje të zbehesh në vëllim më gradualisht. Sidoqoftë, është e vështirë ta bësh këtë në mjedisin programues sinkron të Arduino. Pra, këtu është një kod për të bërë që popping të largohet:

klasa Track {public: int volume; int volumeGol; int updateSpeed; Pjesë () {vëllimi = 0; volumiGol = 0; updateSpeed = 0; } void setVolumeGoal (qëllimi int) {volumeGoal = qëllimi; } int getVolumeGoal () {return volumeGoal; } void setUpdateSpeed (int fastness) {updateSpeed = qëndrueshmëri; } int getVolume () {vëllimi i kthimit; } void updateVolume () {if ((volume> volumeGoal) && ((volumi - volumeGoal)> = updateSpeed)) {volumi - = updateSpeed; } else if ((volumi = updateSpeed)) {vëllimi += updateSpeed; }} void heshtje (int fastness) {volumeGoal = 50; updateSpeed = qëndrueshmëri; } void i plotë (int fastness) {volumeGoal = 950; updateSpeed = qëndrueshmëri; }};

Çdo këngë ka një vëllim aktual, një vëllim objektivi dhe një shpejtësi me të cilën po lëviz drejt atij vëllimi të qëllimit. Kur dëshironi të ndryshoni volumin e një pjese, telefononi setVolumeGoal (). Sa herë që drejtoni funksionin loop () në Arduino tuaj, telefononi updateVolume () në çdo këngë dhe më pas dërgojeni atë informacion në Firmata me getVolume (). Ndryshoni shpejtësinë e përditësimit për zbehje më të shpejtë ose më graduale! Gjithashtu, shmangni vendosjen e volumit në 0 nëse mundeni; në vend të kësaj, vendoseni në një vlerë shumë të ulët (parazgjedhja në heshtje () është 100).

Hapi 9: Ndiqni gjatësinë, rrahjet dhe më shumë (bonus!)

Ju mund të bëni shumë gjëra që tingulli që vjen nga projekti juaj të jetë më i lehtë për t'u dëgjuar. Këtu janë disa opsione:

Ju mund të gjurmoni sa kohë kënga ka filluar. Për ta bërë këtë, do të duhet të kuptoni kur filloi kënga; Unë rekomandoj një lak while në funksionin setup () i cili vonon funksionimin e kodit tuaj derisa të ndiejë lëvizjen e dorës. Ruani kohën e fillimit të këngës në një ndryshore duke përdorur millis () dhe kontrolloni sa kohë ka qenë duke vazhduar sa herë që bëni lak (). Ju mund ta përdorni këtë për të aktivizuar ose çaktivizuar veçori të caktuara në kohë të caktuara të këngës.

Nëse e dini se sa kohë janë sythet tuaja në milisekonda, ju gjithashtu mund të gjurmoni se sa sythe keni kaluar për një kuptim më të nuancuar të strukturës së këngës!

Një çështje tjetër e mundshme që mund të hasni është kur të filloni dhe ndaloni të luajë një këngë. Unë e zgjidha këtë duke mbajtur gjurmët se në cilën ritëm ishte kënga aktualisht. Pastaj mund të luaja këngë për çdo numër të rrahjeve pas një gjesti, në vend që t'i ndërprisja menjëherë. Kjo i bën gjërat të rrjedhin shumë më mirë. Këtu është një shembull:

if (millis () - lastLoop> = 4000) {sythe += 1; lastLoop = millis (); për (int j = 0; j <8; j ++) {beatNow [j] = false; }} beat = (millis () - lastLoop) / 250; nëse (mundi! = lastBeat) {lastBeat = mundi; rrehMajtas -= 1; }

Sigurohuni që të përditësoni vëllimet në përputhje me vlerat e beatNow [beat] dhe/ose beatsLeft. Shembulli i kodit që përfshin pothuajse gjithçka në këtë tutorial, plus disa, është i bashkangjitur në rast se dëshironi ta shihni në praktikë.

Recommended: