La plataforma Synth Core B
Ya he dado a conocer toda la información de la placa de desarrollo de sintes y controladores en la que vengo trabajando desde hace bastante tiempo: la Synth Core B (www.tolaemon.com/scoreb). He pasado los dos últimos meses puliendo algunos detalles del firmware, terminando la web, y decidiendo algunos apartados de la licencia. Llegados a este punto, se puede decir que el proyecto ya está listo para ser presentado en público. Todo está aún un poco verde y queda mucho por hacer, pero ya hay información y recursos suficientes como para comenzar a hacer cosas interesantes con ésta.
La plataforma Synth Core B es un conjunto hardware-software que ofrece los recursos básicos necesarios para crear sintetizadores o controladores, e inicialmente, está dirigida a desarrolladores con conocimientos de programación en C y con nociones básicas de electrónica. El objetivo es proporcionar a éstos la base necesaria para que se puedan centrar desde un principio en la implementación de las funcionalidades de más alto nivel y evitarles la tediosa tarea de diseño de la electrónica principal, los drivers y APIs para controlarla. Digo "inicialmente" porque, a medio plazo, me gustaría incorporar algún intérprete de lenguaje de alto nivel (tipo BASIC) para que los menos iniciados en programación también puedieran hacer sus pinitos.
Así, la placa dispone de los siguientes elementos hardware y software:
- Microcontrolador Atmel AVR32 AT32UC3A-512 de 32-bit con prestaciones DSP y orientado a audio, con 512KBs de memoria de programa y 64KBs de SRAM interna.
- 32MBs de RAM externa (SDRAM de 32MBs) para guardar muestras u otra información.
- Puerto USB-Serie (basado en el FT232RL FTDI)
- Puerto USB Host-Device
- Interfaz MIDI (MIDI IN, MIDI OUT, y MIDI THRU)
- 2 slots de tarjeta SD uno en la placa y otro externo.
- Interfaz para control del LCD
- 7 conversores ADCs para potenciómetros u otras medidas (se podrían añadir más mediante conmutación)
- 40 lineas de E/S (con USART, SPI ...) para poder expandir la placa y controlar otros periféricos o procesadores.
- Canal serie RS-232 para depurar o comunicar con otros dispositivos.
- Preamplificador de salida para el conversor DAC de audio de la placa.
- Librerías y drivers (Synth Core Libs) en lenguaje C para controlar y utilizar de forma rápida y sencilla todos los elementos de la placa.
Las fotos muestran en que consiste la placa. En algunas se ve a esta tal cual y en otras aparece montada dentro de la caja de un viejo polímetro que utilizo como chasis improvisado, y que ejemplifican el modo en que la plataforma se puede utilizar para implementar diferentes sintetizadores, controladores etc.
La idea de construir algo así surgió al darme cuenta de que una parte muy importante del tiempo invertido en el diseño de cada uno de mis instrumentos lo dedicaba a la electrónica básica, los drivers etc. y esta parte era muy similar en todos los proyectos. Por eso pensé que para disminuir el tiempo de desarrollo de cada proyecto, sería buena idea disponer de una plataforma genérica con todo lo necesario y reutilizarla en los diferentes equipos que fuera construyendo. Debía encontrar un equilibrio entre variables como el precio, prestaciones y complejidad. Hice un primer intento con la Synth Core A (www.tolaemon.com/scorea) pero la placa era más compleja y más cara de lo que yo quería, así que realicé esta segunda revisión eliminando componentes y optimizando algunas partes del hardware.
He invertido bastantes horas en el proyecto, y no me gustaría que se quedara guardado en un cajón. Por esto he decidido compartir en Internet todo el trabajo hecho hasta la fecha. Toda la información del proyecto (los esquemáticos, gerbers y código fuente) está disponible en la web y cualquiera puede consultarla o descargarla y usarla a su antojo siempre que acepte las condiciones de la licencia. En realidad el concepto de la licencia es muy simple: cualquiera es libre de utilizar cualquier información allí contenida (código, esquemáticos) o vender sus diseños basados en estos sin tener que pedirme ningún permiso ni pagarme nada a mi. La única obligación que tiene es indicar en determinados puntos de su sinte o controlador (el panel frontal, manual, web, PCB...) que se ha basado en la Synth Core B y sus librerías, las Synth Core Libs.
Disponer de toda la información del proyecto en Internet está bien, pero esta puede ser un tanto compleja, y entiendo que lo ideal para un desarrollador (a no ser que realmente quiera hilar muy fino y ajustar algunas partes del hardware muy concretas) es poder adquirir las placas ya hechas y no tenerse que preocupar por encargar PCBs, hacer pedidos de componentes y pasarse horas soldando y corrigiendo errores de hard. Por eso, aunque ando muy escaso de tiempo, a medio plazo me gustaría sacar una pequeña tirada de placas ya montadas para aquellos que estuvieran interesados en desarrollar sobre esta pero no quieran liarse a soldar. Pero antes he de solventar algunos temas logísticos y un fallo en el conversor DAC, ya que tal como lo tengo configurado ahora, tiene una relación S/N muy baja y no cumple los requisitos que desearía.
Tal como comento al inicio, otra cosa que tengo en mente para hacer el sistema accesible a personas con pocos conocimientos en programación es permitir que se pueda programar en BASIC u otro lenguaje similar de alto nivel sencillo. Para que esto sea factible debería portar algún interprete de este lenguaje a la plataforma Synth Core B. La idea sería que los usuarios pudieran programar sus aplicaciones en el PC usando BASIC para luego telecargarlas en la placa mediante la SD o remotamente mediante la conexión USB. De este modo los usuarios con pocos conocimientos técnicos también podrian desarrollar y diseñar sus controladores a medida (claro está, con las limitaciones que un lenguaje interpretado ofrece).
En fin, como podéis ver, tengo algunas ideas en la cabeza y aunque no lo parezca, poco tiempo. ¡Espero poder seguir informándoos de novedades !