#6539
Me gusta, me gusta! Nunca me lo hubiera imaginado así, está muy buena la idea! Ahora, veo que planteas el editor directo sobre tablet, que tal vez sea el camino a seguir, yo tenía pensado que el editor principal fuera de escritorio y con él se pudieran generar instrumentos virtuales para otros dispositivos. Sin duda es un desafío técnico más allá de lo que tenía planeado, como dice Jordipab, el tema de multiplataforma va a ser complicado, cada vez más Qt parece una buena opción.
Al igual que Jordipab donde tengo más experiencia es en .Net, algo de Java he hecho, hice computación gráfica en C (no se lo deseo a nadie jaja) y tengo bastante experiencia con Javascript, html y css (leí por ahí que Qt se puede manejar con lenguajes de scripting, si se pudiera con javascript sería genial).
Subo un pequeño diagrama de bloques que falta desarrollar y documentar, lamentablemente esta semana tengo parciales en la facultad y no pude hacer nada más. Me parece muy importante para un proyecto como este diseñar bien y documentar antes de hacer código, sería excelente poder dejar todo muy abierto a la extensión para poder ir desarrollando de a poco y permitir que otros puedan hacer sus aportes. Suena un poco académico para un proyecto hobbie, pero tampoco es que sea un proyecto que se haga en un fin de semana
En principio serían 2 módulos principales: el creador de controladores(CC, a la izquierda) y el creador de instrumentos(CI, a la derecha), deberían ser completamente independientes y se deberían poder utilizar por separado.
CC:
Creador de UI MIDI: Permitiría hacer interfaces gráficas con knobs, sliders, botones, etc. para diseñar el tablero del sinte virtual. A cada uno de los controles se le asigna un mensaje midi/sysex y un valor o rango de valores (como en cualquier controlador midi). Luego este dibujo en la pantalla se exporta a un lenguaje intermedio que especifica lo que se ha diseñado y los parámetros asignados.
Generador de binario: Debe tomar como entrada una especificación de tablero en el lenguaje intermedio y dar como salida un binario para alguna plataforma en particular. El binario generado debe funcionar como controlador midi virtual enviando los mensajes programados en el Creador de UI MIDI. Habrá un generador de binario para cada plataforma, por eso la importancia del lenguaje intermedio, ya que documentándolo bien cualquiera que tenga ganas puede hacer un generador para un plataforma determinada.
Ya que el módulo CC es totalmente independiente y los controladores virtuales generados cumplen con la especificación MIDI podría utilizarse para generar controladores para cualquier otro sinte.
CI:
Editor modular VAST: La interfaz gráfica sería el diseño de Carlos, permite editar completamente los parámetros de Kurzweil, de momento creo que una imagen vale más que mil palabras

El patch editado se exporta a un lenguaje intermedio VAST para salvar diferencias en la implementación midi entre diferentes modelos de Kurzweil.
Generador de sysex: En base a una especificación en lenguaje intermedio VAST genera un dump para cargar en el Kurzweil.
Temas a resolver/tener en cuenta:
-El editor VAST debería poder modificar los parámetros del K en tiempo real para que sirva de algo, tal vez haya que tirar por la borda el lenguaje intermedio VAST y el editor debería conocer el modelo de K que está editando.
-Un módulo integrador que utilice a CC y CI para poder editar y probar el tablero y el patch a la misma vez en tiempo real.
Mi granito de arena por el momento, pero creo que servirá para que podamos encontrar nuevos requerimientos y problemas que permitan llevar el diseño a más bajo nivel.
Me entusiasma que haya gente interesada en esto, voy a tratar de meterle tiempo a este proyecto.
Saludos!