Բովանդակություն:

Պարային ձեռնոց ՝ 9 քայլ
Պարային ձեռնոց ՝ 9 քայլ
Anonim
Պարային ձեռնոց
Պարային ձեռնոց

Այս ձեռնարկում ես կխոսեմ ձեզ ձեռնոցի ձևավորման միջոցով, որը թույլ կտա ձեզ երաժշտության հետ շփվել պարի միջոցով: Դուք կկառուցեք արագացուցիչի միացման ձեռնոց, կկազմեք կոմպոզիցիա Ableton- ում և այնուհետև դրանք կկապեք այնքան բարդ կամ պարզ եղանակով, որքան ցանկանում եք:

Պարագաներ

  • Ableton (կամ անվճար փորձարկում)
  • Արդուինո
  • Թռիչքային մալուխներ
  • Sոդման երկաթ
  • Ստվարաթուղթ
  • Տաք սոսինձ ատրճանակ
  • Շատ երեւակայություն

Քայլ 1: Հայեցակարգ

Այս նախագիծը նախատեսված է զվարճալի լինելու համար: Եթե այս ձեռնարկի օրինակելի նախագիծը ձեզ համար զվարճալի չէ, վերափոխեք այն:

Խորհուրդ եմ տալիս տեղադրել ձեր սիրած երգերից մի քանիսը, ձեռքերը շարժել դեպի դրանք և տեսնել, թե ինչ է տեղի ունենում: Ձեռքերդ վեր ու վար եք շարժո՞ւմ: Կողք-կողքի՞: Դանդաղ, թե՞ արագ: Երաժշտության ո՞ր կողմերն են ստիպում շարժել ձեռքերը: Եթե ունեք գրված դրանց ցանկը, հավանաբար կկարողանաք պարզել որոշ եղանակներ `ձեր վայելած շարժումները ձեր վերջնական ալգորիթմների մեջ ներառելու համար:

Ահա այն շարժումները, որոնք ես օգտագործել եմ.

  • Արագ վեր ու վար արագ շարժումը խթանում է երգի, հարվածային գործիքների կամ բասի սկիզբը: (Դրանք տեղի են ունենում երգի տարբեր կետերում, պարտադիր չէ, որ միաժամանակ):
  • Կողք-կողքի դանդաղ, թեք շարժումը առաջացնում է ավելի արձագանքող, բարձր ձայն:
  • Երգի մի առանձին հատվածում, ձեռքս դեպի վեր թեքելով, երաժշտությունը հանգիստ է դառնում, այնպես որ ես այն «բռնել եմ» փակ բռունցքիս մեջ:

Օգտագործեք դրանք կամ պատրաստեք ձեր սեփականը:

(Խնդրում ենք նկատի ունենալ. Այս ձեռնարկը չի ներառում Ableton- ում կենդանի երաժշտություն կամ մեղեդիներ ստեղծելու եղանակը: Եթե հետևեք այս հրահանգներին, ապա կկարողանաք միայն մեծացնել/նվազեցնել հետքերի ծավալը կամ ձայնային էֆեկտների կիրառումը):

Քայլ 2: Պատրաստեք արագացուցիչը

Պատրաստեք արագացուցիչը
Պատրաստեք արագացուցիչը

Նախ, պարզեք, թե ինչ տիպի արագաչափաչափ ունեք: Ես օգտագործել եմ այս մեկը; ցանկացած երեք առանցքի արագացուցիչ կարող է անել: (Կամ փորձեք այլ տեսակի սենսորներ, եթե ցանկանում եք վայրենի դառնալ) Համոզվեք, որ գիտեք, թե ինչպես կարդալ արագացուցիչի տվյալները Arduino- ից: Հնարավոր է, անհրաժեշտ լինի ներբեռնել գրադարան ձեր արագացուցիչի համար, եթե այն օգտագործում է ավելի բարդ բան, քան անալոգային մուտքը:

Այն հացաթղթով փորձարկելուց հետո կարճ գույնի կոդով լարերը կպցրեք ձեր արագացուցիչի կապում: Տեղադրեք կարմիր մետաղալար հոսանքի պինում, սև մետաղալար գետնին և արագացուցիչի հաղորդակցության համար անհրաժեշտ ցանկացած այլ լար: (Եթե ունեք I2C արագացուցիչ, սա կլինի SCL և SDA կապերը: Եթե ունեք անալոգային արագացուցիչ, ամենայն հավանականությամբ x, y և z ելքերից յուրաքանչյուրի համար կլինի մեկ կապում): Համոզվեք, որ ձեր զոդն ամուր է և որ ուլունքները չեն համընկնում հարակից քորոցների միջև:

Քայլ 3: Կառուցեք ձեռնոցը

Կառուցեք ձեռնոցը
Կառուցեք ձեռնոցը

Կտրեք մի կտոր բարակ ստվարաթուղթ կամ հաստ թուղթ ձեր արագացուցիչից մի փոքր ավելի մեծ ուղղանկյունի մեջ: Կպցրեք արագացուցիչը ստվարաթղթին ՝ համոզվելով, որ ներքևում սոսինձ եք դնում: Այնուհետև ստվարաթղթով ամրացված արագաչափը սոսնձեք ձեր ձեռնոցի հետևի մասում: Արագացուցիչի լարվածությունը թեթևացնելու համար յուրաքանչյուր մետաղալար կարեք ձեռնոցի դաստակին, այնուհետև ձեր ձեռնոցը պատրաստ է: Միացրեք այն ավելի երկար լարերին, որպեսզի միացված տարածք ունենաք, որպեսզի ձեր ձեռքը շարժվի:

Քայլ 4: Կազմեք Ableton- ում

Այժմ ժամանակն է երգը կազմելու, որը, ի վերջո, ձեռնոցը կօգտագործես վերահսկելու համար: Ես խորհուրդ եմ տալիս Ableton- ի օղակները, որոնք բոլորը միասին լավ են հնչում, բայց կարող են օգտագործվել աստիճանաբար կառուցելու համար. Փորձեք մեղեդի, ակորդներ, բաս և հարվածային գործիքներ: Դուք կկարողանաք օգտագործել ձեր ձեռնոցը ՝ յուրաքանչյուր հանգույց նվագելու կամ չկատարելու համար:

Եթե կարող եք մտածել որևէ հետաքրքիր հնչյունների մասին, որոնք երբեմն պետք է ներառվեն երգի մեջ, ինչպես տարօրինակ ձայնային էֆեկտը կամ ոչ սովորական գործիքը, փորձեք ավելացնել դրանցից մեկ կամ երկուսը: Դուք կարող եք դրանք կապել ձեռքի ավելի քիչ տարածված շարժումներին ՝ երբեմն-երբեմն հետաքրքիր բան բերելու համար:

Ահա հղում դեպի Arduino- ի հետ համատեղելի իմ կոմպոզիցիա, եթե չեք ցանկանում գրել ձեր սեփականը ՝

(Unfortunatelyավոք, ձեզ Ableton- ին սովորեցնելը ձեռնարկի շրջանակներում չէ: Այնուամենայնիվ, կան շատ լավ հնարքներ, և Ableton- ն ունի 90-օրյա անվճար փորձարկում: Ես խորհուրդ եմ տալիս այս տեսանյութը):

Քայլ 5: Սկսեք օգտագործել Firmata- ն

Սկսեք օգտագործել Firmata- ն
Սկսեք օգտագործել Firmata- ն

Ձեր Arduino- ին Ableton- ի հետ հաղորդակցվելու հնարավորություն ընձեռելու համար հարկավոր է օգտագործել Firmata անունով գրադարանը: Դուք նաև պետք է ներբեռնեք Ableton- ի միացման հավաքածուն:

Ableton- ում կտտացրեք Փաթեթներ> Միացման հավաքածու> Սարքեր վերևի ձախ ընտրացանկում, այնուհետև կրկնակի կտտացրեք առաջին սարքի (Arduino) վրա ՝ այն ավելացնելու համար: Համոզվեք, որ հիշում եք, թե որ Ableton- ի հետքն եք ավելացրել սարքը:

Քայլ 6: Փորձարկեք ֆիրմաները

Փորձնական ֆիրմաներ
Փորձնական ֆիրմաներ

Նախ, մենք փորձարկելու և համոզվելու ենք, որ ձեր 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);}

Սա Firmata- ի հետ շփվելու համար անհրաժեշտ նվազագույնն է: Այն անընդհատ ուղարկում է 800 ելք (1024 -ից) Ableton- ի Firmata սարքի 0 պորտին: Եթե դուք վերբեռնում եք այս կոդը ձեր Arduino- ում, մինչդեռ դուք ունեք Firmata սարք, որը բացված է Ableton- ում, այն պետք է նման լինի վերևի պատկերին: (Քարտեզագրեք 0 պորտը Ableton- ում որևէ բանի, որպեսզի կարողանաք տեսնել արժեքները):

Կարող եք սեղմել Քարտեզ կոճակը և այնուհետև Ableton- ի Firmata- ի հետ համատեղ ցանկացած սարք ՝ այդ նավահանգստում ստացված մուտքի և Ableton սարքի արժեքի միջև քարտեզագրում ավելացնելու համար: Հեշտ օրինակները ներառում են ցանկացած հետքի կամ ձայնի էֆեկտի ներսում ցանկացած հավաքման ձայն: Ուսումնասիրեք և տեսեք, թե ինչ կարող եք գտնել քարտեզագրելու համար:

Քայլ 7: Ազդեցեք երաժշտության վրա ձեր ձեռքի շարժումներով:

Ազդեցեք երաժշտությունը ձեր ձեռքի շարժումներով
Ազդեցեք երաժշտությունը ձեր ձեռքի շարժումներով

Այս պահին դուք պետք է ունենաք Ableton- ի երաժշտություն, ձեր Arduino- ում Firmata սցենար և կցված արագացուցիչի ձեռնոց: Եկեք երաժշտություն ստեղծենք:

Ableton- ի Arduino սարքի նավահանգիստները քարտեզագրեք տարբեր իրերի (առաջարկում եմ հետևել ձայնի ձայնին), այնուհետև ավելացրեք կոդի տողեր ՝ Arduino- ից յուրաքանչյուր նավահանգիստ տվյալներ ուղարկելու համար:

Firmata.sendAnalog (նավահանգիստ, ծավալի մակարդակ);

Օգտագործեք այսպիսի կոդը յուրաքանչյուր Firmata նավահանգստի համար:

Եթե ցանկանում եք ինչ -որ պարզ բան անել, կարող եք արագացուցիչի արժեքները չմշակված ուղարկել Ableton նավահանգիստներ և քարտեզագրել դրանք այնտեղից: Ավելի բարդ փորձի համար կարող եք որոշել. Ո՞ր արագացուցիչի արժեքները պետք է հնչյուններ առաջացնեն, ինչպես և երբ:

Հետո խաղացեք ձեր Ableton- ի բոլոր օղակները, գործարկեք ձեր Arduino ծածկագիրը և պարեք հեռու:

(Հրաժարում. Եթե դուք մտադիր եք ստեղծել ցանկացած տեսակի բարդ ալգորիթմ ձեր երգի համար, դա կարող է շատ ժամանակ պահանջել ճշգրիտ ճշգրտման համար: «Dance away»-ը կարող է լինել ավելի քիչ ճշգրիտ, քան նախատեսված էր):

Քայլ 8: Հետագծերի դաս (բոնուս)

Եթե դեմ չեք, որ ձայնը բարձրանա կամ այն մեղմելու այլ միջոց ունեք, բաց թողեք այս քայլը: Հակառակ դեպքում, կարդալ!

Ես նկատեցի, որ ձայնը անջատվածից լրիվ միանգամից փոխելը ստեղծում է որոշ տհաճ հնչյուններ, և հաճելի է, որ կարողանաս աստիճանաբար մարել ձայնի մեջ: Այնուամենայնիվ, դժվար է դա անել Arduino- ի համաժամանակյա ծրագրավորման միջավայրում: Այսպիսով, ահա մի քանի ծածկագիր, որոնք ստիպում են հեռանալ.

class Track {public: int volume; int ծավալԳոլ; int updateSpeed; Հետք () {հատոր = 0; ծավալԳոլ = 0; updateSpeed = 0; } void setVolumeGoal (int նպատակ) {volumeGoal = նպատակ; } int getVolumeGoal () {return volumeGoal; } void setUpdateSpeed (int fastness) {updateSpeed = արագություն; } int getVolume () {վերադարձի ծավալը; } void updateVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } else if ((ծավալը = updateSpeed)) {ծավալը += updateSpeed; }} void լուռ (int fastness) {volumeGoal = 50; updateSpeed = ամրություն; } void full (int fastness) {volumeGoal = 950; updateSpeed = ամրություն; }};

Յուրաքանչյուր ուղի ունի ընթացիկ ձայն, գոլի և արագություն, որով այն շարժվում է դեպի այդ նպատակի ծավալը: Երբ ցանկանում եք փոխել երգի ձայնը, զանգահարեք setVolumeGoal (): Ամեն անգամ, երբ գործարկում եք loop () գործառույթը ձեր Arduino- ում, կանչեք updateVolume () յուրաքանչյուր ուղու վրա, այնուհետև ուղարկեք այդ տեղեկությունները Firmata- ին getVolume () - ով: Փոխեք թարմացման արագությունը ավելի արագ կամ աստիճանաբար մարելու համար: Բացի այդ, հնարավորության դեպքում խուսափեք ձայնի 0 -ից; փոխարենը դրեք այն շատ ցածր արժեքի վրա (լռելյայն կանխադրվածը () 100 է):

Քայլ 9. Հետևեք երկարությանը, զարկերին և ավելին (բոնուս)

Դուք կարող եք շատ բաներ անել, որպեսզի ձեր նախագծից ստացված ձայնը ավելի հեշտ լսելի լինի: Ահա մի քանի տարբերակ.

Կարող եք հետևել, թե որքան ժամանակ է երգը գործում: Դա անելու համար դուք պետք է պարզեք, թե երբ է սկսվել երգը. Խորհուրդ եմ տալիս setup () ֆունկցիայի while loop- ը, որը հետաձգում է ձեր ծածկույթի աշխատանքը մինչև ձեռքի շարժումը զգալը: Պահեք երգի մեկնարկի ժամը փոփոխականում ՝ օգտագործելով millis () և ստուգեք, թե որքան ժամանակ է այն շարունակվում ամեն անգամ, երբ դուք շրջանցում եք (): Դուք կարող եք դա օգտագործել ՝ երգի որոշակի ժամանակ որոշակի գործառույթներ միացնելու կամ անջատելու համար:

Եթե գիտեք, թե որքան երկար են ձեր օղակները միլիվայրկյանների ընթացքում, կարող եք նաև հետևել, թե քանի օղակ եք անցել երգի կառուցվածքի առավել նրբանկատ ըմբռնման համար:

Մեկ այլ պոտենցիալ խնդիր, որին կարող եք հանդիպել, այն է, թե երբ սկսել և դադարեցնել երգի նվագարկումը: Ես դա լուծեցի ՝ հետևելով, թե որ չափի ռիթմում էր երգը ներկայումս: Հետո ես կարող էի ժեստից հետո հետքեր նվագել ցանկացած քանակությամբ զարկերի համար `այն անմիջապես կտրելու փոխարեն: Սա ստիպում է ամեն ինչ շատ ավելի հարթ ընթանալ: Ահա մի օրինակ.

if (millis () - lastLoop> = 4000) {loops += 1; lastLoop = millis (); համար (int j = 0; j <8; j ++) {beatNow [j] = false; }} beat = (millis () - lastLoop) / 250; եթե (ծեծել! = lastBeat) {lastBeat = ծեծել; beatsLeft -= 1; }

Համոզվեք, որ համապատասխանաբար թարմացնում եք ծավալները beatNow [beat] և/կամ beatsLeft արժեքներին: Այս ձեռնարկում գրեթե ամեն ինչ ներառող կոդի օրինակը, գումարած որոշները, կցված է այն դեպքում, եթե ցանկանում եք այն գործնականում տեսնել:

Խորհուրդ ենք տալիս: