Paso 9: Dejar Max escuchar los mensajes entrantes de OSC y enviarlos a partir
Ahora podemos dejar fácilmente hacia fuera el entero máximo paso aquí (ya que usamos OSCulator), pero supongo que eres una cabeza de Max y hay chorrocientos otras cosas que puedes hacer con los mensajes de Arduino OSC que son divertidas en Max.
Por un lado, nos queda la gama de la analógica Arduino Lee a [0.. 1023], mientras que un MIDI CC es un número de 7 bits en el rango [0.. 127]. Si va a saltar lo máximo hombre medio entero, puede escalar el número analógico en el código de Arduino antes de convertirlo en un paquete OSC. Trata simplemente de la utilización de estas líneas de código:
Pero si sigues este instructable, dejaremos que Max hacer la escala en su lugar. Como se puede ver en la imagen, enviamos dos paquetes udp. La izquierda se envía a una máquina con otra dirección ip que también escucha a Puerto 5678, mientras la derecha se envía a la misma máquina pero al puerto 5679. ¿Cuál es el precio? Si desea mantener las cosas simples, solo usa la parte derecha. Es donde Max envía una versión escala de los datos OSC a OSCulator (en el paso siguiente). Un parche de Max simplificado que hace justamente eso se pega aquí:
Necesita cambiar la dirección IP en el objeto [udpsend] a la una de la máquina ejecutando OSX. El parche más complicado con los dos objetos [udpsend] muestra cómo fácilmente puede usar Max para enviar el mismo mensaje OSC a diferentes receptores. De hecho, la izquierda [udpsend] fue para mi iPad con TouchOSC.
Algunas notas sobre el parche de Max:
- El objeto [regexp] analiza el parámetro del mensaje OSC. Básicamente que ignorar la parte entera /analog/0 del mensaje y sólo interesa el valor real. Pero se puede ver cómo un Max parche podría ser bombardeado con varios mensajes OSC con diferentes nombres. De esta manera usted puede decidir qué hacer con qué mensaje, o distinguir entre potenciómetros diferentes, etc..
- El objeto [cambiar] será reducir la cantidad de datos. El bucle en el código de Arduino solo envía el mensaje OSC y una y otra vez a todos los dispositivos de escuchas. Sólo quiere reaccionar a los datos cuando alguien gira el potenciómetro, que es donde el objeto [cambiar].
- [escala] Obviamente hace lo mismo que la función map() en el código de Arduino podría haber hecho antes. Trae el valor del parámetro de [0.. 1023] a la común MIDI CC valor rango de [0.. 127].
- [sprintf "/ midicc42 %d"] convierte los datos entrantes en un nuevo mensaje OSC. Esto es sólo para demostrar lo poderoso Max puede ser como un intermediario entre las necesidades de tu OSC.