Cov txheej txheem:

Guitar Hero Arduino Project: 12 Kauj Ruam (nrog Duab)
Guitar Hero Arduino Project: 12 Kauj Ruam (nrog Duab)

Video: Guitar Hero Arduino Project: 12 Kauj Ruam (nrog Duab)

Video: Guitar Hero Arduino Project: 12 Kauj Ruam (nrog Duab)
Video: Приказ комиссара. Warhammer 40k 2024, Hlis ntuj nqeg
Anonim
Guitar Hero Arduino Project
Guitar Hero Arduino Project
Guitar Hero Arduino Project
Guitar Hero Arduino Project
Guitar Hero Arduino Project
Guitar Hero Arduino Project

Wij zijn Maarten Vrebos, Justin Cavanas thiab Wannes Stroobandt en peb kawm ntau yam xov xwm & kev sib txuas lus thev naus laus zis. Voor een groepsproject voor het vak Audiovisual & IT Principles hebben wij een Guitar Hero-gitaar gehackt en gebruikt als behuizing voor onze MIDI-controller. Het tsis tau pw tsaug zog om de bestaande knoppen op de gitaar intern te vervangen. Onze maub los zal vastgehouden en bespeeld worden als een normale gitaar. Aangezien peb iet hebben gehackt hebben peb eriet veel ntxiv materiaal hauv moeten verwerken.

Nyob rau hauv qhov tsis txaus ntseeg koj tuaj yeem ua txhua yam kev dag ntxias op papier zien van hoe het eindproduct er zou moeten uitzien ntsib daarnaast een foto van de gitaar tuag 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 project

  • 6 kleine pushbutton
  • 7 1kohm resistors
  • LED teeb 1
  • zoo LED
  • 1 Arduino Uno R3
  • 1 LED zaub
  • 2 coj LEDs
  • 1 daim ntawv pov thawj
  • 1 khob cij
  • 1 potentiometer
  • 1 protobord
  • 1 Guitar Hero gitaar
  • Voldoende txaj
  • Materiaal om te solderen/dremelen/
  • Schroevendraaier

Kauj ruam 1: Componenten Verzamelen

Componenten Verzamelen
Componenten Verzamelen

Daim ntawv pov thawj lub tsev (op breadboard) hebben peb volgende componenten gebruikt:

6 Pushbuttons

7 1kohm Resistors

1 Daj LED

1 Xiav LED

1 Arduino Uno R3

1 Ntsuab LED

2 Liab LED

1 Txoj kev lis ntshav

1 Cov qhob cij

1 Potentiometer

Kauj Ruam 2: Tsab Cai Bouwen

Tsab ntawv Bouwen
Tsab ntawv Bouwen
Tsab ntawv Bouwen
Tsab ntawv Bouwen
Tsab ntawv Bouwen
Tsab ntawv Bouwen

Om ons prototype te bouwen hebben peb al onze componenten gebruikt op een breadboard, deze breadboard dient thiab als testobject zodat peb niet meteen hauv de behuizing te werk moeten gaan. Daim ntawv ua piv txwv hebben peb thiab ook gedigitaliseerd ntawm tinkercad.com, op deze manier hadden peb een duidelijk overzicht van ons prototype dat elk groepslid ook kon bewerken.

Er worden 5 kleine pushbuttons gebruikt tuag fungeren als 5 snaren en een grote pushbutton tuag hauv kev sib txuas ua ke tau ntsib één ntawm meerdere 'snaren' moet worden ingedrukt om een auditief effect te krijgen. De verschillende LED-lampjes dienen gewoon als visuele controle om er zeker van te zijn dat de interactie succesvol werkt.

Kauj Ruam 3: Code Prototype

Code Tsab
Code Tsab

Globale sib txawv

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

// zet pin numbers waar mainButton (snaar) en andere nyees khawm aan 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 String namenKnoppen [aantalKnoppen] = {"Knop 1", "Knop 2", "Knop 3", "Knop 4", "Knop 5"}; const int knopPinnen [aantalKnoppen] = {2, 3, 4, 5, 6};

Yog li tsis muaj qhov sib txawv ntawm qhov pins van de LED lichtjes.

const int ledPin1 = 13; // tus lej ntawm tus pin LED 13

const int ledPin2 = 12; // tus naj npawb ntawm LED tus pin 12 const int ledPin3 = 11; // tus naj npawb ntawm LED tus pin 11 const int ledPin4 = 10; // tus naj npawb ntawm LED tus pin 10 const int ledPin5 = 9; // tus naj npawb ntawm LED tus pin 9 const int potPin = A5; // tus naj npawb ntawm LED tus pin A5

De laatste globale variabelen dienen als 'xeev' voor de sensors (zijn de pushbuttons ingedrukt ntawm niet? Potentiometer, lichtsensor).

// initialiseer buttonStates voor de knoppen (ingedrukt of niet) int mainButtonState = 0; int buttonState1 = 0; int buttonState2 = 0; int buttonState3 = 0; int buttonState4 = 0; int buttonState5 = 0; int lightSensorState = 0; cov potValue = 0; int lightValue = 0;

Teeb

Nu volgt de void teeb tsa functie. Deze yog van het hom void (geeft geen waarde terug) en de instructies hierin worden maar 1 keer uitgevoerd.

Bij elke functie yog tawm tswv yim geschreven wat er concreet gedaan wordt. Ntxiv uitleg dhau wat een specifieke functie concreet doet yog te vinden hauv de arduino siv

void teeb () {// data rate per seconde (baud) voor seriele data transmissie Serial.begin (9600); // Initialiseer de ledPin variabelen als output pinMode (ledPin1, OUTPUT); tus pinMode (ledPin2, OUTPUT); tus pinMode (ledPin3, OUTPUT); tus pinMode (ledPin4, OUTPUT); tus pinMode (ledPin5, OUTPUT); // initialiseer alle pushbuttons als input: pinMode (mainButton, INPUT); pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); pinMode (buttonPin5, INPUT); pinMode (potPin, INPUT); pinMode (lightSensor, INPUT); }

Tsis muaj dab tsi functie

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

void loop () {// lees paub staat van de pushbuttons uit (ingedrukt of niet) mainButtonState = digitalRead (mainButton); buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); buttonState3 = digitalRead (buttonPin3); buttonState4 = digitalRead (buttonPin4); buttonState5 = digitalRead (buttonPin5);

// txhua qhov teeb tsa khawm nyob hauv een array

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

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

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

// tshaj tawm een array mainStates en geef die de standaard waarden 0 hauv.

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

// voj hla de array aantalKnoppen

rau (int i = 0; i <aantalKnoppen; i ++) {pinMode (knopPinnen , INPUT); // initialiseer alle knopPinnen als input digitalRead (knopPinnen [kuv]); // lees paub tias waarde van alle knoppinnen uit // indien de mainswitch (snaar) ingedrukt yog, luam tawm txhua qhov knopnamen, txhua lub pob ntawv yog (mainButtonState == HIGH) {Serial.print (namenKnoppen ); Serial.print (","); Serial.println (buttonStates [kuv]); }}

Kauj Ruam 4: Tsab Ntawv Teev Npe

Nadat het prototype gebouwd yog volgens ons qauv en de code geschreven tab tom ua, yog 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.

Hauv de tweede video yog te zien hoe onze tremolo werkt aan de tes van een potentiometer hauv de gitaar en hoe de waardes worden uitgelezen hauv Kev Ua.

Kauj Ruam 5: Behuizing "ontmantelen" En Kijken Welke Componenten Gebruikt Gaan Worden

Behuizing
Behuizing
Behuizing
Behuizing
Behuizing
Behuizing
Behuizing
Behuizing

Als de code raug qhov tseeb werkte op het prototype zijn peb begonnen ntsib het "ontmantelen" van onze Guitar Hero-gitaar. Peb hebben de gitaar opengemaakt ntsib een schroevendraaier en bekeken welke originele componenten peb eventueel nog zouden kunnen hergebruiken voor onze maub los. Uiteindelijk hebben peb onze eigen pushbuttons hauv de bestaande nyees khawm gekregen (zie volgende stap). Peb hebben de tremolo ook gebruikt voor ons eindproduct en voor onze hoofdbutton (pib ua haujlwm khawm om als een combinatie af te spelen) hebben peb ook de originele twee nyees khawm gebruikt (zie vierde foto). Los ntawm LEDjes zullen verdwijnen (deze waren enkel ter indicatie zodat peb zagen dat txhua qhov knoppen kom raug werkten.

Kauj Ruam 6: Werking Originele Buttons + Dremelen

Werking Originele Nyees khawm + Dremelen
Werking Originele Nyees khawm + 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 nyees khawm te verwerken hauv de originele knoppen hebben peb de binnenkant van de originelen er grotendeels uitgehaald zoals te zien yog op de foto.

Kauj Ruam 7: Cov txaj txaj muag + Cov khawm Vastlijmen

Cov txaj txaj muag + Cov khawm Vastlijmen
Cov txaj txaj muag + Cov khawm Vastlijmen
Cov txaj txaj muag + Cov khawm Vastlijmen
Cov txaj txaj muag + Cov khawm Vastlijmen
Cov txaj txaj muag + Cov khawm Vastlijmen
Cov txaj txaj muag + Cov khawm Vastlijmen

Omdat peb niet meer ntsib een breadboard werken moeten de draden gesoldeerd worden om zo de verschillende componenten ntsib elkaar te verbinden. Nadat dit gebeurd yog kunnen peb de nyees khawm vastlijmen zoals te zien yog op de foto's. Eens dit gebeurd yog kunnen peb doorgaan naar de volgende stap.

Kauj Ruam 8: Plaats Ua Hauv De Behuizing

Plaats Ua hauv De Behuizing
Plaats Ua hauv De Behuizing
Plaats Ua hauv De Behuizing
Plaats Ua hauv De Behuizing
Plaats Ua hauv De Behuizing
Plaats Ua hauv De Behuizing

Omdat dit Guitar Hero-qauv redelijk krap yog om mee te werken hebben peb ntxiv plaats moeten maken d.m.v. dremelen. Zo hebben peb 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 yog te zien dat peb hauv de achterkant van de gitaar een doorgang hebben gecreëerd voor de draden tuag naar de nyees khawm gaan omdat de gitaar anders niet meer te sluiten yog. En op de laatste foto yog te zien dat peb de draden tuag rechtstreeks verbonden worden ntsib de Arduino qhov rooj een gat hauv de onderkant van de gitaar de behuizing verlaten.

Kauj Ruam 9: Txaj 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 txhua qhov kev tivthaiv tau ntsib nrog elkaar te verbinden hebben peb gebruik gemaakt van een protobord. Dit yog een bordje dat eigenlijk op net dezelfde manier werkt als een breadbord, maar dan betrouwbaarder en efficiënter. Peb hebben de bedrading aan het bordje gesoldeerd zoals te zien yog op de derde foto. Dit bord yog het centrale punt van waaruit al onze verbindingen vertrekken en samenkomen (zie foto 2).

Kauj ruam 10: Verstevigen

Verstevigen
Verstevigen

Als ua tiav kov yog het verstandig om de losse delen te verstevigen voor ntxiv stabiliteit. Op deze foto is te zien hoe het deel dat we er hebben uitgehaald d.m.v. dremelen achteraan de nyees khawm verstevigen ntsib stukjes karton.

Kauj Ruam 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 code yog opgedeeld hauv twee delen, het eerste deel yog hauv de arduino IDE (sib tham sib kev txhim kho ib puag ncig) geschreven. Tuag code wordt geüpload naar arduino zelf en dient om alle waarden van de sensors van de midi maub los uit te lezen en door te sturen naar processing.

Kev ua yog het tweede gedeelte. Deze code dient om alles wat arduino doorstuurt te ontvangen en door te sturen naar Reaper.

Arduino

/* Cov cai no yog cov duab kos yooj yim los tham nrog Kev Ua Haujlwm dhau los.

Nws yog daim phiaj xwm uas koj tuaj yeem tso koj tus lej

tau teev tseg rau koj tus kheej cov nyees khawm, lub zog loj lossis lub ntsuas pa.

Nws muaj kev tuav tes kom paub tseeb tias peb muaj kev sib cuag

thiab hom ntawv uas peb tab tom sib tham tau txiav txim siab

Nws yog ib qho tseem ceeb los tsim cov lus no ib yam nkaus, yog li Kev Ua Haujlwm paub yuav tsim nws li cas thiab xa cov lus OSC raug rau peb DAW

ua rau werkcollege AV&IT

Lub kaum hli ntuj 2017

*

/ baud tus nqi

const ntev baudRate = 115200;

// sijhawm tos hauv ms ntawm kev xaiv tsa mus rau tus pin

const int loopPauseTime = 200; // milli vib nas this

// pib thiab xaus qhov tseem ceeb rau cov lus xa hauv Serial

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

const char contactCharacter = '|';

// pin id os

// lwm yam kev hloov pauv thoob ntiaj teb

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

int mainButtonState = 0;

cov potValue = 0;

// analoge cov sensors

const int potPin = A5; // pin voor tremolo

// Peb xav tau txoj haujlwm no txhawm rau tsim kev sib cuag nrog Kev kos duab

// Khaws nws ntawm no tsis muaj dabtsis tsimContact () {thaum (Serial.available () <= 0) {Serial.print (contactCharacter); // xa tus lej thiab tos rau lo lus teb… ncua (loopPauseTime); } Serial.read (); }

void teeb tsa () {

// teeb tus pinModes rau txhua tus pin rau (int i = 0; i <aantalKnoppen; i ++) {pinMode (knopPinnen , INPUT); } pinMode (mainButton, INPUT); // tsis pom zoo yog tias koj siv lub ntsuas cua uas ua haujlwm ntawm 3V hloov 5V // koj yuav tsum xaim tus pin txuas rau 3.3V ib yam nkaus // analogReference (Sab Nraud);

// pib Serial comms

Serial.begin (baudRate); thaum (! Serial); // tos rau kev tuav tes tsimContact (); }

void voj () {

// KAUJ RUAM 1: Nyeem BUTTONS // pov npav tag nrho cov pins thiab daim ntawv qhia kev nyeem ntawv rau qhov tsim nyog ntau yam 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); rau (int i = 0; i <aantalKnoppen; i ++) {buttonStates = digitalRead (knopPinnen ); } potValue = analogRead (potPin); // piv txwv: // ntab v0 = daim ntawv qhia (bpm, 0, 1023, 60, 250); // yog tias koj xav siv qhov ntab ib txwm muaj (piv txwv li ntim) // ntab v1 = daim ntawv qhia (analogRead (pin2), los ntawm Min, fromMax, 0, 100) / 100.0;

KAUJ RUAM 2: Sau ntawv

Serial.print (startString); // pib cov lus sib txuas rau (int i = 0; i <aantalKnoppen; i ++) {if (mainButtonState == HIGH) {Serial.print (namenKnoppen )); Serial.print (","); Serial.print (buttonStates [kuv]); yog (kuv <aantalKnoppen - 1) {Serial.print (","); }} lwm tus {buttonStates = 0; Serial.print (namenKnoppen [kuv]); Serial.print (","); Serial.print (buttonStates [kuv]); yog (kuv <aantalKnoppen - 1) {Serial.print (","); }}} Serial.print (","); Serial.print ("tremolo"); Serial.print (","); Serial.print (daim ntawv qhia (potValue, 0, 1023, 0, 100)); // sau qhov kawg ntawm cov lus Serial.print (endString);

// tos ib pliag..

ncua (loopPauseTime); }

Ua

Kev tsis lees paub: 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 qhia moeten aangepast worden (indien nodig):

// Baudrate moet hetzelfde zijn zoals hauv de arduino kos duab

kawg int baudRate = 115200;

// Zoek naar het IP chaw nyob hauv reaper (zie screenshots hauv bijlage)

// Ua stuurt naar dit andres en reaper luistert hier naar //

// kawg txoj hlua remoteIP = "192.168.1.43"; // np. "127.0.0.1";

Txoj hlua kawg remoteIP = "10.3.209.60";

// Nco tseg ntawm sendPort thiab sau qhov no hauv Reaper.

// Nov yog qhov chaw nres nkoj Kev xa mus rau thiab Reaper mloog.

kawg int listenPort = 12000, sendPort = 12000;

// Lub mloog lus ntawm no yog txhawm rau txhawm rau debug.

// portNames nyob ntawm no los debug ib yam.

// kawg String portName = "/dev/ttyACM0";

Txoj hlua kawg portName = "COM5"; // "/dev/ttyUSB0";

/////////////////////// END ntawm USER PARAMETERS /////////////////////////// ////

ntshuam ua.serial.*;

ntshuam java.util.*;

ntshuam oscP5.*;

ntshuam netP5.*

OscP5 oscP5;

NetAddress myRemoteLocation;

Serial commsPort; // Qhov chaw nres nkoj

boolean messageArrived = tsis tseeb;

Txoj hlua tuaj = "", IncomingOSCMessage = "";

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

// Kom paub tseeb tias peb tsuas yog xa cov ntsuas (qhov tseem ceeb) uas hloov pauv

// cov kev hloov pauv thoob ntiaj teb no tau raug tshem tawm ntawm no tab sis yuav tsum // tsis tau pib ua ntej ntawm no! HashMap oldParams, newParams, toSendParams;

// Peb yuav tsum faib cov lus ntawm txhua tus lej

void processIncoming () {String resVec = incoming.split (","); // peb tau txais lub npe+tus nqi khub // yog li rau txhua lub npe (+2)… sim {rau (int i = 0; kuv <resVec.length; kuv+= 2) {ntab tus nqi = Float.parseFloat (resVec [kuv+ 1]); // muab lawv tso rau hauv Hashtable newParams.put tshiab (resVec , tus nqi); }} // Yog tias muaj qhov yuam kev tshwm sim, cia peb ntes nws tso tawm thiab tawm mus. catch (Exception ex) {println ("Xov Xwm Zam:" + ex); printArray (resVec); tawm (); }}

// Txhawm rau lim peb cov lus

/ * Peb paub tseeb tias tsuas muaj OSC-tawm lus thaum * cov lus nkag (Serial) hloov pauv * Qhov ntawd yog: yog peb tig/thawb lub pob thiab nws hloov pauv tus nqi. * Yog li peb lim tawm cov txiaj ntsig tuaj uas hloov pauv tiag tiag * ceeb toom: peb yuav tsis zam kev dhia qhov tseem ceeb * raws li los ntawm piv txwv li kev ntsuas nrawm lossis ntsuas qhov deb * koj yuav tsum tau ua kom zoo rau koj tus kheej hauv Arduino */ khoob khoob filterParams () {toSendParams = tshiab HashMap (); rau (Txoj hlua tseem ceeb: newParams.keySet ()) {// yog tias tus yuam sij twb muaj tam sim no yog (oldParams.containsKey (tus yuam sij)) {{qhov tseem ceeb tam sim no thiab tus nqi tsis zoo ib yam, tom qab ntawd hloov tshiab yog (! oldParams.get (tus yuam sij).equals (newParams.get (qhov tseem ceeb))) {toSendParams.put (qhov tseem ceeb, newParams.get (qhov tseem ceeb))); }} lwm qhov {// qhov tseem ceeb tsis muaj nyob hauv cov params qub, yog li muab tso rau! toSendParams.put (qhov tseem ceeb, newParams.get (qhov tseem ceeb)); } oldParams.put (qhov tseem ceeb, newParams.get (qhov tseem ceeb)); }}

void makeOSC () {

rau (Txoj hlua tseem ceeb: toSendParams.keySet ()) {OscMessage myMessage = tshiab OscMessage ("/"+ qhov tseem ceeb); myMessage.add (toSendParams.get (qhov tseem ceeb)); / * xa xov */ oscP5.send (myMessage, myRemoteLocation); }}

tsis muaj dab tsi translateMessage () {

txheej txheem tuaj (); filterParams (); cov makeOSC (); } // Thaum peb xav luam tawm rau lub qhov rai tsis muaj dab tsi ShowIncoming () {// kom pom cov lus xa tuaj, raws li teev hauv HashMap ntawv ("Tuaj los ntawm Arduino", 20, 20); int y = 20; rau (Txoj hlua tseem ceeb: newParams.keySet ()) {y = y+20; ntawv (qhov tseem ceeb, 20, y); ntawv (newParams.get (qhov tseem ceeb), 300, y); }}

void showOsc () {

ntawv (IncomingOSCMessage, 300, 200); IncomingOSCMessage = ""; }

void teeb tsa () {

loj (1000, 800); // Theem loj sau (255); keeb kwm yav dhau (0); oldParams = tshiab HashMap (); newParams = tshiab HashMap (); // printArray (Serial.list ()); commsPort = Serial tshiab (qhov no, portName, baudRate);

/ * pib oscP5, mloog cov lus xa tuaj */

oscP5 = OscP5 tshiab (qhov no, mloog qhov chaw);

/* myRemoteLocation yog NetAddress. NetAddress siv 2 qhov ntsuas, * tus IP chaw nyob thiab tus lej chaw nres nkoj.myRemoteLocation tau siv ua qhov ntsuas hauv * oscP5.send () thaum xa osc pob ntawv mus rau lwm lub computer, ntaus ntawv, * daim ntawv thov. siv saib hauv qab no. rau kev ntsuam xyuas lub hom phiaj mloog chaw nres nkoj * thiab chaw nres nkoj ntawm qhov chaw nyob deb yog qhov zoo ib yam, yog li koj yuav * xa xov rov qab mus rau qhov kos duab no. */ myRemoteLocation = NetAddress tshiab (remoteIP, sendPort); }

void kos () {

yog (messageArrived) {keeb kwm yav dhau (0); Txhais lus (); ShowIncoming (); messageArrived = tsis tseeb; } showOsc (); }

tsis muaj dab tsi serialEvent (Serial commsPort) {

// nyeem ib byte los ntawm cov chaw nres nkoj txuas: char inChar = commsPort.readChar (); hloov (inChar) {case contactCharacter: commsPort.write (contactCharacter); // nug kom tau ntau println ("pib …"); tawg; rooj plaub startChar: tuaj = ""; tawg; rooj plaub endChar: messageArrived = muaj tseeb; // println ("kawg ntawm msg"); tawg; default: khoom += inChar; tawg; }}

/* cov lus osc xa tuaj raug xa mus rau cov txheej txheem oscEvent. */

void oscEvent (OscMessage theOscMessage) {ntab tus nqi = theOscMessage.get (0).floatValue (); // tau txais 1st osc kev sib cav

IncomingOSCMessage += "\ n" +

String.format ("### tau txais cov lus osc:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", tus nqi); println (IncomingOSCMessage); }

Kauj Ruam 12: Tus Tswj Tus Kheej

Nu alles yog aangesloten, txhua tus lej yog geschreven thiab txhua tus yog gedubbelcheckt yog het eindelijk tijd om de tus tswj z'n ua haujlwm te laten doen. Zoek een paar leuke effecten op Reaper en geniet van de voltooide Guitar Hero MIDI Controller!

Pom zoo: