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

Guitar Hero Arduino նախագիծ. 12 քայլ (նկարներով)
Guitar Hero Arduino նախագիծ. 12 քայլ (նկարներով)

Video: Guitar Hero Arduino նախագիծ. 12 քայլ (նկարներով)

Video: Guitar Hero Arduino նախագիծ. 12 քայլ (նկարներով)
Video: Raffi "Khente" mas 8 Audiogirq / Րաֆֆի "Խենթը" մաս 8 Աուդիոգիրք 2024, Նոյեմբեր
Anonim
Guitar Hero Arduino նախագիծ
Guitar Hero Arduino նախագիծ
Guitar Hero Arduino նախագիծ
Guitar Hero Arduino նախագիծ
Guitar Hero Arduino նախագիծ
Guitar Hero Arduino նախագիծ

Wij zijn Maarten Vrebos, Justin Cavanas en Wannes Stroobandt en we studeren multimedia & Communicatietechnology. Հնարավորություն է առաջացնում նախագծի իրականացում ՝ տեսա-տեսողական և ՏՏ սկզբունքներ, որոնք կարող են օգտագործվել Guitar Hero-gitaar gehackt և gebruikt als behuizing voor onze MIDI-controller- ի միջոցով: Het is onze bedoeling om de bestaande knoppen op de gitaar intern te vervangen. Onze controller zal vastgehouden en bespeeld worden als een normalale gitaar. Aangezien we iets hebben gehackt hebben we er niet veel extra materiaal in moeten verwerken.

In de afbeelding kan u onze allereerste schets op papier zien van hoe het eindproduct er zou moeten uitzien met daarnaast een foto van de gitaar die als behuizing zal worden gebruikt.

Wij hebben ons voor dit project gebaseerd op volgende bronnen:

slapyak.wordpress.com/guitar-hero-midi-con…

www.instructables.com/id/Converting-a-rescu…

gizmodo.com/391834/turn-your-guitar-hero-g…

Benodigdheden voor dit նախագիծը

  • 6 kleine կոճակ
  • 7 1 կճմ ռեզիստորներ
  • 1 գել LED 1
  • blauwe LED
  • 1 Arduino Uno R3
  • 1 այլանդակ LED
  • 2 ձիավարություն LED
  • 1 schuifschakelaar
  • 1 տախտակ
  • 1 պոտենցիոմետր
  • 1 պրոտոբորդ
  • 1 Guitar Hero gitaar
  • Voldoende bedrading
  • Materiaal om te solderen/dremelen/
  • Շրովենդրաայեր

Քայլ 1: բաղադրիչ Verzamelen

Բաղադրիչ Վերզամելեն
Բաղադրիչ Վերզամելեն

Voor ons նախատիպ (op breadboard) hebben we volgende componenten gebruikt:

6 կոճակ

7 1kohm դիմադրիչներ

1 դեղին LED

1 կապույտ LED

1 Arduino Uno R3

1 կանաչ LED

2 կարմիր LED

1 Schuifschakelaar

1 Հացաթուղթ

1 պոտենցիոմետր

Քայլ 2. Բուվենի նախատիպը

Բուվենի նախատիպը
Բուվենի նախատիպը
Բուվենի նախատիպը
Բուվենի նախատիպը
Բուվենի նախատիպը
Բուվենի նախատիպը

Om ons prototype te bouwen hebben we al onze componenten gebruikt op een breadboard, deze breadboard dient dan als testobject zodat we niet meteen in de behuizing te werk moeten gaan- ում: Թարգմանե՞լ նկարագրությունը հայերեն (Հայաստան) Google Translate- ի օգնությամբ Թարգմանել նկարագրությունը անգլերեն (Միացյալ Թագավորություն)

Եթե խոսենք 5 կոճակների մասին, ապա դրանք օգտագործվում են նաև 5 տարբեր ժամանակներում, և եթե ցանկանում եք, որ դրանք միացվեն, մի քանի անգամ մենք ստուգում ենք, թե ինչ ազդեցություն կարող է ունենալ ստեղծագործությունը: LED- ի լամպերը կարող են օգտագործվել վերահսկողության կամ վերահսկման բոլոր գործառույթների շնորհիվ:

Քայլ 3: Կոդի նախատիպ

Կոդի նախատիպ
Կոդի նախատիպ

Globale variabelen

In het eerste deel van de code initialiseer je globale variabelen voor de pins van arduino uno waar alle pushbuttons mee verbonden zijn.

// zet pin համարներ waar mainButton (snaar) en andere կոճակները և verbonden zijn: const int mainButton = A1; // gitaar snaar const int lightSensor = A0; const int buttonPin1 = 2; // nummer van pushbutton1 const int buttonPin2 = 3; // nummer van pushbutton2const int buttonPin3 = 4; // nummer van pushbutton3const int buttonPin4 = 5; // nummer van pushbutton4const int buttonPin5 = 6; // nummer van pushbutton5

Hierna worden er twee arrays aangemaakt voor de namen van de pushbuttons en hun pinnummer.

const int aantalKnoppen = 5; const Լարային namenKnoppen [aantalKnoppen] = {"knop 1", "knop 2", "knop 3", "knop 4", "knop 5"}; const int knopPinnen [aantalKnoppen] = {2, 3, 4, 5, 6};

En dan nog variabelen voor de pins van de LED lichtjes.

const int ledPin1 = 13; // LED փին 13 -ի համարը

const int ledPin2 = 12; // LED- ի քորոցի թիվը 12 const int ledPin3 = 11; // LED- ի քորոցների թիվը 11 const int ledPin4 = 10; // LED փին թիվ 10 const int ledPin5 = 9; // LED փին 9 թիվը const int potPin = A5; // LED փին A5- ի համարը

De laatste globale variabelen dienen als 'States' voor de sensors (zijn de pushbuttons ingedrukt of niet? Potentiometer, lichtsensor):

// initialiseer buttonStates voor de knoppen (ingedrukt of niet) int mainButtonState = 0; int կոճակ State1 = 0; int կոճակ State2 = 0; int կոճակ State3 = 0; int կոճակ State4 = 0; int կոճակ State5 = 0; int lightSensorState = 0; int potValue = 0; int lightValue = 0;

Կարգավորում

Չի թույլատրվում անվավեր կարգաբերման գործառույթը: Deze is van het type void (geeft geen waarde terug) en de հրահանգների hierin worden maar 1 keer uitgevoerd.

Bij elke functie- ն մեկնաբանում է geschreven wat er concretet gedaan wordt- ը: Լրացուցիչ տեղեկություններ այն մասին, թե ինչ է նշանակում կոնկրետ գործառույթը, որն անհրաժեշտ է ձեր arduino հղման մեջ:

void setup () {// տվյալների արագությունը մեկ վայրկյանում (baud) voor seriele տվյալների փոխանցում Serial.begin (9600); // ledPin- ի սկզբնական փոփոխական ելքային pinMode (ledPin1, OUTPUT); pinMode (ledPin2, OUTPUT); pinMode (ledPin3, OUTPUT); pinMode (ledPin4, OUTPUT); pinMode (ledPin5, OUTPUT); // նախաստորագրող կոճակները և մուտքերը. pinMode (mainButton, INPUT); pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); pinMode (buttonPin5, INPUT); pinMode (potPin, INPUT); pinMode (lightSensor, INPUT); }

Անվավեր գործառույթ

Na de setup () functie volgt de loop () functie, de instructies die hierin staan gaan herhaald uitgevoerd worden.

void loop () {// lees de staat van de pushbuttons uit (ingedrukt of niet) mainButtonState = digitalRead (mainButton); buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (կոճակ Pin2); buttonState3 = digitalRead (կոճակ Pin3); buttonState4 = digitalRead (կոճակ Pin4); buttonState5 = digitalRead (buttonPin5);

// alle կոճակի կարգավիճակը een զանգվածում

int buttonStates = {buttonState1, buttonState2, buttonState3, buttonState4, buttonState5};

// leest de waarde uit van de potentiometer en de lichtsensor

potValue = analogRead (potPin); lightValue = analogRead (lightSensor);

// հայտարարում է array mainStates en geef die de standard standard waarden 0 դյույմ:

int mainStates = {0, 0, 0, 0, 0};

// loop over de array aantalKnoppen

համար (int i = 0; i <aantalKnoppen; i ++) {pinMode (knopPinnen , INPUT); // initialiseer alle knopPinnen als input digitalRead (knopPinnen ); // lees de waarde van alle knoppinnen uit // indien de mainswitch (snaar) ingedrukt is, print all knopnamen, alle buttonstates if (mainButtonState == HIGH) {Serial.print (namenKnoppen ); Serial.print (","); Serial.println (buttonStates ); }}

Քայլ 4. Uittesten- ի նախատիպը

Nadat het նախատիպը gebouwd is volgens ons model en de code geschreven is in Processing, is het tijd om het prototype uit te testen. Op de video is te zien dat alle knoppen een reactie geven op de bijhorende ledjes en dat ook combinaties van knoppen mogelijk zijn.

In tweede video is te zien hoe onze tremolo werkt aan de hand van een potentiometer in de gitaar en hoe de waardes worden uitgelezen in Processing- ում:

Քայլ 5. Behuizing "ontmantelen" En Kijken Welke Componenten Gebruikt Gaan Worden

Բեհուիզացում
Բեհուիզացում
Բեհուիզացում
Բեհուիզացում
Բեհուիզացում
Բեհուիզացում
Բեհուիզացում
Բեհուիզացում

Als de code correct werkte op het նախատիպը zijn we begonnen met het "ontmantelen" van onze Guitar Hero-gitaar. Մենք նշեցինք, որ մենք բաց գիտենք, որ մենք հանդիպել ենք բոլորին, ինչպես նաև սկզբնաղբյուր բաղադրիչներին, մենք կարող ենք միացնել մեր հսկիչը: Օգտագործելով այն, մենք կարող ենք օգտվել հատուկ կոճակներից, որոնք ընտրված են gekregen (zie volgende stap) կոճակներում: We hebben de tremolo ook gebruikt voor ons eindproduct en voor onze hoofdbutton (startele button om alls een combinatie af te spelen) hebben we ook de originele twee buttons gebruikt (zie vierde foto): De LEDjes zullen verdwijnen (deze waren enkel ter indicatie zodat we zagen dat alle knoppen correct werkten.

Քայլ 6. Աշխատող Originele կոճակներ + Dremelen

Werking Originele կոճակներ + Dremelen
Werking Originele կոճակներ + Dremelen

Op de bijhorende video is de wijze te zien waarop de twee originele knoppen werken als een soort van schakelaar die wij gebruiken om een effect te genereren bij combinatie van knoppen.

Om onze eigen buttons in verwerken in de originele knoppen hebben we de binnenkant van de originelen er grotendeels uitgehaald zoals te zien is op de foto.

Քայլ 7: Solderen- ի մահճակալ + Vastlijmen կոճակներ

Bedrading Solderen + կոճակներ Vastlijmen
Bedrading Solderen + կոճակներ Vastlijmen
Bedrading Solderen + կոճակներ Vastlijmen
Bedrading Solderen + կոճակներ Vastlijmen
Bedrading Solderen + կոճակներ Vastlijmen
Bedrading Solderen + կոճակներ Vastlijmen

Omdat we niet meer met een breadboard werken moeten de draden gesoldeerd worden om zo de verschillende componenten met elkaar te verbinden. Նադաթ դիթ գեբուրդն այն է, ինչ մենք օգտագործում ենք կոճակները, որոնք ձեզ հետաքրքրում են լուսանկարների միջոցով: Eens dit gebeurd is kunnen we doorgaan naar de volgende stap.

Քայլ 8: Plaats Maken De Behuizing- ում

Plaats Maken in De Behuizing
Plaats Maken in De Behuizing
Plaats Maken in De Behuizing
Plaats Maken in De Behuizing
Plaats Maken in De Behuizing
Plaats Maken in De Behuizing

Omdat dit Guitar Hero-model redelijk krap was om mee te werken hebben we extra plaats moeten maken d.m.v. dremelen. Zo hebben we uit de achterkant van de gitaar een hele strook verwijderd zodat er meer plaats ontstaat voor de bedrading in de gitaar. Omdat er overal in de binnenkant obstakels waren, waaronder veel buisjes om de vijzen in te bevestigen, hebben we die ook verwijderd om optimaal van de gegeven ruimte gebruik te kunnen maken. Op de vierde en vijfde foto is te zien dat we in de achterkant van de gitaar een doorgang hebben gecreëerd voor de draden die naar de buttons de gaan omdat de gitaar anders niet meer te sluiten was. En op de laatste foto is te zien dat we de draden die rechtstreeks verbonden worden met de Arduino դուռը կամ gat in de onderkant van de gitaar de behuizing verlaten- ը:

Քայլ 9. Aansluiten Op Protobord- ի մահճակալը

Bedrading Aansluiten Op Protobord
Bedrading Aansluiten Op Protobord
Bedrading Aansluiten Op Protobord
Bedrading Aansluiten Op Protobord
Bedrading Aansluiten Op Protobord
Bedrading Aansluiten Op Protobord
Bedrading Aansluiten Op Protobord
Bedrading Aansluiten Op Protobord

Om alle componenten met elkaar te verbinden hebben we gebruik gemaakt van een protobord. Dit is een bordje dat eigenlijk op net dezelfde manier werkt als een breadbord, maar dan betrouwbaarder en efficiënter. We hebben de bedrading aan het bordje gesoldeerd zoals te zien is op de derde foto. Dit bord is het centrale punt van waaruit al onze verbindingen vertrekken en samenkomen (zie foto 2):

Քայլ 10: Verstevigen

Վերստևիգեն
Վերստևիգեն

Վերջնական հպումն այն է, որ դուք կարող եք ստուգել այն, թե ինչքանով եք լրացուցիչ կայունացնում: Op deze foto is te zien hoe we het deel dat we er hebben uitgehaald d.m.v. dremelen achteraan de buttons verstevigen met stukjes karton.

Քայլ 11. Code Voor Het Communiceren Met Reaper

Code Voor Het Communiceren Met Reaper
Code Voor Het Communiceren Met Reaper
Code Voor Het Communiceren Met Reaper
Code Voor Het Communiceren Met Reaper
Code Voor Het Communiceren Met Reaper
Code Voor Het Communiceren Met Reaper
Code Voor Het Communiceren Met Reaper
Code Voor Het Communiceren Met Reaper

Deze ծածկագիրը բացված է twee delen- ում, իսկ eerste deel- ը de arduino IDE- ում (զարգացման ինտերակտիվ միջավայր) geschreven- ում: Die code wordt geüpload naar arduino zelf en dient om all waarden van de sensors van midi controller uit te lezen en door te sturen naar processing.

Մշակումը կատարվում է tweede gedeelte- ով: Deze code dient om alles wat arduino doorstuurt te ontvangen en door te sturen naar Reaper.

Արդուինո

/* Այս ծածկագիրը հիմնական ուրվագիծն է `Սերիայի միջոցով մշակման հետ հաղորդակցվելու համար:

Դա ծրագիր է, որում կարող եք տեղադրել ձեր սեփական կոդը

նշված է ձեր սեփական կոճակների, պոտենցիոմետրերի կամ տվիչների համար:

Այն ունի ձեռքսեղմում `համոզվելու համար, որ մենք շփում ունենք

և որոշվում է այն ձևաչափը, որով մենք շփվում ենք

Կարևոր է ուղերձը կառուցել նույն կերպ, որպեսզի Processing- ը իմանա, թե ինչպես քանդել այն և ճիշտ OSC- հաղորդագրություններ ուղարկել մեր DAW- ին

պատրաստված է werkcollege AV&IT- ի համար

հոկտ 2017

*

/ բաուդ տոկոսադրույք

const երկար baudRate = 115200;

// ժամանակը `սպասելու ms- ում հարցումների միջև մինչև կապում

const int loopPauseTime = 200; // միլիարդ վայրկյան

// Serial- ում ուղարկված հաղորդագրության մեկնարկի և ավարտի արժեքները

const String startString = "*", endString = "#";

const char contactCharacter = '|';

// pin id's

// այլ գլոբալ փոփոխականներ

const int aantalKnoppen = 5; const String namenKnoppen [aantalKnoppen] = {"knop 1", "knop 2", "knop 3", "knop 4", "knop 5"}; const int knopPinnen [aantalKnoppen] = {2, 3, 4, 5, 6}; const int mainButton = A1;

int mainButtonState = 0;

int potValue = 0;

// անալոգային տվիչներ

const int potPin = A5; // pin voor tremolo

// Մեզ անհրաժեշտ է այս գործառույթը `մշակման ուրվագծի հետ կապ հաստատելու համար

// Պահեք այստեղ void estabContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // ուղարկեք նշան և սպասեք պատասխանի… հետաձգում (loopPauseTime); } Serial.read (); }

void setup () {

// սահմանել pinModes- ը բոլոր կապերի համար (int i = 0; i <aantalKnoppen; i ++) {pinMode (knopPinnen , INPUT); } pinMode (mainButton, INPUT); // չմեկնաբանել, եթե օգտագործում եք 5 Վ -ի փոխարեն 3V- ով աշխատող տվիչներ // դուք ստիպված կլինեք «ext» կապը միացնել նաև 3.3 Վ -ին // analogReference (EXTERNAL);

// սկզբնավորել Serial comms

Serial.begin (baudRate); իսկ (! Սերիա); // սպասեք ձեռքսեղմման հաստատմանըContact (); }

դատարկ շրջան () {

// ՔԱՅԼ 1. ԿԱՐԴԱԼ ԿՈUTՅԹՆԵՐ // հարցում անցկացրու բոլոր կապումներով և կարդալը կարդա համապատասխան միջակայքում int buttonStates [aantalKnoppen]; /* buttonStates [0] = digitalRead (knopPinnen [0]); buttonStates [1] = digitalRead (knopPinnen [1]); buttonStates [2] = digitalRead (knopPinnen [2]); buttonStates [3] = digitalRead (knopPinnen [3]); buttonStates [4] = digitalRead (knopPinnen [4]); */ mainButtonState = digitalRead (mainButton); համար (int i = 0; i <aantalKnoppen; i ++) {buttonStates = digitalRead (knopPinnen ); } potValue = analogRead (potPin); // օրինակներ. // float v0 = քարտեզ (bpm, 0, 1023, 60, 250); // եթե ցանկանում եք օգտագործել նորմալացված բոց (օրինակ ՝ ծավալի համար) // float v1 = քարտեզ (analogRead (pin2), fromMin, fromMax, 0, 100) / 100.0;

// ՔԱՅԼ 2. ԳՐԵԼ ՀՈESSՍԱՐՁ

Serial.print (startString); // սկսել հաղորդագրությունների հաջորդականություն (int i = 0; i <aantalKnoppen; i ++) {if (mainButtonState == HIGH) {Serial.print (namenKnoppen ); Serial.print (","); Serial.print (buttonStates ); եթե (i <aantalKnoppen - 1) {Serial.print (","); }} else {buttonStates = 0; Serial.print (namenKnoppen ); Serial.print (","); Serial.print (buttonStates ); եթե (i <aantalKnoppen - 1) {Serial.print (","); }}} Serial.print (","); Serial.print («tremolo»); Serial.print (","); Serial.print (քարտեզ (potValue, 0, 1023, 0, 100)); // գրել հաղորդագրության վերջը Serial.print (endString);

// սպասել մի որոշ ժամանակ..

հետաձգում (loopPauseTime); }

Վերամշակում

Հրաժարում. Niet alle code van de processing sketch staat hier in geschreven, voor de volledige code zie het bestand: ProcessingSoundControl_handout_v6_1.pde in bijlage

De volgende հրահանգներ moeten aangepast worden (indien nodig):

// Baudrate moet hetzelfde zijn zoals de arduino էսքիզում

վերջնական int baudRate = 115200;

// Zoek naar het IP հասցեն հնձվորում (zie screenshots in bijlage)

// մշակում stuurt naar dit andres en reaper luistert hier naar //

// վերջնական լարային հեռավոր IP = "192.168.1.43"; // օրինակ. «127.0.0.1»;

վերջնական լարային հեռավոր IP = "10.3.209.60";

// Ուշադրություն դարձրեք sendPort- ին և լրացրեք այն Reaper- ում:

// Սա այն նավահանգիստն է, որը Processing- ը ուղարկում և լսում է Reaper- ը:

վերջնական լսող նավահանգիստ = 12000, sendPort = 12000;

// ListenPort- ն այստեղ ակտիվ վրիպազերծումն է:

// portNames- ը այստեղ նույնպես կարգաբերելու համար է:

// վերջնական լարային portName = "/dev/ttyACM0";

վերջնական լարային portName = "COM5"; // "/dev/ttyUSB0";

////////////////////// Օգտվողի պարամետրերի վերջ /////////////////////// ////

ներմուծման մշակում. սերիա:*;

ներմուծել java.util.*;

ներմուծել oscP5.*;

ներմուծել netP5.*;

OscP5 oscP5;

NetAddress myRemoteLocation;

Սերիական commsPort; // Սերիական նավահանգիստ

բուլյան հաղորդագրություն Arrved = կեղծ;

Մուտքային տող = "", IncomingOSCMessage = "";

վերջնական նշան startChar = '*', endChar = '#'; վերջնական նշան contactCharacter = '|';

// Համոզվելու համար, որ մենք ուղարկում ենք միայն փոփոխվող պարամետրերը (արժեքները)

// այս գլոբալ փոփոխականներն այստեղ ցուցադրվում են, բայց դրանք // այստեղ չպետք է նախաստորագրվեն: HashMap oldParams, newParams, toSendParams;

// Մենք պետք է հաղորդագրությունը կիսենք յուրաքանչյուր ստորակետով

void processIncoming () {String resVec = incoming.split (","); // մենք ստանում ենք անուն+արժեքների զույգեր // այնպես որ յուրաքանչյուր անվան համար (+2)… փորձեք {for (int i = 0; i <resVec.length; i+= 2) {float value = Float.parseFloat (resVec [i+ 1]); // տեղադրել դրանք նոր Hashtable newParams.put- ում (resVec , արժեք); }} // եթե սխալ է տեղի ունենում, եկեք բռնենք, որ այն ցուցադրվի և դուրս գանք: catch (Exception ex) {println ("Exception Message:" + ex); printArray (resVec); ելք (); }}

// Մեր հաղորդագրությունները զտելու համար

/ * Մենք համոզվում ենք, որ կա միայն OSC- հաղորդագրություն, երբ * մուտքային հաղորդագրությունը (Սերիա) փոխվում է * Այսինքն. Եթե մենք շրջում/սեղմում ենք կոճակը և այն փոխում է արժեքը: * Այսպիսով, մենք զտում ենք մուտքային արժեքները, որոնք իրականում փոխվում են HashMap (); for (Լարային բանալին ՝ newParams.keySet ()) {// եթե բանալին արդեն առկա է, եթե (oldParams.containsKey (key)) {// բանալին ներկա է և արժեքը նույնը չէ, ապա թարմացրեք if (! oldParams.get (բանալի).հավասար (newParams.get (բանալին))) {toSendParams.put (բանալին, newParams.get (բանալին)); }} 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); }}

void translateMessage () {

processIncoming (); filterParams (); makeOSC (); } // Երբ մենք ցանկանում ենք տպել պատուհանում void ShowIncoming () {// ՝ մուտքային հաղորդագրությունը տեսնելու համար, ինչպես նշված է HashMap տեքստում («Ներգնա Arduino- ից», 20, 20); int y = 20; for (Լարային բանալին ՝ newParams.keySet ()) {y = y+20; տեքստ (բանալի, 20, y); տեքստ (newParams.get (բանալին), 300, y); }}

void showOsc () {

տեքստ (IncomingOSCMessage, 300, 200); IncomingOSCMessage = ""; }

void setup () {

չափը (1000, 800); // Բեմի չափի լրացում (255); ֆոն (0); oldParams = նոր HashMap (); newParams = նոր HashMap (); // printArray (Serial.list ()); commsPort = նոր Սերիա (սա, portName, baudRate);

/ * սկսել oscP5, լսելով մուտքային հաղորդագրությունները */

oscP5 = նոր OscP5 (սա, listenPort);

/* myRemoteLocation- ը NetAddress է: NetAddress- ը վերցնում է 2 պարամետր, * IP հասցե և նավահանգստի համար:myRemoteLocation- ը օգտագործվում է որպես * oscP5.send () պարամետր, երբ osc փաթեթներն այլ համակարգիչ, սարք, * ծրագիր ուղարկվում են: օգտագործումը տես ստորև: փորձարկման նպատակով լսող նավահանգիստը * և հեռավոր վայրի հասցեի նավահանգիստը նույնն են, հետևաբար * հաղորդագրություններ կուղարկեք այս ուրվագծին: */ myRemoteLocation = նոր NetAddress (հեռավոր IP, sendPort); }

դատարկ վիճակահանություն () {

if (messageArrived) {ֆոն (0); translateMessage (); ShowIncoming (); messageArrived = կեղծ; } showOsc (); }

անվավեր serialEvent (Serial commsPort) {

// կարդալ բայթ սերիական նավահանգստից. char inChar = commsPort.readChar (); անջատիչ (inChar) {case contactCharacter: commsPort.write (contactCharacter); // խնդրեք ավելի շատ տպագիր («սկսած …»); ընդմիջում; գործ startChar: մուտքային = ""; ընդմիջում; գործ endChar: messageArrived = true; // println ("ավարտը msg"); ընդմիջում; կանխադրված ՝ մուտքային += inChar; ընդմիջում; }}

/* մուտքային osc հաղորդագրությունը փոխանցվում է oscEvent մեթոդին: */

void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // ստացեք 1 -ին osc փաստարկը

Մուտքային OSC հաղորդագրություն += "\ n" +

String.format ("### ստացել է osc հաղորդագրություն." + "Addrpattern:" + theOscMessage.addrPattern () + ": %f", արժեք); println (IncomingOSCMessage); }

Քայլ 12: Uittesten վերահսկիչ

Nu alles is aangesloten, alle code is geschreven en alles is gedubbelcheckt is het eindelijk tijd om de controller z'n werk te laten doen. Ուշադրություն դարձրեք, թե ինչ ազդեցություն է ունեցել Reaper- ը գենետիկայի մեջ `կիթառի հերոս MIDI Controller- ի գենետիկորեն:

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