Мазмұны:

Ретро контроллер: 7 қадам
Ретро контроллер: 7 қадам
Anonim
Ретро контроллер
Ретро контроллер

Мультимедиялық және коммуникативті технологиялар (Multec) және Брюссельдегі мектеп оқушылары үшін қосымша ақпарат қажет.

Біз мұндағы музыкалық контроллерді орната аламыз, ол тек қана басталуы мүмкін.

Бұл кассетадағы ең жақсы кассеталар, олар контроллер болды.

1 -қадам: Wat Heb Je Nodig?

Wat Heb Je Nodig?
Wat Heb Je Nodig?

Компоненттер

- 2 түйме;

- 2 потенциометр;

- 2 вестранден (1K бұлан);

- Arduino uno/nano

- Драаджес (электронды схема)

- Soldeerplaat

- МДФ плитасы

Құралдар

- Ласеркуттер

- Киптанг

- Стриптанг

- Soldeerbout (қалайы)

Бағдарлама

- Иллюстратор/дизайн (Текенпрограмма)

- Орақшы

- Өңдеу

- Ардуино

2 -қадам: кодты өңдеу

Кодты өңдеу
Кодты өңдеу

/**

* Arduino-дан сериялық хабарларды алуға арналған негізгі эскиз * және оларды Орақшыға арналған OSC-хабарламаларға аударады * * ПАЙДАЛАНУШЫ ПАРАМЕТРЛЕРІН * бейімдеу қажет болады және сізге кітапхананы орнату қажет: oscP5 * * werkcollege AV&IT * үшін жасалған annoo bob eddi * қазан 2017 * *//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// … ////////

/ int BaudRate = 115200 Arduino эскизінде дәл осындай жіберу жылдамдығын пайдаланғаныңызға көз жеткізіңіз;

// Барып, OSC-ті пайдалану кезінде Reaper-де IP-адресті іздеңіз // Бұл өңдеу процесі жіберетін және Орақшы тыңдайтын мекен-жай. // Бұл жолды remoteIP -ге қойыңыз, мұнда.

// final String remoteIP = «192.168.1.43»; // мысалы. «127.0.0.1»;

final String remoteIP = «vul hier ip in gevonden in reaper»;

// sendPort -қа назар аударыңыз және оны Reaper -де толтырыңыз. // Бұл өңдеу процессі жібереді және орақшы тыңдайды.

final int listenPort = 11000, sendPort = 12000;

// Бұл жерде listenPort - белсенді түрде күйін келтіру.

// порт атаулары осында жөндеуге арналған.

final String portName = «Arduino тіліндегі порт атауы»;

// соңғы String portName = «COM6»; // «/dev/ttyUSB0»;

///////////////////////////////// ПАЙДАЛАНУШЫ ПАРАМЕТРЛЕРІНІҢ СОҢЫ ///////////////////////// ////

импортты өңдеу.сериал.*; java.util импорттау.*;

oscP5 импорттау.*; netP5 импорттау.*;

OscP5 oscP5; NetAddress myRemoteLocation;

Serial commsPort; // Сериялық порт логикалық messageArrived = false;

Келген жол = «», IncomingOSCMessage = «»;

final char startChar = '*', endChar = '#'; final char contactCharacter = '|';

// Тек қана өзгертетін параметрлерді (мәндерді) жіберетінімізге сенімді болу үшін // бұл жаһандық вариаблдер осында жойылады, бірақ // мұнда инициализацияланбауы керек! HashMap oldParams, newParams, toSendParams;

// Біз хабарды үтірдің бос кезіндегі процесте бөлуіміз керек InIn (() {String resVec = incoming.split («,»); // біз атау+мән жұптарын аламыз // сондықтан әр ат үшін (+2)… (int int = 0; i <resVec.length; i+= 2) {float мәні = Float.parseFloat (resVec [i+ 1]); // оларды жаңа Hashtable newParams.put қойыңыз (resVec , мән); }} // егер қате пайда болса, оны көрсетіп, шығайық. catch (Exception ex) {println («Ерекше хабар:» + ex); printArray (resVec); Шығу(); }}

// Біздің хабарларды сүзу үшін/ * Біз * кіріс хабарламасы (сериялық) өзгерген кезде тек OSC-хабарламасы бар екеніне көз жеткіземіз * Яғни: егер біз түймені бұрсақ/бассақ және ол мәнді өзгертсе. * Сондықтан біз өзгеретін кіріс мәндерін сүземіз * ескерту: біз мәндерді секіруден аулақ болмаймыз, мысалы, акселерометрлерден немесе қашықтық сенсорларынан * сіз оларды Arduino */ void filterParams () {toSendParams = new ішінде тегістеуіңіз керек. HashMap (); for (Жол пернесі: newParams.keySet ()) {// егер кілт бұрыннан бар болса, егер (oldParams.containsKey (key)) {// кілт бар болса және мәні бірдей болмаса, онда (! oldParams.get (key)). equals (newParams.get (key))) {toSendParams.put (key, newParams.get (key)); }} else {// кілт ескі параметрлерде жоқ, сондықтан қойыңыз! toSendParams.put (кілт, newParams.get (кілт)); } oldParams.put (кілт, newParams.get (кілт)); }}

void makeOSC () {for (Жол пернесі: toSendParams.keySet ()) {OscMessage myMessage = жаңа OscMessage («/»+ пернесі); myMessage.add (toSendParams.get (кілт)); / * хабарламаны жіберу */ oscP5.send (myMessage, myRemoteLocation); }}

жарамсыз translateMessage () {processIncoming (); filterParams (); makeOSC (); } // HashMap мәтінінде орнатылған кіріс хабарламаны көру үшін void ShowIncoming () {// терезеге басып шығарғымыз келгенде («Arduino -дан кіретіндер», 20, 20); int y = 20; for (Жол пернесі: newParams.keySet ()) {y = y+20; мәтін (перне, 20, у); мәтін (newParams.get (key), 300, y); }}

void showOsc () {text (IncomingOSCMessage, 300, 200); IncomingOSCMessage = «»; }

void setup () {size (1000, 800); // Кезең өлшемін толтыру (255); фон (0); oldParams = жаңа HashMap (); newParams = жаңа HashMap (); // printArray (Serial.list ()); commsPort = жаңа серия (this, portName, baudRate);

/ * бастау oscP5, кіріс хабарламаларды тыңдау */ oscP5 = жаңа OscP5 (бұл, listenPort);

/* myRemoteLocation - бұл NetAddress. NetAddress 2 параметрді, * IP мекенжайын және порт нөмірін қабылдайды. myRemoteLocation * oscP5.send () параметрінде osc пакеттерін басқа компьютерге, құрылғыға, * қосымшаға жіберу кезінде қолданылады. қолдану төменде қараңыз. тестілеу мақсатында тыңдау порты * мен қашықтағы мекенжай порты бірдей, сондықтан сіз * осы эскизге хабарлама жібересіз. */ myRemoteLocation = жаңа NetAddress (remoteIP, sendPort); }

void draw () {if (messageArrived) {background (0); translateMessage (); ShowIncoming (); messageArrived = жалған; } showOsc (); }

void serialEvent (Serial commsPort) {// сериялық порттан байтты оқу: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // көбірек println сұраңыз («басталады…»); үзіліс; case startChar: кіріс = «»; үзіліс; case endChar: messageArrived = true; // println («хабардың соңы»); үзіліс; әдепкі: кіріс += inChar; үзіліс; }}

/* кіріс Оскар хабарламасы oscEvent әдісіне жіберіледі. */ void oscEvent (OscMessage theOscMessage) {өзгермелі мән = theOscMessage.get (0).floatValue (); // 1 -ші Оскар аргументін алыңыз

IncomingOSCMessage + = «\ n» + String.format («### оск хабарын алды:» + «addrpattern:» + theOscMessage.addrPattern () + «: %f», мән); println (IncomingOSCMessage); }

3 -қадам: Arduino коды

Arduino коды
Arduino коды

/* Бұл код - бұл серия арқылы өңдеумен байланысудың негізгі нобайы.

Бұл өз батырмаларыңызға, потенциометрлерге немесе сенсорларға көрсетілген жеке кодты қоюға болатын сызба.

Бізде байланыс бар екеніне және біз сөйлесетін формат шешілгеніне көз жеткізу үшін қол алысу бар

Хабарламаны дәл осылай құру маңызды, сондықтан өңдеу оны қалай бұзуға болатынын және біздің DAW-ке дұрыс OSC хабарламаларын жіберуді біледі.

werkcollege AV&IT қазан 2017 үшін жасалған

кодты тегістеуді 2007 ж. 22 сәуірде Дэвид А. Меллис жасаған, 9 сәуір 2012 ж. Том Иго

*/

/ baud rate const long baudRate = 115200;

// түйреуіштерге сауалнамалар арасында ms ішінде күту уақыты const int loopPauseTime = 200; // миллий секунд

// Serial const String startString = «*», endString = «#» жіберілген хабарламаның бастапқы және аяқталу мәндері;

const char contactCharacter = '|';

// pin id's const int buttonPin1 = 2; const int buttonPin2 = 5; const int numReadings = 5; // автокөлікті тегістеу жылдамдығы

int pitchReading = A1; int speedReading = A2; int infraReading = A3;

// басқа жаһандық айнымалылар int buttonState1 = 0; int buttonState2 = 0; // ауыспалы түйме күйі қалқымалы сенсорды оқуға арналғанValue1 = 0; өзгермелі сенсорValue2 = 0; өзгермелі сенсорValue3 = 0;

// int оқуларын тегістеу [numReadings]; // int readIndex3 = 0 аналогты кірістен алынған көрсеткіштер; // ағымдағы оқу индексі int total3 = 0; // жұмыс істейтін жалпы қалқымалы орташа3 = 0; // орташа

// Бізге өңдеу эскизімен байланыс орнату үшін бұл функция қажет // Бұл жерде сақтаңыз void installContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // таңбаны жіберіп, жауапты күтіңіз… delay (loopPauseTime); } Serial.read (); }

void setup () {// pinMode барлық түйреуіштер үшін pinModes орнатыңыз (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (pitchReading, INPUT); pinMode (speedReading, INPUT); pinMode (инфраоқу, INPUT);

// инициализациялау Serial comms Serial.begin (baudRate); while (! сериялық); // тегістеу (int thisReading = 0; thisReading <numReadings; thisReading ++) {readings [thisReading] = 0; }

// қол ұстасуды күтіңіз installContact (); }

void loop () {// барлық түйреуіштерді сұрау және оқуды сәйкес диапазонға салыстыру buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); sensorValue1 = analogRead (pitchReading); sensorValue2 = analogRead (speedReading); sensorValue3 = analogRead (инфрақұрылым);

// кіріс мәндерін қажетті мәндерге салыстыру sensorValue1 = карта (sensorValue1, 0, 1023, 0, 100.0)/-100.0; sensorValue2 = карта (sensorValue2, 0, 1023, 0.0, 100) /100.0; sensorValue3 = карта (sensorValue3, 0, 700, 50, 100);

// тегістеу сенсоры: total3 = total3 - көрсеткіштер [readIndex3]; // сенсордан оқу: оқулар [readIndex3] = sensorValue3; // көрсеткішті жиынтыққа қосыңыз: total3 = total3 + оқылым [readIndex3]; // массивтегі келесі орынға өту: readIndex3 = readIndex3 + 1;

// егер біз массивтің соңында болсақ… if (readIndex3> = numReadings) {//… басына дейін ораңыз: readIndex3 = 0; } // орташа мәнді есептеңіз: average3 = (total3 / numReadings); // тегістеу сенсоры

Serial.print (startString); // хабар тізбегін бастау // үтірмен бөлінген барлық атауды, мән жұптарын жазыңыз Serial.print («potentio1»); Serial.print («,»); Serial.print (sensorValue1); Serial.print («,»);

Serial.print («potentio2»); Serial.print («,»); Serial.print (sensorValue2); Serial.print («,»);

Serial.print («инфра-сенсор»); Serial.print («,»); Serial.print (орташа3/100); Serial.print («,»);

Serial.print («knop 1 in2 wit»); Serial.print («,»); Serial.print (buttonState1); Serial.print («,»); Serial.print («knop2 in5 geel»); Serial.print («,»); Serial.print (buttonState2);

// хабардың соңын жазу Serial.print (endString);

// біраз күтіңіз..

кешіктіру (loopPauseTime); }

4 -қадам: орақ

Орақшы
Орақшы

1 -қадам: Опциялар> Алдын алу

2 -қадам: Control/OSC/веб -сайтындағы Қосымша опциялары

3 -қадам: OSC (Ашық дыбысты басқару) режимінің басқару режимі

4 -қадам: Құрылғының атауы, аты -жөні, порттағы адрестерді алу Sendport станциясын өңдеу кезінде

5 -қадам: Өңдеуге арналған хосттың IP мекенжайы

6 -ставка: контроллер Reaper -мен жақсы жұмыс істейді

5 -қадам: Бехуинг

Бевуинг
Бевуинг

Ұзындығы: 170 мм

Ұзындығы: 90 мм

Гугт 30 мм

Кноппен: 16 мм (диаметрі)

Потенциометрлер: 3 мм (диаметрі)

Сенгіш сенсор: Breedte 2,9 мм

Ұзындығы 0,8 мм

Материал: MDF (3 мм)

6 -қадам: Электроника

1 -қапсырма:

Verbind de ground және 5 вольтты ван Arduino btboard

2 -қапсырма:

A0 етістік түйреуіші потенцио 1 -мен кездесті

A1 етістік түйреуіші потенцио 2 -мен кездесті

Ағыстырғыш түйреуіш A3 инфрақызыл сенсормен кездесті.

А2 түйреуіш түйреуіші жабысқақ түймені кездестірді.

A5 винтті түйреуіш жабысқақ түймені кездестірді.

7 -қадам: хабар таратушылар

Медиа хабарлаушылар
Медиа хабарлаушылар

- Майес Эль Баба

- Арно Гориссен

- Мичил Де Ванделаер

Ұсынылған: