Мазмұны:

Би қолғаптары: 9 қадам
Би қолғаптары: 9 қадам

Бейне: Би қолғаптары: 9 қадам

Бейне: Би қолғаптары: 9 қадам
Бейне: Әйелдің бітіргенің қалай білем? 2024, Қараша
Anonim
Би қолғаптары
Би қолғаптары

Бұл оқулықта мен сізге би арқылы музыкамен қарым -қатынас жасауға мүмкіндік беретін қолғаптың дизайнын көрсетемін. Сіз акселерометрмен жұмыс істейтін қолғап жасайсыз, Ableton-да композиция құрастырасыз, содан кейін екеуін қалағаныңызша күрделі немесе қарапайым етіп қосасыз!

Жабдықтар

  • Аблетон (немесе ақысыз сынақ нұсқасы)
  • Ардуино
  • Өтпелі кабельдер
  • Пісіру темірі
  • Картон
  • Ыстық желім қаруы
  • Көптеген қиял

1 -қадам: Тұжырымдама

Бұл жоба көңілді болу үшін жасалған. Егер осы оқулықтағы мысал жобасы сізге қызықты болмаса, оны қайта жасаңыз!

Мен сіздің сүйікті әндеріңізді қосуды, оларға қолыңызды жылжытуды және не болатынын көруді ұсынамын. Қолыңызды жоғары-төмен жылжытыңыз ба? Жанама? Баяу немесе тез? Музыканың қандай аспектілері қолыңызды қозғауға мәжбүр етеді? Егер сізде олардың тізімі жазылған болса, сіз өзіңізге ұнайтын қозғалыстарды сіздің алгоритмдеріңізге енгізудің кейбір әдістерін таба аласыз.

Міне мен қолданған қозғалыстар:

  • Жылдам жоғары және төмен қозғалыс әннің, барабанның немесе басстың басталуына себеп болады. (Бұл әннің әр жерінде болады, міндетті түрде бір мезгілде емес!)
  • Баяу, қисайған бүйірлік қозғалыс жаңғырықты, жоғары дыбысты тудырады.
  • Әннің белгілі бір бөлімінде қолымды жоғары қарату музыканы бәсеңдетеді, сондықтан мен оны жабық жұдырығыммен «ұстап алдым».

Оларды қолданыңыз немесе өзіңіз жасаңыз!

(Назар аударыңыз: бұл оқулықта Ableton -да қалай музыка мен әуендерді шығаруға болатыны қарастырылмаған! Егер сіз осы нұсқауларды орындасаңыз, сіз тек тректердің көлемін немесе дыбыс эффектілерін қолдана аласыз/төмендете аласыз.)

2 -қадам: акселерометрді дайындаңыз

Акселерометрді дайындаңыз
Акселерометрді дайындаңыз

Алдымен сізде акселерометрдің қандай түрі бар екенін анықтаңыз. Мен мұны қолдандым; кез келген үш осьті акселерометр жасайды. (Немесе жабайы күйге түскіңіз келсе, сенсордың басқа түрін қолданып көріңіз.) Arduino -дан акселерометр деректерін қалай оқу керектігін біліңіз. Егер аналогты енгізуден гөрі күрделі нәрсе қолданылса, акселерометрге кітапхананы жүктеу қажет болуы мүмкін.

Оны нан тақтасында тексергеннен кейін акселерометрдің түйреуіштеріне қысқа түстермен сымдарды дәнекерлеңіз. Қуат түйреуішіне қызыл сымды, жерге түйреуішке қара сымды және акселерометр байланысына қажетті басқа сымдарды салыңыз. (Егер сізде I2C үдеткіші болса, бұл SCL және SDA түйреуіштері болады. Егер сізде аналогты акселерометр болса, онда x, y және z шығуларының әрқайсысы үшін бір түйреуіш болуы мүмкін.) Дәнекердің қатты және моншақтар көршілес түйреуіштердің арасында қабаттаспайды.

3 -қадам: қолғапты жасаңыз

Қолғапты жасаңыз
Қолғапты жасаңыз

