Мазмуну:

Бий колкабы: 9 кадам
Бий колкабы: 9 кадам

Video: Бий колкабы: 9 кадам

Video: Бий колкабы: 9 кадам
Video: Сердечная Рана 30 серияна русском языке (Фрагмент №1) | Kalp Yarası 30.Bölüm 1.Fragmanı 2024, Июль
Anonim
Dance Glove
Dance Glove

Бул үйрөткүчтө мен сизге бий аркылуу музыка менен баарлашууга мүмкүндүк бере турган кол каптын долбоорун карап чыгам. Сиз акселерометр менен иштей турган мээлей куруп, Аблетондо композиция иштеп чыгып, анан экөөнү каалагандай татаал же жөнөкөй жол менен туташтырасыз!

Жабдуулар

  • Аблетон (же акысыз сыноо)
  • An Arduino
  • Өтмө кабелдер
  • Кандооч
  • Картон
  • Ысык желим мылтык
  • Фантазия көп

1 -кадам: Түшүнүк

Бул долбоор кызыктуу болушу үчүн иштелип чыккан. Эгерде бул үйрөткүчтөгү мисал долбоору сиз үчүн кызыктуу болбосо, аны кайра иштеп чыгыңыз!

Сүйүктүү ырларыңызды коюп, аларга колуңузду жылдырып, эмне болорун көрүүнү сунуштайм. Колуңузду өйдө-ылдый жылдырасызбы? Жанаша? Акырынбы же тезби? Музыканын кайсы аспектилери колуңузду кыймылдатууга түрткү берет? Эгерде сизде булардын тизмеси жазылган болсо, анда сиз өзүңүзгө жаккан кыймылдарды акыркы алгоритмдерге кошуунун кээ бир жолдорун таба аласыз.

Мына мен колдонгон кыймылдар:

  • Ыкчам өйдө-ылдый кыймыл ырдын, барабандын же басдын башталышын козгойт. (Бул ырдын ар кандай учурларында болот, сөзсүз түрдө бир убакта эмес!)
  • Капталга карай жай, кыйшык кыймыл дагы жаңырык, бийик үндү жаратат.
  • Ырдын белгилүү бир бөлүгүндө колумду өйдө каратуу музыканы басаңдатат - ошондуктан мен аны жабык муштумума "кармадым".

Буларды колдонуңуз же өзүңүз жасаңыз!

(Көңүл буруңуз: бул үйрөткүч Аблетондо кантип музыка же обондорду жаратуу керектигин камтыбайт! Эгерде сиз бул көрсөтмөлөрдү кармансаңыз, тректердин үнүн же аудио эффекттерди колдонууну гана көбөйтө аласыз.)

2 -кадам: Акселерометрди даярдаңыз

Акселерометрди даярдаңыз
Акселерометрди даярдаңыз

Биринчиден, сизде акселерометрдин кандай түрү бар экенин аныктаңыз. Мен муну колдондум; кандайдыр бир үч огу акселерометр кылат. (Же сен жапайы болгуң келсе, сенсордун башка түрүн байкап көр.) Arduinoдон акселерометрдин маалыматын кантип окууну билишиңиз керек. Эгер аналогдук киргизүүдөн татаалыраак нерсени колдонсо, акселерометр үчүн китепкананы жүктөп алышыңыз керек болот.

Аны нан тактасы менен сынап көргөндөн кийин, акселерометрдин төөнөгүчтөрүнө кыска түстөгү коддорду кошуңуз. Электр зымына кызыл зым, жерге төөнөгүчкө кара зым жана акселерометр байланышы үчүн керектүү башка зымдарды салыңыз. (Эгерде сизде I2C акселерометр болсо, анда бул SCL жана SDA төөнөгүчтөрү болот. Эгерде сизде аналогдук акселерометр болсо, анда, балким, x, y жана z чыгуулары үчүн бир пин болот.) Сиздин ширеңкиңиздин бекем жана мончоктор чектеш казыктардын ортосунда бири -бирине дал келбейт.

3 -кадам: Колкапты куруңуз

Мээлейди куруу
Мээлейди куруу

Жука картонду же калың кагазды акселерометрден бир аз чоңураак тик бурчтукка кесип алыңыз. Акселерометрди картонго чаптаңыз, астына клей салып жатканыңызды текшериңиз. Андан кийин, колкаптын артына картондуу акселерометрди чаптаңыз. Акселерометрдеги чыңалууну басаңдатуу үчүн ар бир зымды колкаптын билегине бекитип тигип койгула, ошондо мээлейиңер даяр. Колго туташтырылганда колуңузду жылдыра турган орунга ээ болуу үчүн аны узун зымдарга туташтырыңыз.

4 -кадам: Аблетондо жазуу

Эми акыры көзөмөлдөө үчүн кол капты колдоно турган ырды жазууга убакыт келди. Мен Ableton циклдерин сунуштайм, алар баары жакшы угулат, бирок акырындык менен куруу үчүн колдонулушу мүмкүн: обонду, аккорддорду, бастарды жана перкуссияны сынап көрүңүз. Сиз мээлейиңизди колдонуп, ар бир цикл ойногондо же ойнобогондо көзөмөлдөй аласыз.

Эгер кээде кызыктай үн эффектиси же салттуу эмес аспап сыяктуу ырга кошулуучу кандайдыр бир кызыктуу үндөр жөнүндө ойлонсоңуз, алардын бирин же экөөнү кошуп көрүңүз! Сиз аларды бир аздан кийин колуңуздун кыймылына байланыштырып, кызыктуу нерсени алып келсеңиз болот.

Бул жерде Arduino менен шайкеш келген композициямдын шилтемеси бар, эгер сиз өзүңүздүкүн жазгыңыз келбесе:

(Тилекке каршы, сизге Аблетонду үйрөтүү үйрөткүчтүн чегине кирбейт. Бирок, ал жакта көптөгөн ыкмалар бар жана Аблетондун 90 күндүк акысыз сынамагы бар! Мен бул видеону сунуштайм.)

5 -кадам: Firmata колдонууну баштаңыз

Firmata колдонууну баштаңыз
Firmata колдонууну баштаңыз

Сиздин Arduino Аблетон менен байланышуусун камсыз кылуу үчүн, сиз Firmata деп аталган китепкананы колдонушуңуз керек. Сиз ошондой эле Ableton үчүн Connection Kit жүктөп алышыңыз керек.

Abletonдо, Пакеттер> Connection Kit> Түзмөктөрдү жогорку сол жактагы менюдан чыкылдатып, анан кошуу үчүн биринчи түзмөктү (Arduino) эки жолу чыкылдатыңыз. Аблетондун кайсы трекке аппаратты кошконуңузду унутпаңыз!

6 -кадам: Firmata тест

Test Firmata
Test Firmata

Биринчиден, биз сиздин Arduino Ableton менен байланышып жатканын текшерип, текшерип көрөбүз. Бул коддун үзүндүсүн Arduinoго жүктөп, аны иштетиңиз:

#include void analogWriteCallback (байт пин, int мааниси) {if (IS_PIN_PWM (pin)) {pinMode (PIN_TO_DIGITAL (pin), OUTPUT); analogWrite (PIN_TO_PWM (пин), маани); }} жараксыз орнотуу () {Firmata.setFirmwareVersion (FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION); Firmata.attach (ANALOG_MESSAGE, analogWriteCallback); Firmata.begin (57600);} void loop () {Firmata.sendAnalog (0, 800);}

Бул Фирмата менен баарлашуу үчүн зарыл болгон эң аз. Ал үзгүлтүксүз Аблетондогу Фирмата түзмөгүнүн 0 портуна 800 (1024төн) чыгарууну жөнөтөт. Эгер сиз бул кодду Abletonдо Firmata түзмөгүңүз бар кезде Arduinoго жүктөсөңүз, ал жогорудагы сүрөттө окшош болушу керек. (0 портун Аблетондогу каалаган нерсеге караңыз, баалуулуктарды көрө аласыз.)

Сиз Карта баскычын, андан кийин Abletonдогу Фирмата менен шайкеш келген түзмөктү басып, ошол портко алынган кирүү менен Ableton түзмөгүнүн наркынын ортосундагы картаны кошо аласыз. Оңой мисалдар аудио эффектин ичинде каалаган тректин же терүүнүн көлөмүн камтыйт. Картаңыз үчүн эмнени таба алаарыңызды изилдеңиз жана көрүңүз!

7 -кадам: Музыкага кол кыймылы менен таасир эт

Музыкага кол кыймылыңыз менен таасир этиңиз!
Музыкага кол кыймылыңыз менен таасир этиңиз!

Бул убакка чейин, сизде Аблетон музыкасы, Arduinoңуздагы Фирмата сценарийи жана акселерометр мээлейи тиркелиши керек. Музыка жараталы!

Abletonдогу Arduino түзмөгүнүн портторун ар кандай нерселерге салыштырыңыз (мен тректин көлөмүн сунуштайм), андан кийин Arduinoдон ар бир портко маалыматтарды жөнөтүү үчүн код линияларын кошуңуз.

Firmata.sendAnalog (порт, volumeLevel);

Ар бир Firmata портуна окшош кодду колдонуңуз.

Эгер сиз жөнөкөй бир нерсе кылгыңыз келсе, акселерометрдин баалуулуктарын иштетилбеген аблетон портторуна жөнөтүп, аларды ошол жерден картага түшүрсөңүз болот. Дагы татаал тажрыйба үчүн сиз чече аласыз: акселерометрдин кандай мааниси үндөрдү, кантип жана качан иштетиши керек?

Андан кийин Ableton циклдериңиздин бардыгын ойноңуз, Arduino кодуңузду иштетип, бийлеп кетиңиз!

(Жоопкерчиликтен баш тартуу: эгерде сиз ырыңызга кандайдыр бир татаал алгоритм түзүүнү пландап жатсаңыз, анда аны тууралоо үчүн көп убакыт талап кылынышы мүмкүн. "Dance away" анча так эмес болушу мүмкүн.)

8 -кадам: Track Class (бонус!)

Эгерде сиз үн көлөмүнүн көтөрүлүшүнө каршы болбосоңуз же аны басаңдатуунун башка жолу болсо, бул кадамды өткөрүп жибериңиз. Болбосо, окуңуз!

Мен бир убакта үнүн басаңдатуудан толукка которуу жагымсыз үн чыгарарын байкадым жана акырындык менен үнүн өчүрүү жагымдуу. Бирок, Arduino синхрондуу программалоо чөйрөсүндө муну кылуу кыйын. Ошентип, бул жерде поппингди кетирүү үчүн кээ бир коддор бар:

класс Track {public: int volume; int volumeGoal; int updateSpeed; Track () {volume = 0; volumeGoal = 0; updateSpeed = 0; } void setVolumeGoal (int goal) {volumeGoal = goal; } int getVolumeGoal () {return volumeGoal; } жараксыз setUpdateSpeed (int fastness) {updateSpeed = ылдамдык; } int getVolume () {кайтаруу көлөмү; } void updateVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } if if ((volume = updateSpeed)) {volume += updateSpeed; }} боштукту өчүрүү (int fastness) {volumeGoal = 50; updateSpeed = ылдамдык; } void full (int fastness) {volumeGoal = 950; updateSpeed = ылдамдык; }};

Ар бир тректин учурдагы көлөмү, максатынын көлөмү жана ылдамдыгы ошол максаттуу көлөмгө карай баратат. Сиз тректин үнүн өзгөрткүңүз келсе, setVolumeGoal () чакырыңыз. Ардуинодо loop () функциясын иштеткен сайын, ар бир трек боюнча updateVolume () чакырып, андан кийин getVolume () менен Фирматага бул маалыматты жөнөтүңүз. Жаңыртуу ылдамдыгын тезирээк же акырындык менен өчүрүү үчүн өзгөртүңүз! Ошондой эле, эгер мүмкүн болсо, үндү 0гө коюудан алыс болуңуз; анын ордуна, аны өтө төмөн баага коюңуз (mute () дефолтунда 100).

9 -кадам: Track Length, Beats жана башкалар (бонус!)

Долбооруңуздан чыккан үндү угууну жеңилдетүү үчүн сиз көп нерсени жасай аласыз. Бул жерде бир нече варианттар бар:

Ырдын канча убакыттан бери иштеп жатканын байкап турсаңыз болот. Бул үчүн ырдын качан башталганын түшүнүшүңүз керек; Мен setup () функциясында бир аз убакыт циклин сунуштайм, ал сиздин колуңуздун кыймылын сезгенге чейин иштебей калат. Милистин () жардамы менен ырдын башталыш убактысын өзгөрмөсүндө сактаңыз жана цикл сайын () канча убакытка созулганын текшериңиз. Сиз муну ырдын белгилүү учурларында белгилүү бир функцияларды иштетүү же өчүрүү үчүн колдоно аласыз.

Эгерде сиз циклдериңиздин миллисекундтарда канча убакыт бар экенин билсеңиз, ырдын структурасын жакшыраак түшүнүү үчүн канча циклди басып өткөнүңүздү көзөмөлдөй аласыз!

Дагы бир потенциалдуу маселе - тректи качан баштоо жана токтотуу. Мен муну ырдын кайсы ыргакта экенин көзөмөлдөө менен чечтим. Андан кийин тректи дароо өчүрүүнүн ордуна, жаңсоодон кийин каалаган ыргакта тректерди ойното алчумун. Бул нерселердин бир топ жылмакай болушун шарттайт. Бул жерде бир мисал:

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

Көлөмдөрдү beatNow [beat] жана/же beatsLeft маанилерине жараша жаңыртыңыз. Бул үйрөткүчтө дээрлик бардыгын камтыган мисал коду, кээ бирлери, эгерде сиз аны иш жүзүндө көргүңүз келсе, тиркелет.

Сунушталууда: