Alguien escribió:
Dudo mucho de que haya alguien en Hispa más capacitado para opinar solventemente sobre este tema, le he enviado un MP a ver si nos hace el favor de pasarse por aquí.
Jajajaja gracias por tenerme en cuenta! No he podido leer a fondo todos los posts pero coincido con prácticamente todo lo que dice Patrolio.
Creo que cualquier persona con formación en telecos, ingeniería electrónica o sistemas puede hacerlo. Es una cuestión de ganas, motivación, compromiso y sobre todo ... de tiempo ( y el tiempo es oro ). Desde mi punto de vista el proyecto que planteais es ambicioso, más que por la complejidad técnica, por su tamaño, quiero decir por la gran cantidad de horas de curro que veo en él. Es un proyecto bastante grande, nada que ver con la simplicidad del típico montaje basado en Arduino. Las especificaciones que habeis ido nombrando en los posts, podrían ser perfectamente las un sinte comercial. Además no hay que olvidar que si la gente apoya el proyecto con su dinero es porque espera un buen resultado, y esto obliga a esmerarse más que si se tratase de un proyecto personal.
En cuanto a la viabilidad de llevarlo a término o no: todo es factible , y como comento más arriba, depende del grado de compromiso, de las ganas, de la organización y del número de personas implicadas. Sea como sea, los implicados tendrían que dejarse muchas horas en él que seguramente tendrían que sacar de su vida personal.
Roles
En una "empresa normal", creo que este proyecto requeriría de la implicación de al menos tres perfiles :
* un
electrónico encargado del diseño y revisión de los esquemáticos y PCBs, y de la localización y aprovisionamiento de componentes. Este debería tener conocimientos en diseño de PCBs ( a ser posible temas de emisiones etc. ) y controlar bien algún programa tipo Altium-Protel, ORCAD Layout , PCAD, Eagle... También debería tener acceso a herramientas para el montaje y pruebas de las placas, como p.ej. una estación de soldadura ( muchos componentes serán en encapsulado SMD ), osciloscopio etc.
* dos
"softwareros" con conocimientos en sonido y en programación embebida para desarrollar el software del equipo, que casi seguro se haría en C, o C++.
* un
técnico de sonido o músico encargado de preparar las muestras y patches ( que quizas se podrian capturar de otro sinte ) y de llevar a término las pruebas.
...
Tiempos y plazos
Para dar una idea de la magnitud del proyecto he intentado hacer una estimación de lo que creo se tardaría en desarrollar un sinte así ( cuando digo un mes me refiero a 4 semanas a 40 horas semanales, lo típico de una jornada completa ). Obviamente en un proyecto colaborativo como el que estáis planteando el trabajo no se distribuiría así y los implicados tendrían que ponerse con el proyecto por las tardes después del trabajo o los fines de semana. A ojo de buen cubero, la carga total de horas podría ser algo así ( variaría dependiendo de lo que al final se decidiese implementar ):
* Probablemente 1 mes de redacción de requisitos, y las especificaciones funcional, de hardware y de software ( unas 160 horas ).
* Unos 3 meses de trabajo de electronica ( unas 480 horas )
* Unos 6 meses de desarrollo de software ( unas 960 horas x 2 personas = 1920 horas)
* Unos 2 meses de trabajo del técnico de sonido ( unas 320 horas )
* Al menos 1 mes de pruebas ( unas 160 horas )
Salen en total casi 3000 horas de trabajo a repartir entre los diferentes miembros del equipo ( no incluido la parte de industrialización ). Algunas de las tareas podrían realizarse en paralelo, otras no. Como comento más arriba probablemente los implicados no tendrían una disponibilidad absoluta de tiempo, y tendrían que sacar horas de su tiempo personal. Esto implicaría que la dedicación diaria sería mucho menor, y que por tanto el desarrollo se prolongaría más en el tiempo.
Sea como sea, en otras webs he visto a gente organizarse para construir aparatos bastante completos, que demuestran que si se junta gente con conocimientos, con ganas e implicación y bien organizada todo es posible. Estos son algunos ejemplos de los "aparatos" a los que me refería:
* Clon del ordenador ZX80 basado en FPGA (
http://www.zonadepruebas.com/viewtopic.php?f=26&t=4073&p=28208&hilit=clon+jupiter+ace#p28146 )
* Clon del ordenador Jupiter Ace (
http://zonadepruebas.org/backup/modules/newbb/viewtopic.php?topic_id=14791&forum=2#forumpost155806 )
Posible estructura o planteamiento del proyecto
Como en todos los proyectos, y especialmente en un distribuido, es importante organizar bien el trabajo y dejar claros los siguientes aspectos :
* Que es exactamente lo que se desea obtener
* Como se va a hacer
* Hacerlo
* Probarlo
* Fabricar las unidades requeridas
* Distribuirlo
La siguiente es una propuesta de las etapas en que podria organizarse un proyecto así, y pretende dar una idea de los tipos de tareas y trabajos que implicaría. Como digo es una propuesta "ideal" y en la realidad no tendría porque seguirse una pauta tan rígida:
* Redacción de los requisitos y especificación funcional
* Especificación del hardware
* Especificación del software
* Implementación del hardware
* Implementación del software
* Integración y pruebas
* Financiación e Industrialización y distribución
Para ir bien, todo el trabajo realizado y acordado en cada una de estas etapas debería quedar registrado un documento. Al tratarse de un proyecto colaborativo se podría utilizar alguna herramienta tipo Wiki, así la información estaría accesible de forma inmediata y en todo momento para los implicados en el proyecto.
* Requisitos y especificación funcional
Esta fase es fundamental para afinar el tiro, dejar claro lo que se quiere que haga el sinte, y evitar marear la perdiz cambiando y retocando la electrónica o el software. Lo establecido en esta fase debería será tenido en cuenta a la hora de especificar el hardware y el software. Según he leído, el principal requisito del sinte es que tenga el sonido y funcionalidades del EMU8030 y esto implicaría también dejar claras las prestaciones del chip que se desean explotar ( esto implica saber con exactitud que es lo que puede y no puede hacer el chip ). Como venís diciendo, también habría que dejar claro si tendría teclado o si se controlaría via MIDI. En caso de tener teclado, habría que decidir si sería contrapesado, o no, el número de octavas etc. También habría que definir la interfaz de usuario, como se cargarian o crearian las muestras, que controles tendría, si dispondría de pantalla LCD, de alguna ranura para tarjetas de memoria y para que se usaría cada cosa. Otro aspecto importante es la conectividad: MIDI, OSC, USB etc. A la hora de definir lo que se quiere, hay que ser realistas y precisos, y esto implica darle unas cuantas vueltas al tema, leer documentación del chip, compartir impresiones con los diferentes miembros del equipo etc.
* Especificacion del hardware
Una vez los requisitos estuvieran claros, se podría comenzar a especificar el hardware necesario para cumplirlos. Sería muy interesante investigar si existe alguna placa de desarrollo para el EMU8030 ya que esto proporcionaría gran parte del diseño y reduciría bastante la carga de trabajo de diseño electrónico. Sino la hay, sería útil localizar los esquemáticos de otro equipo que haga uso de él. Al especificar el hardware no hay que perder de la mente que se busca un producto industrializable, y también que la elección de los componentes adecuado$$ puede reducir bastante la cantidad de dinero a recaudar para llevarlo a término.
En esta etapa requiere de leerse y empaparse de las hojas técnicas de los diferentes componentes candidatos, para tener claras sus caracterísitcas y elegir el que mejor se adecue a las necesidades del proyecto.
Desde mi punto de vista, la electrónica del sinte que quereis debería incorporar los siguientes componentes básicos :
- El integrado EMU8030 ( parece ser que las líneas de delay requieren también de SDRAM de 2MB que probablemente tenga que ser externa ). Se tendría que ver si se pueden conseguir muestras del EMU y si existe kit de desarrollo.
- Un microcontrolador principal relativamente potente para gestionar todo el sistema ( el controlador que lleva el EMU parece limitado ) , para controlar el EMU8030, la interfaz de usuario, el teclado, los buses de interconexión, el acceso a la memoria de almacenamiento etc. También estaría bien disponer del kit de desarrollo del micro escogido. El micro elegido debería disponer de algún tipo de sistema operativo de tiempo real sobre el que desarrollar el software. A la hora de elegir el microcontrolador habría que tener en cuenta la capacidad de procesamiento, la RAM, los GPIOs, los buses que se necesitan ( SPI, I2C ), que exista un entorno de desarrollo económico o gratuito ...
- DAC para el EMU8030, si no es que ya lo incorpora.
- Bloque de alimentación para alimentar y proporcionar las diferentes tensiones que se puedan necesitar en diferentes partes de la placa.
- Bloque de adaptación del audio, para enviar el audio de la salida del DAC a las salidas de línea, auriculares etc. ( impedancias, niveles de tensión ).
- Bloque para la captura ( multiplexada ) de la pulsación y velocidad de pulsación de las teclas.
- Bloque para el control de la interfaz de usuario : LCD, pulsadores, encoders rotatorios etc.
- Bloque para los buses de interconexión ( MIDI, USB etc. )
...
* Especificación del software
En esta fase habría que dejar claro que es lo que se supone debería hacer el software para implementar las funcionalidades establecidas en los requisitos. La aplicación prinicipal correría sobre el microcontrolador principal y muy probablemente se desarrollaría en C o C++. También debería hacerse una propuesta de la arquitectura de la aplicación, indicando que módulos la formarían, como se relacionarían entre sí etc. La aplicación probablemente correría sobre algún sistema operativo de tiempo real y podría estar formado por los siguientes módulos/drivers:
- Módulo de control del EMU8030 ( carga de fuentes de sonido, envio de ordenes, efectos etc. )
- Módulo de gestión de las comunicaciones MIDI, OSC, USB
- Módulo para el control de la interfaz de usuario, acceso y captura de los controles de la interfaz, control de la pantalla LCD
- Módulo de captura de las pulsaciones y detección de la velocidad del teclado.
- Módulo de acceso a disco o a la tarjeta de memoria.
...
* Implementacion del hardware
Una vez establecidas las especificaciones del hardware habría que ponerse manos a la obra. El encargado del diseño de la electrónica debería localizar los proveedores de los diferentes componentes, hacer el pedido de estos para unos pocos prototipos, diseñar los esquemáticos y luego el circuito impreso del sinte. Una vez hecho el diseño del PCB este encargaría su fabricación a algún fabricante de PCBs. Tras recibir los PCBs, soldaría todos los componentes y realizaría la puesta en marcha de los prototipos , comprobando la correcta disposición y funcionamiento de los diferentes bloques ( verificar las tensiones de las fuentes, arrancar el micro, el EMU, comprobar que el LCD funciona correctamente, que las teclas se detectan desde el micro ... ). En esta fase de puesta en marcha probablemente se requeriría del soporte de las personas encargadas del software. Una vez los primeros prototipos estuvieran listos los encargados del software podrían comenzar a desarrollar la aplicación.
En cuanto a la carcasa del equipo, creo que lo de un chasis de plástico se saldría fuera de rango. Aunque el precio de la unidad producida es muy económica los precios de los moldes para la inyección son muy elevados y para el volumen de equipos que se fabricarían probablemente no saldría a cuenta. Lo más económico sería encargar un mecanizado en chapa con alguna parte de madera. Sea como sea, la elección de una u otra opción dependeria del número de unidades que se fueran a producir. Habria que pedir precios.
En cuanto a los homologaciones, todo equipo electrónico requiere el certificado CE para poderse vender en Europa. Este informa de que cumple con las normas de seguridad y normativas Europeas ( que cambian dependiendo del tipo de dispositivo ) , y para obtenerlo se suelen tener que hacer una serie de ensayos bastante caros. No obstante al tratarse de un equipo fuera del circuito comercial estándar, y desarrollado por una comunidad , y con más aire de prototipo que de producto comercial no se hasta que punto sería necesario obtener esta certificación. Habría que informarse bien.
* Implementacion del software
El desarrollo de la aplicación que implemente lo establecido en la especifiación del software, se podría comenzar en el momento que los primeros prototipos estén listos ( no es necesario que estén 100% completos ) . Como he comentado con anterioridad, con toda probabilidad el desarrollo se haría en C o en C++ y correría sobre algún sistema operativo de tiempo real ( p.ej. alguna version de linux embebido, Free RTOs ... ) que garantice los tiempos de respuesta del sistema para evitar problemas de latencias etc. Hoy en día prácticamente todos los micros embebidos ofrecen sistemas operativos con prestaciones de tiempo real. Para abaratar el proyecto estaría bien que el sistema fuera programable "in system" ( es decir que no requiera de un programador externo ) y que disponga de un entorno de desarrollo y compilador gratuitos para Windows o Linux.
Los implicados en esta etapa podrían repartirse el desarrollo en módulos e ir probándolos e integrándolos una vez listos hasta tener la aplicación completa.
El desarrollar de los drivers implica leerse con atención los datasheets de los diferentes integrados utilizados, así como tener bien clara la API de acceso a los periféricos del microcontrolador.
En paralelo al desarrollo, el técnico de sonido o músico podría ir preparando las muestras o fuentes de sonido que utilizará el sinte, para que la gente de software pueda comenzar a implementar y hacer las pruebas de desarrollo sobre el EMU8030.
* Integración y pruebas
Una vez la electrónica, el software, y los samples y patches estén listos, se deberían realizar las pruebas funcionales finales sobre un prototipo completo lo más similar posible, por no decir idéntico, al instrumento final. Sería conveniente elaborar un test plan en base a los requisitos establecidos inicialmente y seguirlo durante las pruebas. La finalidad de esta fase no sería solo encontrar bugs sino también validar que el equipo hace lo que inicialmente se había propuesto que hiciera. Habría que validar también que este tiene "buen feeling" y es "usable" como instrumento. Los errores que se fueran detectando durante las pruebas deberían ir corrigiéndose por los encargados del software o de la electrónica, dependiendo del tipo de error de que se traten ( generalmente software ). Probablemente la persona más indicada para llevar a término esta etapa sería un músico o alguien con experiencia en el uso de sintetizadores.
* Financiación e Industrialización
Normalmente la financiación suele ser una de las primeras etapas en un proyecto, básicamente porque si no hay dinero no se puede hacer nada, pero como la mayor parte del gasto se suele ir en pagar horas de trabajo y en este caso la gente invertiría horas sin cobrar, se podría esperar al final a disponer del grueso del dinero, ya que es en esta fase cuando se tendrá que adquirir todo el material. No obstante antes de pedir nada se tendría que concretar cuanta gente va a querer una unidad del sintetizador, para así saber cuantas unidades de los diferentes componentes, PCBs, habría que comprar. Esto puede ayudar a negociar los precios, o p.ej. a saber que tipo de chasis sale más a cuenta.
Para la fabricación existirían varias opciones, una sería proveerse de todos los componentes, PCBs etc. y una vez se tengan, enviarlos a un montador para que los monte y solde en la placa. Luego este devolvería las placas montadas, y la persona o personas encargadas las porbarían, ensamblarian en el sintetizador y luego lo empaquetarían. Otra opción sería enviar el conjunto en forma de kit, para que cada uno se lo monte en casa, o incluso quien quiera, se lo personalice.
Otra opción seria pasar toda la lista de materiales, componentes y piezas al montador y que este se encargue de todo, de proveerse con los componentes, de solar las placas, ensamblar el conjunto etc. Obviamente esta opción sería más cara.
Y termino...
En fin, el objetivo de todo este rollo es daros mi visión de las tareas e implicaciones que tendría llevar a término un proyecto como el que proponeis. Esta es la teoría, y luego está la práctica, en la que todo se desvía, generalmente para largo, más que para corto. De todas formas como está prácticamente todo abierto, seguramente haya puntos que se podrían plantear de forma totalmente diferente, es tan solo una propuesta basada en mi experiencia.
En fin, ánimos, me he enrollado mucho y poco más puedo decir. Me encantaría tener entre las manos acabado y tocar un proyecto como el que proponeis , sería algo fantástico. Ahora mismo mi situación me impediría colaborar activamente con vosotros, a parte también ando enfrascado en otro proyecto que apenas logro tirar para adelante, pero desde luego que os apoyaría comprando una unidad si decidis seguir para adelante !