Resumen:
|
[ES] Este proyecto consiste en el diseño e implementación de un sintetizador de sonidos en hardware programable. El diseño está disponible públicamente para que se pueda estudiar y aprovechar en otras implementaciones. El ...[+]
[ES] Este proyecto consiste en el diseño e implementación de un sintetizador de sonidos en hardware programable. El diseño está disponible públicamente para que se pueda estudiar y aprovechar en otras implementaciones. El sintetizador digital trata tanto la síntesis aditiva, en la que se combinan dos osciladores con polifonía reproduciendo un número genérico de voces y síntesis sustractiva, incluyendo filtros de paso bajo, alto, de banda y de rechazo de banda mediante la implementación de las ecuaciones de Chamberlin. La funcionalidad se ha extendido para obtener un control mayor sobre la frecuencia, con parámetros para modificar el semitono o ajustar la afinación.
En cada oscilador se puede seleccionar un tipo de onda básica, onda sierra, triangular, cuadrada o senoidal. En la onda cuadrada también se puede modular el ancho de pulso. Además también se ha trabajado en la incorporación del efecto portamento y la gestión de la dinámica del sonido, con el generador de envolventes de amplitud. También dispone de tres osciladores de baja frecuencia, uno para cada oscilador donde modulan la frecuencia o pitch y otro que modula el parámetro de la frecuencia de corte o resonancia de los filtros. El sintetizador también contiene un procesador para agregar ruido a la señal. Se puede conmutar la entrada del convertidor analógico digital o de los generadores de onda, para capturar una señal externa y procesarla con el generador de ruido más los filtros.
Se ha elegido como placa de prototipado el dispositivo FPGA de AMD-Xilinx Basys-3, por tanto se ha trabajado con el entorno de desarrollo Vivado ML Standard Edition para implementar el modelo, desarrollado con el lenguaje de descripción VHDL. Para reproducir los sonidos hemos utilizado el dispositivo Pmod I2S2, que incorpora convertidores de analógico a digital y de digital a analógico. La frecuencia de muestreo del sintetizador es 44.1 kHz con una resolución de 24 bits, en estéreo.
Por otro lado, se ha desarrollado una aplicación software con interfaz gráfica en lenguaje C++ con el framework JUCE. Esta aplicación se ha compilado para un entorno con Windows, pero también como plug-in VST3 y se ha comprobado su funcionamiento en un DAW. Además esta aplicación puede ser portable a otros sistemas operativos y a otros formatos de plug-in. El propósito principal es controlar los parámetros del hardware mediante una conexión UART desde la interfaz gráfica. Además la aplicación también contiene un gestor para almacenar los presets y se ha trabajado en la sincronización con la FPGA, tanto en la aplicación standalone como en el plug-in para recuperar adecuadamente el estado de los parámetros. En la aplicación standalone también se ha trabajado en la administración mediante un controlador MIDI, útil como piano y para controlar los parámetros de la interfaz.
[-]
[EN] This project consists of the design and implementation of a programmable hardware sound synthesizer. The design is publicly available so that it can be studied and leveraged in other implementations. The digital ...[+]
[EN] This project consists of the design and implementation of a programmable hardware sound synthesizer. The design is publicly available so that it can be studied and leveraged in other implementations. The digital synthesizer deals with both additive synthesis, in which two oscillators are combined with polyphony playing a generic number of voices, and subtractive synthesis, including low-pass, high-pass, bandpass, and band-reject filters by implementing the equations of Chamberlin. The functionality has been extended for more control over frequency, with parameters to change the semitone or adjust the pitch.
In each oscillator you can select a basic wave type, saw wave, triangle, square or sine wave. In the square wave you can also modulate the pulse width. In addition, work has also been done on the incorporation of the portamento effect and the management of sound dynamics, with the amplitude envelope generator. It also has three low frequency oscillators, one for each oscillator where they modulate the frequency or pitch and another that modulates the cutoff frequency or resonance parameter of the filters. The synthesizer also contains a processor to add noise to the signal. The input of the analog-to-digital converter or wave generators can be switched to capture an external signal and process it with the noise generator plus filters.
The AMD-Xilinx Basys-3 FPGA device has been chosen as the prototyping board, therefore we have worked with the Vivado ML Standard Edition development environment to implement the model, developed with the VHDL description language. To reproduce the sounds we have used the Pmod I2S2 device, which incorporates analog-to-digital and digital-to-analog converters. The synthesizer's sample rate is 44.1 kHz with 24 bit resolution, in stereo.
On the other hand, a software application with a graphical interface in C++ language has been developed with the JUCE framework. This application was compiled for a Windows environment, but also as a VST3 plug-in and has been tested to work in a DAW. Furthermore, this application can be portable to other operating systems and other plug-in formats. The main purpose is to control hardware parameters via a UART connection from the graphical interface. In addition, the application also contains a manager to save the presets and work was done on synchronization with the FPGA, both in the standalone application and in the plug-in to adequately recover the status of the parameters. In the standalone application, work has also been done on the administration through a MIDI controller, useful as a piano and to control the interface parameters.
[-]
|