La batería

Green Day: Rock Band fue el último videojuego musical que jugué; obtuve su platino el primero de enero de 2024. Escribí al respecto hace un par de semanas, comentando que volví a usar mi robot y que fue sencillo cambiar el backend para que en lugar de mi Teensy++ 2.0 utilizara un Raspberry Pi Pico para manejar el microcontrolador de mi guitarra oficial de Rock Band.

Sin embargo, mientras actualizaba el robot y leía al respecto, me enteré de la existencia del MIDI Pro-Adapter para Wii. Esto me interesó por múltiples motivos.

Debo aclarar que esto ya no tiene nada qué ver con mis trofeos en PlayStation; ya tengo todos los trofeos de todos mis juegos musicales. Esto fue literalmente por deporte.

El MIDI Pro-Adapter es un (sorpresa) adaptador MIDI; permite conectar una batería electrónica (de hecho, cualquier instrumento MIDI), y el adaptador se conecta al PlayStation 3/4/5 por USB como siempre. El adaptador tiene los botones necesarios para funcionar como un controlador limitado en el PlayStation; pero puede interpretar ciertas notas del instrumento MIDI y traducirlas a los eventos que generan las baterías de plástico en los juegos de Rock Band; supongo que debe funcionar también con los juegos de Guitar Hero, pero la verdad no he probado.

La idea es usar una batería (electrónica) de verdad para jugar Rock Band; lo cual me parece bastante chido, por cierto. Sin embargo, mi interés en el adaptador se centró en las posibilidades de programación y de un proyecto de hardware interesante.

Resulta que uno puede programar un instrumento MIDI virtual en casi cualquier microcontrolador habido en el universo; pero en particular funciona en el Raspberry Pi Pico, que he venido usando en múltiples proyectos últimamente porque es baratísimo: 120 pesos en estos momentos en Amazon; menos de la mitad en Ali Express, que la verdad se ve medio hechizo, pero los comentarios hacen creer que sí funciona.

Entonces el plan era alambrar un instrumento MIDI en un Pi Pico, conectarlo al adaptador MIDI, y vía USB usar mi robot (el mismo robot que he venido desarrollando desde hace más de una década) para tocar la batería.

Ahora, mi robot ya puede tocar la batería en mi microcontrolador Teensy++ 2.0; pero siempre ha sido, quisquilloso, vamos a decir. Nunca he implementado bien todo el protocolo USB que utilizan los controladores de Rock Band y Guitar Hero; por esto en Green Day: Rock Band no podía usar “finger tapping”; ni tampoco detectar la fuerza de los batacazos en Guitar Hero Metallica. Si implementaba esta nueva versión no habría ese problema (al menos en Rock Band), porque usaría el instrumento oficial (el adaptador); yo sólo escribiría lo que le manda información MIDI al adaptador.

Más grave que las limitaciones de mi implementación USB (aunque probablemente relacionado), muchas veces un juego no acepta mi robot si emula el instrumento correspondiente al juego: en otras palabras, si juego Rock Band, entonces mi robot tiene que emular la batería de Guitar Hero; y si juego Guitar Hero, entonces tengo que emular la batería de Rock Band. Esto no es 100% cierto en todos los juegos ni todos los instrumentos; sólo pasa en algunos juegos con algunos instrumentos, pero es el patrón de fallo más común.

Lo que me imagino que pasa, es que cada compañía se ponía más flexible si detectaba instrumentos de la competencia, porque querían que los usuarios pudieran mezclarlos entre todos los juegos, al menos al inicio. Con los instrumentos correspondientes rápidamente se da cuenta el juego de que el instrumento no es “oficial” y sencillamente no lo acepta.

Esto resultó en que, en Rock Band 4, en general mi robot tuviera problemas con las partes de batería; si utilizo la batería de Guitar Hero (que estoy obligado, porque la de Rock Band la rechaza), las notas no corresponden exactamente y mi robot se confunde. Podría haberlo investigado más profundamente; de hecho estoy 94% seguro de que era nada más intercambiar ciertos colores y combinar un par, pero como no era absolutamente necesario para sacar el platino, no lo hice; nada más se quedaron las rolas con batería sin estrellas doradas.

Y de ahí mi interés en el adaptador MIDI: el pretexto fue para rascarme la comezón de que no tengo estrellas doradas en la parte de batería en mis rolas de Rock Band 4, pero realmente fue el deseo de experimentar con otra manera de hacer trampa para tocar los instrumentos de Rock Band, experimentar un poco más con el Raspberry Pico Pi y además alambrar un instrumento virtual MIDI, que nunca había hecho.

Como sea: el primer problema fue encontrar el adaptador. Si pusieron atención, queridos lectores, habrán notado que el adaptador que mencionaba es para Wii, el Nintendo Wii; sí existe para PlayStation, pero por lo que pude ver en línea es básicamente imposible de encontrar, y cuando aparece suele ser carísimo. En cambio la versión para Wii es relativamente sencilla de encontrar y a un precio razonable; y los degenerados que se pusieron a analizar los adaptadores se dieron cuenta de que ambos (el de PlayStation y el de Wii) son idénticos, excepto por un jumper que uno fácilmente puede desoldar o sencillamente romper con unas pinzas.

(Por cierto, al parecer este no es el caso para el Xbox 360; no tengo idea por qué, pero me da mucha risa).

Como sea, eso fue lo que yo hice; encontré el adaptador para Wii en eBay en 54 dólares, llegó a mi casa, le quité el jumper y funcionó en Rock Band 4 sin problemas.

El segundo problema fue programar el Raspberry Pi Pico para que funcionara como instrumento MIDI; que fuera backend de mi robot ya lo había hecho para sacar el platino de Green Day: Rock Band con el microcontrolador de mi guitarra. Programar los mensajes del protocolo resultó ser medio trivial, porque el protocolo MIDI es de los setentas y entonces es más espartano que Leónidas: consiste en enviar nada más tres bytes cada vez que una nota se toca o se deja de tocar: byte 1, el estado de la nota, si se prende o se apaga; byte 2, la nota que se debe prender o apagar; y byte 3, la “velocidad” de la nota, que al parecer es básicamente el volumen de la misma.

El problema realmente fue descifrar exactamente qué parámetros correspondían a qué pines en el microcontrolador, porque casi toda la documentación que hay para el Pico viene con ejemplos que están en Python, que a mí no me interesaba en lo más mínimo. Yo lo hice en C; y uno esperaría que fuera trivial pasar de Python a C, pero no es el caso en mi experiencia.

La respuesta fue que el UART que hay que usar es el 1, no el 0; y que el pin correspondiente es el que tiene identificador 4, pero que su número es 6. ¿Por qué? No tengo idea; esto lo encontré en básicamente un blog, y encima de todo nunca explican por qué.

El tercer problema fue alambrar todo; y para mí sí fue problema porque nunca estudié electrónica y me da mucha hueva. En todo lo que leí, se hacía mucho hincapié de que era necesario poner varias resistencias en varios puntos del circuito. Sé que eso tiene que ver conque Victoria Reina de Inglaterra, pero no sé porqué y no me interesa averiguarlo; yo seguí los diagramas como Marx me dio a entender y le recé a los dioses oscuros en los que nunca he creído para que no saliera humo mágico de ninguna pieza al conectar todo.

Cuando por fin llegó el momento de hacer mi prueba no salió humo mágico, pero por supuesto no funcionó, o al menos no consistentemente; estuve meneándole varias horas hasta que por fin me di cuenta de que sencillamente no estaban bien conectados los cables en varios puntos, porque no estaban soldados ya que sólo era una prueba. Así que soldé todo en una placa (paradójicamente, de prueba), volví a hacer mis pruebas y por fin todo funcionó.

El nuevo backend

El nuevo backend

Jala de pelos; en la gran mayoría de las canciones de Rock Band 4 mi robot puede no sólo obtener estrellas doradas, de hecho puede sacar full combo; dícese no cometer ni un solo error.

Esto no es en todas las canciones, porque el famoso adaptador MIDI no permite bataquear a la máxima velocidad de manera sostenida; no queda claro si esto es por mala onda o por algún error en el hardware, pero esto ha causado que inventen soluciones equivalentes al adaptador MIDI que se supone no tienen ese problema. A mí me parece medio caro, pero es más bien para las personas que sí quieren usar una batería (electrónica) de verdad para jugar Rock Band y obtener full combo en todas las canciones.

Como sea, no quería sacar las canciones de manera perfecta; sólo quería estrellas doradas. Además, quiero dejar bien claro que nunca he usado mi robot para tratar de escalar las listas de mejores jugadores; admiro mucho a la gente que usando únicamente su talento inato y practicando durante años se han vuelto vaguísimos en el juego. Yo descaradamente estoy haciendo trampa primero por mis trofeos y aquí nada más por las estrellas doradas (aunque realmente para entretenerme diseñando y alambrando el circuito).

Estuvo muy divertido programar para el Pico y alambrar todo; pero sigo alegrándome de haber estudiado Ciencias de la Computación y no Ingeniería de la Computación. Puedo soldar este tipo de circuitos, pero eso no necesariamente quiere decir que yo deba soldar este tipo de circuitos.

Imprimir entrada Imprimir entrada

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *