Kontrollera en MIDI CC i Ableton Live med en Arduino Uno (9 / 11 steg)
Steg 9: Låt Max lyssna på inkommande OSC meddelanden och skicka dem och framåt
Nu vi kan enkelt lämna ut hela Max steg här (eftersom vi använder OSCulator), men jag gissar att du är en Max huvud och det finns en zillioner andra saker du kan göra med Arduino OSC meddelanden som är kul i Max.
För en sak, vi har kvar spänna av Arduino analog läsa till [0.. 1023], medan en MIDI CC är en 7 bitars tal i intervallet [0.. 127]. Om du planerar att hoppa över hela Max mitten-man strategi, kanske du vill skala den analoga tal i Arduino koden innan du förvandla det till en OSC paketet. Det är helt enkelt en fråga om att använda dessa rader kod:
int sensorValue = analogRead(A0);
int outputValue = karta (sensorValue, 0, 1023, 0, 127);
OSCMessage Msg("/analog/0");
MSG.Add(outputValue);
Men om du följer detta instructable, vi kommer att låta Max göra skalningen istället. Som ni kan se i bilden, skickar vi två UDP-paket. Till vänster en skickar till en maskin med ännu en IP-adress som också lyssnar på port 5678, medan rätten en skickar samma maskin utan port 5679. Så vad är problemet? Om du vill hålla det enkelt, bara använda den högra delen. Det är där Max skickar en förminskad version av OSC data till OSCulator (i nästa steg). En förenklad Max patch som gör just detta klistras in här:
---begin_max5_patcher---
677.3ocuV8uaaBCD9uIOEVVZRaprTaiAi2qRyTEAbothXPfIKUU8ce9Gg1jT
ZCoh1HEr8wcm+tye2geZQ.bc8NQGD7GvMfffmVDD3DYEDrec.bS1t7prNmZv
MhttrRALz + NsXm1IOhOHpISmeuTUdaqHW6ccRBeIJDPhY1AZraAYIB7281T2
qqDZ8iMBuAP3KupS + XkSJbXCjEtk0qe3233Agp9MRkwGNTRdUn2yNo3Cvbdc
UcqeuPKoQbBNIzLiQ4HhcBI1OCe.HWWdjUQrDJCaUNJkFgo1YzQsfbAlT1lU
HEJ8g.dc4cxpJmqtcHGA8XYDMbOwWDJOw3WvKgivbWhIBwSQT+LiH7Y7vfCP
VKPL6N6rkfiS3uusYpR + YMgYs8sJzzV2T2pk0JqVFGxGyK855CSiFWYU54EK
rOBmHQWI9mgg8FddWSqTouCrBd8FYgLOmR. + nXE7CX + wj3CX + XRx7Q + oiR + w
iS+mwjPdVk.f.XDIxNPXSH7wN5.FSlsvmOZzm7UG88EMcBUA.yIKwIoKwrzk
FVPbBie9zPDh5RCo72jF9vXM9BNomQ5d98lZRw4CKbh6XMwzBM9rmtg.noFZ
XXZwe5ED + QyW72JJE6ZrU6Yprp5xqQfetx7q3pe8g07TN0kIvXeQOEMAVe3I
+mVlgbAYl3YsJvDtB4Vgk4mNgbAyyTvnYqA.6S19y4cXkTc5cebn2J+37QWc
ea9.1124A7J7KDcZoJa3yR275cS.3WT5dYQgv + YqAyjcYqqDEueI6rBG5QJ8
UBmzI.G92FZXS.MjuMzPNhTLNZR+1PyIjhwgS7mDN9prrllsh1t8tzgDS+kG
72QjE5VJU9kNOZ54tUNnejSRVqomh1zPou02KXWh + lOvM0EhVUubeEtYmedw
+ 8s4tuB
---end_max5_patcher---
Du behöver fortfarande ändra IP-adressen i [udpsend]-objektet till en av din maskin som kör OSX. Mer komplicerade lappen med de två [udpsend] objekt visar hur du enkelt kan använda Max skicka samma OSC budskap till olika mottagare. I själva verket var vänster [udpsend] för min iPad kör TouchOSC.
Några anteckningar om Max korrigeringsfilen:
- [Regexp] objektet parsa ut parametern från OSC meddelandet. I princip vi ignorera det hela /analog/0 med meddelandet och är endast intresserade av det faktiska värdet. Men du kan se hur en Max patch kan bli bombarderade med flera OSC meddelanden med olika namn. Detta sätt kan du bestämma vad du ska göra med vilken meddelande, eller skilja mellan olika potentiometrar, etc.
- [Ändra] objektet kommer att hålla mängden data. Slingan i Arduino koden bara OSC meddelandet skickas över och om och om igen till alla hjälpmedel. Du bara vill reagera på data när någon vänder potentiometern, som är där objektet [Ändra] kommer in.
- [skala] uppenbarligen gör samma som funktionen map() i Arduino kod kunde ha gjort tidigare. Det ger parametervärdet tillbaka från [0.. 1023] till gemensamma MIDI CC värde rad [0.. 127].
- [sprintf "/ midicc42 %d"] förvandlar inkommande data till en helt ny OSC meddelande. Detta är bara för att visa hur kraftfull Max kan vara som en mellanhand mellan alla dina OSC behov.