Жіңішке картонды немесе қалың қағазды акселерометрден сәл үлкенірек төртбұрыш етіп кесіңіз. Акселерометрді картонға жабыстырыңыз, оның түбіне желім қойғаныңызға көз жеткізіңіз. Содан кейін, қолғаптың артына картонмен бекітілген акселерометрді жабыстырыңыз. Акселерометрдегі шиеленісті жеңілдету үшін әр сымды қолғаптың білегіне байлап тігіңіз, сонда сіздің қолғап дайын болады. Қосылған кезде қолыңызды жылжыту үшін жеткілікті орын болуы үшін оны ұзын сымдарға қосыңыз.

4 -қадам: Ableton -да жазыңыз

Енді сіз бақылауға қолғапты қолданатын ән жазатын кез келді. Мен Ableton ілмектерін ұсынамын, олар бір -бірімен жақсы естіледі, бірақ оларды бірте -бірте құруға болады: әуенді, аккордтарды, бассты және перкуссияны қолданып көріңіз. Сіз қолғапты әрбір цикл ойнағанын немесе ойнамайтынын бақылау үшін пайдалана аласыз.

Егер сіз біртүрлі дыбыс эффектісі немесе дәстүрлі емес құрал сияқты әнге кейде қосылатын қызықты дыбыстарды ойласаңыз, солардың біреуін немесе екеуін қосып көріңіз! Сіз оларды сирек кездесетін қол қозғалыстарымен байланыстыра аласыз.

Міне, сіз өзіңіздің жеке жазбаңызды қаламасаңыз, менің Arduino үйлесімді композициясына сілтеме:

(Өкінішке орай, сізге Аблетонды үйрету оқу құралының шеңберінде емес. Алайда, онда көптеген жақсы бейнелер бар, ал Аблетонның 90 күндік ақысыз сынақ нұсқасы бар! Мен бұл бейнені ұсынамын.)

5 -қадам: Фирматаны пайдалануды бастаңыз

Firmata қолдануды бастаңыз
Firmata қолдануды бастаңыз

Arduino -ға Ableton -мен байланыс орнату үшін сізге Firmata деп аталатын кітапхананы пайдалану қажет. Сондай -ақ, Ableton үшін Connection Kit жүктеу қажет болады.

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);}

Бұл Фирматамен қарым -қатынас жасау үшін қажет минимум. Ол Ableton қаласындағы Firmata құрылғысының 0 портына 800 (1024 -тен) шығысын үздіксіз жібереді. Егер сіз бұл кодты Ableton -да Firmata құрылғысы ашық болғанда Arduino -ға жүктесеңіз, ол жоғарыдағы суретке ұқсас болуы керек. (Мәндерді көру үшін 0 портын Аблетондағы кез келген нәрсемен салыстырыңыз.)

Сіз бұл портқа алынған кіріс пен сол Ableton құрылғысының мәні арасындағы салыстыруды қосу үшін Карта түймешігін, содан кейін Ableton ішіндегі кез келген Firmata үйлесімді құрылғыны басуға болады. Оңай мысалдар аудиоэффект кез келген тректің немесе кез келген терудің дыбыс деңгейін қамтиды. Қарастыру үшін не табуға болатынын зерттеңіз және қараңыз!

7 -қадам: Музыканы қол қозғалыстарымен әсер етіңіз

Музыканы қол қозғалыстарымен әсер етіңіз!
Музыканы қол қозғалыстарымен әсер етіңіз!

Осы уақытқа дейін сізде Аблетондағы музыка, Arduino -да Firmata сценарийі және акселерометр қолғаптары болуы керек. Музыка жасайық!

Ableton қаласындағы Arduino құрылғысының порттарын әр түрлі нәрселерге салыстырыңыз (мен дыбыс деңгейін ұсынамын), содан кейін Arduino -дан әр портқа деректерді жіберу үшін код жолдарын қосыңыз.

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

Әр Firmata портына осындай кодты қолданыңыз.

Егер сіз қарапайым нәрсе жасағыңыз келсе, акселерометр мәндерін өңделмеген түрде Ableton порттарына жіберіп, оларды сол жерден салыстыра аласыз. Неғұрлым күрделі тәжірибе үшін сіз шеше аласыз: акселерометрдің қандай мәндері дыбыстарды, қалай және қашан іске қосуы керек?

Содан кейін барлық Ableton ілмектерін ойнаңыз, Arduino кодын іске қосыңыз және билеңіз!

(Жауапкершіліктен бас тарту: егер сіз өзіңіздің әніңізге қандай да бір күрделі алгоритм құруды жоспарлап отырсаңыз, онда дәл реттеу үшін көп уақыт кетуі мүмкін. «Алыста би билеу» күткеннен дәл болмауы мүмкін.)

8 -қадам: трек класы (бонус!)

Егер сіз дыбыс деңгейінің көтерілуіне қарсы болмасаңыз немесе оны азайтудың басқа әдісі болса, бұл қадамды өткізіп жіберіңіз. Әйтпесе, оқыңыз!

Мен дыбысты бір уақытта дыбыссыздан толыққа ауыстыру жағымсыз дыбыстар шығаратынын байқадым, ал дыбыстың біртіндеп өшуі жақсы. Алайда, Arduino синхронды бағдарламалау ортасында мұны істеу қиын. Міне, жарылып кетуді болдырмайтын код:

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

Әр тректің ағымдағы көлемі, мақсаттық көлемі және сол мақсатқа жету жылдамдығы бар. Жолдың дыбыс деңгейін өзгерткіңіз келсе, setVolumeGoal () қоңырау шалыңыз. Сіз Arduino жүйесінде loop () функциясын іске қосқан сайын, әр трекке updateVolume () қоңырау шалыңыз, содан кейін бұл ақпаратты Firmata -ге getVolume () көмегімен жіберіңіз. Жаңарту жылдамдығын тез немесе біртіндеп жоғалту үшін өзгертіңіз! Сондай -ақ, мүмкін болса, дыбыс деңгейін 0 -ге орнатудан аулақ болыңыз; орнына, оны өте төмен мәнге қойыңыз (mute () параметрінде әдепкі - 100).

9 -қадам: Track Length, Beats және т.б. (бонус!)

Сіз өзіңіздің жобаңыздан шыққан дыбысты тыңдауды жеңілдету үшін көп нәрсе жасай аласыз. Міне бірнеше нұсқа:

Сіз әннің қанша уақыт жұмыс істейтінін бақылай аласыз. Мұны істеу үшін сіз әннің қашан басталғанын анықтауыңыз керек; Мен Set () функциясында уақытша циклды ұсынамын, ол сіздің қолыңыздың қозғалысын сезгенше оның жұмыс істеуін кешіктіреді. Әннің басталу уақытын millis () көмегімен айнымалы мәнде сақтаңыз және () айналдырған сайын оның қанша уақытқа созылғанын тексеріңіз. Сіз мұны әннің белгілі бір уақытында белгілі бір мүмкіндіктерді қосу немесе өшіру үшін пайдалана аласыз.

Егер сіз циклдарыңыздың миллисекундтарда қанша болатынын білсеңіз, ән құрылымын тереңірек түсіну үшін қанша циклды өткеніңізді бақылай аласыз!

Мүмкін болатын тағы бір ықтимал мәселе - тректі ойнатуды қашан бастау және тоқтату. Мен бұл мәселені әннің қазіргі уақытта қандай жиілікте екенін қадағалау арқылы шештім. Содан кейін мен оны бірден өшірудің орнына, қимылдан кейін кез келген соққыға тректерді ойнай алатынмын. Бұл заттардың қозғалысын едәуір жеңілдетеді. Міне мысал:

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

Дыбыстарды beatNow [beat] және/немесе beatsLeft мәндеріне сәйкес жаңартқаныңызға көз жеткізіңіз. Бұл оқулықта барлығын қамтитын мысал коды, сонымен қатар кейбіреулері, егер сіз оны іс жүзінде көргіңіз келсе, қоса беріледі.

Ұсынылған: