Stap 9: Laat Max binnenkomende OSC berichten beluisteren en stuur ze vanaf
Nu we gemakkelijk uit de hele Max stap hier laten kunnen (omdat we gebruik OSCulator), maar ik veronderstel u een Max-hoofd en er zijn een ontelbaar andere dingen u kunt doen met Arduino OSC berichten die leuk in Max zijn.
Voor een ding, we hebben verlaten het bereik van de analoge van de Arduino te lezen [0.. 1023], terwijl een MIDI-CC een 7 bits getal in het bereik is [0.. 127]. Als u overslaan de hele benadering van de Max-midden-man wilt, kunt u het nummer van de analoge schalen in de Arduino-code voordat u het omzetten in een pakket OSC. Dat is gewoon een kwestie van het gebruik van deze lijnen van code:
int sensorValue = analogRead(A0); int outputValue = map(sensorValue, 0, 1023, 0, 127); OSCMessage Msg("/analog/0"); Msg.add(outputValue);
Maar als je dit instructable volgen, zullen wij doen in plaats daarvan de schaal Max. Zoals u in de afbeelding zien kunt, sturen we twee UDP-pakketten. Links een verzendt naar een machine met nog een ander IP-adres die ook luistert naar poort 5678, terwijl het recht men op de machine, maar naar poort 5679 stuurt. Dus wat is de deal? Als u wilt dingen simpel te houden, gewoon gebruik maken van het rechterdeel. Dat is waar Max een verkleinde versie van de OSC gegevens stuurt naar OSCulator (in de volgende stap). Een vereenvoudigde Max patch die enkel dat doet wordt hier geplakt:
----------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-----------
Nog steeds moet u het IP-adres in het [udpsend]-object veranderen van uw machine draait OSX. De meer ingewikkelde patch met de twee [udpsend]-objecten toont aan hoe gemakkelijk kunt u Max dezelfde OSC bericht naar verschillende ontvangers versturen. In feite, was het links [udpsend] voor mijn iPad TouchOSCuitgevoerd.
Een paar opmerkingen over de patch Max:
- Het object [regexp] afgeleid uit de parameter van de OSC-bericht. In principe we negeren het hele /analog/0-gedeelte van het bericht en zijn alleen geïnteresseerd in de werkelijke waarde. Maar je kunt zien hoe men Max patch kan worden gebombardeerd met verschillende OSC berichten met verschillende namen. Op deze manier kunt u beslissen wat te doen met welke boodschap, of onderscheid maken tussen verschillende potentiometers, enz.
- Het object [wijzigen] zal u de hoeveelheid gegevens beperken. De lus in de code van de Arduino signaal gewoon de OSC over en over en weer aan het luisteren apparaten. U wilt alleen de gegevens reageren wanneer iemand de potentiometer draait, dat is waar het object [wijzigen] komt.
- [schaal] Uiteraard doet hetzelfde als de functie map() in de Arduino code kon eerder gedaan hebben. Het brengt de waarde van de parameter terug uit [0.. 1023] aan de gemeenschappelijk MIDI CC waarde bereik van [0.. 127].
- [sprintf "/ midicc42 %d"] verandert de binnenkomende gegevens in een geheel nieuwe OSC-bericht. Dit is gewoon om te laten zien hoe krachtig Max kan zijn als een middelste man tussen al uw OSC behoeften.