Cov txheej txheem:

Hnab looj tes las voos: 9 Kauj Ruam
Hnab looj tes las voos: 9 Kauj Ruam

Video: Hnab looj tes las voos: 9 Kauj Ruam

Video: Hnab looj tes las voos: 9 Kauj Ruam
Video: Hwm Pheej Thoj - Rov Mus Txog Vib Nais 2024, Kaum ib hlis
Anonim
Hnab Looj Tes
Hnab Looj Tes

Hauv qhov kev qhia no, Kuv yuav taug kev koj los ntawm kev tsim lub hnab looj tes uas cia koj cuam tshuam nrog suab paj nruag los ntawm kev seev cev. Koj yuav tsim lub hnab looj tes uas siv lub ntsuas cua kom haum, tsim cov khoom sib xyaw hauv Ableton, thiab tom qab ntawd txuas ob qho los ua ib txoj hauv kev nyuaj lossis yooj yim raws li koj xav tau!

Khoom siv

  • Ableton (lossis sim dawb)
  • Ib Arduino
  • Jumper cables
  • Soldering hlau
  • Duab los qhia
  • Kub kua nplaum phom
  • Ntau txoj kev xav

Kauj ruam 1: Tswv yim

Txoj haujlwm no yog tsim los ua kev lom zem. Yog tias txoj hauv kev piv txwv hauv qhov kev qhia no ua haujlwm tsis lom zem rau koj, rov tsim kho nws!

Kuv pom zoo tso qee cov nkauj koj nyiam, txav koj txhais tes mus rau lawv, thiab pom dab tsi tshwm sim. Koj puas txav koj txhais tes nce thiab nqis? Sab-rau-sab? Maj mam lossis nrawm? Dab tsi ntawm cov nkauj ua rau koj xav txav koj txhais tes? Yog tias koj muaj cov npe ntawm cov ntawv sau tseg no, koj yuav muaj peev xwm txheeb xyuas qee txoj hauv kev los koom nrog cov lus tsa suab uas koj nyiam rau hauv koj qhov xwm txheej thaum kawg.

Nov yog cov lus tsa suab kuv siv:

  • Kev nrawm thiab nqis qis ua rau pib zaj nkauj, nruas, lossis ntses bass thaj tsam. (Cov no tshwm sim ntawm cov ntsiab lus sib txawv hauv zaj nkauj, tsis tas yuav tsum ib txhij!)
  • Ib qho qeeb, tilty ib sab-rau-sab suab ua rau muaj suab nrov dua, suab nrov nrov.
  • Ntawm ib ntu tshwj xeeb ntawm zaj nkauj, tig kuv txhais tes mus rau sab xis ua rau cov nkauj ntsiag to - yog li kuv tau "ntes" nws hauv kuv lub nrig.

Siv cov no lossis ua koj tus kheej!

(Thov nco tseg: qhov kev qhia no tsis hais txog yuav tsim cov nkauj lossis suab paj nruag nyob hauv Ableton li cas! Yog tias koj ua raws li cov lus qhia no, koj tsuas yog tuaj yeem nce/txo qhov ntim ntawm cov lem lossis thov siv cov suab.)

Kauj Ruam 2: Npaj Accelerometer

Npaj Accelerometer
Npaj Accelerometer

Ua ntej tshaj, xam seb hom accelerometer koj muaj. Kuv siv qhov no; ib qho peb-axis accelerometer yuav ua. (Los yog sim lwm hom kev ntsuas yog tias koj xav mus qus.) Nco ntsoov tias koj paub yuav ua li cas nyeem cov ntaub ntawv accelerometer los ntawm Arduino. Koj yuav xav tau rub lub tsev qiv ntawv rau koj lub ntsuas cua yog tias nws siv txhua yam nyuaj dua li cov lus sib piv.

Tom qab tau sim nws nrog lub khob cij, cov kab ntawv luv xim-coded xov rau hauv tus pin ntawm koj lub ntsuas cua. Muab cov xaim liab tso rau hauv tus lej fais fab, xaim dub hauv tus pin hauv av, thiab lwm yam xov hlau uas tsim nyog rau kev sib txuas lus nrawm. (Yog tias koj muaj I2C tus ntsuas hluav taws xob, qhov no yuav yog SCL thiab SDA tus pin. Yog tias koj muaj lub ntsuas hluav taws xob sib xws, yuav muaj ib tus pin rau txhua qhov x, y, thiab z tso tawm.) Nco ntsoov tias koj cov laug tau khov thiab tias cov hlaws dai tsis sib tshooj ntawm cov pins uas nyob ib sab.

Kauj Ruam 3: Tsim Lub Hnab looj tes

Tsim lub Hnab looj tes
Tsim lub Hnab looj tes

Txiav ib daim ntawm daim ntawv nyias nyias los yog ntawv tuab rau hauv daim duab plaub me ntsis loj dua li koj lub ntsuas cua. Kuaj lub ntsuas qhov ntsuas mus rau ntawm daim duab, ua kom ntseeg tau tias koj tau muab cov kua nplaum tso rau hauv qab. Tom qab ntawd, lo rau ntawm daim duab-txhawb nqa lub ntsuas cua mus rau sab nraum koj lub hnab looj tes. Xaws txhua xaim xoob xoob rau lub dab teg ntawm lub hnab looj tes kom txo qhov nro ntawm qhov ntsuas qhov ntsuas, thiab tom qab ntawd koj lub hnab looj tes tau npaj lawm. Txuas nws mus rau cov xov hlau ntev dua kom muaj chaw txaus txav koj txhais tes thaum nws ntsaws.

Kauj Ruam 4: Sau hauv Ableton

Tam sim no nws yog lub sijhawm los sau zaj nkauj koj thiaj li siv hnab looj tes los tswj. Kuv pom zoo Ableton loops uas txhua lub suab zoo ua ke, tab sis tuaj yeem siv los txhim kho maj mam: sim suab paj nruag, chords, ntses bass thaj tsam, thiab cuam tshuam. Koj yuav tuaj yeem siv koj lub hnab looj tes los tswj thaum txhua lub voj ua si lossis tsis ua.

Yog tias koj tuaj yeem xav txog ib yam zoo ntawm lub suab kom qee zaum suav nrog hauv ib zaj nkauj, zoo li lub suab txawv txawv lossis cov cuab yeej siv tsis zoo, sim ntxiv ib lossis ob ntawm cov ntawd ib yam! Koj tuaj yeem khi lawv rau qhov tsis tshua siv tes ua kom coj tau qee yam ntxim nyiam txhua lub sijhawm.

Nov yog qhov txuas rau kuv kev sib xyaw Arduino, yog tias koj tsis xav sau ib qho ntawm koj tus kheej:

(Hmoov tsis zoo, qhia koj Ableton tsis nyob hauv qhov kev qhia. Txawm li cas los xij, muaj ntau qhov zoo yuav ua li cas-rau cov vis dis aus tawm, thiab Ableton muaj 90-hnub pub dawb sim! Kuv pom zoo cov vis dis aus no.)

Kauj ruam 5: Pib Siv Firmata

Pib Siv Firmata
Pib Siv Firmata

Txhawm rau pab koj Arduino sib tham nrog Ableton, koj yuav tsum siv lub tsev qiv ntawv hu ua Firmata. Koj kuj tseem yuav tsum rub Cov Khoom Txuas rau Ableton.

Hauv Ableton, nyem pob> Cov Khoom Siv Txuas> Cov cuab yeej hauv cov ntawv qhia zaub mov nyob rau sab saud, thiab tom qab ntawd ob npaug nyem rau thawj lub cuab yeej (Arduino) ntxiv rau nws. Nco ntsoov tias koj nco qab qhov Ableton taug qab koj tau ntxiv lub cuab yeej rau!

Kauj Ruam 6: Kuaj Firmata

Kuaj Firmata
Kuaj Firmata

Ua ntej, peb yuav sim thiab xyuas kom tseeb tias koj Arduino tau sib tham nrog Ableton. Rub cov lej no mus rau koj Arduino thiab khiav nws:

#include void analogWriteCallback (byte pin, int tus nqi) {yog (IS_PIN_PWM (tus pin)) {pinMode (PIN_TO_DIGITAL (tus pin), OUTPUT); analogWrite (PIN_TO_PWM (tus pin), tus nqi); }} 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);}

Nov yog qhov tsawg kawg nkaus uas xav tau los tham nrog Firmata. Nws txuas ntxiv xa tawm 800 (tawm ntawm 1024) mus rau chaw nres nkoj 0 ntawm Firmata ntaus ntawv hauv Ableton. Yog tias koj tso cov cai no rau koj Arduino thaum koj muaj Firmata ntaus ntawv qhib hauv Ableton, nws yuav tsum zoo li cov duab saum toj no. (Daim ntawv qhia chaw nres nkoj 0 rau ib yam dab tsi hauv Ableton kom tuaj yeem pom qhov txiaj ntsig.)

Koj tuaj yeem nyem khawm Daim Ntawv Qhia thiab tom qab ntawd ib qho khoom siv Firmata-sib xws hauv Ableton txhawm rau ntxiv daim duab qhia chaw ntawm cov tswv yim tau txais mus rau qhov chaw nres nkoj ntawd thiab tus nqi ntawm Ableton ntaus ntawv. Cov piv txwv yooj yim suav nrog ntim ntawm ib qho kev taug lossis ib qho hu hauv lub suab. Tshawb nrhiav thiab pom dab tsi koj tuaj yeem pom hauv daim duab qhia chaw!

Kauj Ruam 7: Cuam Tshuam Nkauj Nrog Koj Tes Ua Haujlwm

Cuam Tshuam Cov Nkauj Nrog Koj Tes Txav Mus!
Cuam Tshuam Cov Nkauj Nrog Koj Tes Txav Mus!

Txog lub sijhawm no, koj yuav tsum muaj qee lub suab paj nruag hauv Ableton, tsab ntawv Firmata ntawm koj Arduino, thiab lub hnab looj tes uas ntsuas qhov ntsuas. Cia peb ua suab nkauj!

Daim ntawv qhia chaw nres nkoj ntawm Arduino cov cuab yeej hauv Ableton rau ntau yam sib txawv (Kuv hais kom taug qab ntim), thiab tom qab ntawd ntxiv kab ntawm cov cai kom xa cov ntaub ntawv mus rau txhua qhov chaw nres nkoj los ntawm Arduino.

Firmata.sendAnalog (chaw nres nkoj, volumeLevel);

Siv cov lej zoo li no rau txhua qhov chaw nres nkoj Firmata.

Yog tias koj xav ua qee yam yooj yim, koj tuaj yeem xa tus ntsuas qhov ntsuas qhov ntsuas tsis tau ua tiav rau Ableton cov chaw nres nkoj thiab qhia lawv los ntawm qhov ntawd. Txog rau kev paub ntau dua, koj tuaj yeem txiav txim siab: qhov ntsuas qhov ntsuas qhov ntsuas yuav tsum ua rau lub suab, li cas, thiab thaum twg?

Tom qab ntawd ua si txhua yam ntawm koj Ableton loops, khiav koj li Arduino code, thiab dhia tawm mus!

(Kev tsis lees paub: yog tias koj tab tom npaj tsim txhua yam txheej txheem nyuaj rau koj zaj nkauj, nws yuav siv sijhawm ntau los kho kom raug. "Seev cev tam sim" yuav tsis raug dua li qhov xav tau.)

Kauj Ruam 8: Chav Kawm Taug Kev (ntxiv!)

Yog tias koj tsis mloog lub ntim popping lossis muaj lwm txoj hauv kev los txo nws, hla cov kauj ruam no. Txwv tsis pub, nyeem rau!

Kuv pom tias hloov lub ntim los ntawm mloog mus rau tag nrho hauv ib qho mus tsim qee qhov tsis txaus siab popping suab, thiab nws yog qhov zoo uas tuaj yeem ploj hauv ntim ntau dua. Txawm li cas los xij, nws nyuaj rau ua qhov no hauv Arduino qhov ua haujlwm ib puag ncig ib puag ncig. Yog li ntawm no yog qee qhov chaws kom ua kom ploj mus:

class Track {public: int ntim; int ntim Goal; int updateSpeed; Taug qab () {ntim = 0; ntim Goal = 0; updateSpeed = 0; } void setVolumeGoal (int lub hom phiaj) {volumeGoal = lub hom phiaj; } int getVolumeGoal () {xa rov qab volumeGoal; } void setUpdateSpeed (int nrawm) {updateSpeed = nrawm; } int getVolume () {rov ntim; } void updateVolume () {if ((ntim> volumeGoal) && ((ntim - volumeGoal)> = updateSpeed)) {ntim - = updateSpeed; } lwm yog ((ntim = updateSpeed)) {ntim += updateSpeed; }} hais tsis tau lus (int nrawm) {volumeGoal = 50; updateSpeed = nrawm; } tsis muaj dab tsi puv (int nrawm) {volumeGoal = 950; updateSpeed = nrawm; }};

Txhua Taug Kev muaj qhov ntim tam sim no, lub hom phiaj ntim, thiab qhov nrawm uas nws tab tom txav mus rau lub hom phiaj ntawd. Thaum koj xav hloov qhov ntim ntawm txoj kab, hu rau setVolumeGoal (). Txhua lub sijhawm koj khiav lub voj () ua haujlwm hauv koj Arduino, hu rau updateVolume () ntawm txhua kab, thiab tom qab ntawd xa cov ntaub ntawv ntawd mus rau Firmata nrog getVolume (). Hloov qhov hloov tshiab kom nrawm dua lossis ntau zuj zus zuj zus! Tsis tas li, zam kev teeb lub ntim rau 0 yog tias koj tuaj yeem ua tau; es tsis txhob, teeb nws mus rau tus nqi qis heev (lub neej ntawd hauv mute () yog 100).

Kauj Ruam 9: Taug Kev Ntev, Ntaus, thiab Ntau Ntxiv (ntxiv!)

Koj tuaj yeem ua ntau yam los ua lub suab los ntawm koj txoj haujlwm kom yooj yim mloog. Nov yog qee qhov kev xaiv:

Koj tuaj yeem taug qab ntev npaum li cas zaj nkauj tau khiav. Txhawm rau ua qhov no, koj yuav tsum txiav txim siab thaum pib zaj nkauj; Kuv pom zoo lub sijhawm nyob hauv qhov teeb tsa () ua haujlwm uas ncua koj cov cai los ntawm kev khiav mus txog thaum nws tau hnov lub suab txhais tes. Khaws zaj nkauj pib lub sijhawm hauv qhov sib txawv siv millis (), thiab txheeb xyuas ntev npaum li cas nws tau mus rau txhua lub sijhawm koj voj (). Koj tuaj yeem siv qhov no los pab lossis lov tes taw qee yam tshwj xeeb ntawm qee lub sijhawm ntawm zaj nkauj.

Yog tias koj paub ntev npaum li cas koj cov loops nyob rau hauv milliseconds, koj tseem tuaj yeem taug qab pes tsawg lub loops koj tau dhau los txhawm rau nkag siab ntau qhov kev nkag siab ntawm cov qauv nkauj!

Lwm qhov teeb meem uas koj tuaj yeem ntsib yog thaum yuav pib thiab nres txoj hauv kev los ntawm kev ua si. Kuv daws qhov no los ntawm kev ua raws qhov ntsuas ntawm txoj kev ntsuas zaj nkauj tam sim no. Tom qab ntawd kuv tuaj yeem ua cov nkauj rau txhua tus neeg ntaus tom qab taw tes, tsis txhob txiav nws tam sim. Qhov no ua rau txhua yam ntws tau zoo dua. Nov yog qhov piv txwv:

yog (millis () - lastLoop> = 4000) {loops += 1; lastLoop = millis (); rau (int j = 0; j <8; j ++) {beatNow [j] = tsis tseeb; }} ntaus = (millis () - lastLoop) / 250; yog (tuav! = lastBeat) {lastBeat = tuav; beatsLeft -= 1; }

Nco ntsoov koj hloov kho qhov ntim raws li qhov txiaj ntsig ntawm beatNow [yeej] thiab/lossis beatsLeft. Piv txwv tus lej suav nrog yuav luag txhua yam hauv phau ntawv qhia no, ntxiv rau qee qhov, tau txuas nrog hauv qhov xwm txheej koj xav pom nws hauv kev xyaum.

Pom zoo: