Repository navigation
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
This project generates independent multi channels audio signals from commands. There was 2 projects: a software version and an hardware version. Today, only the software is active. The main goal of this project is to change the parameters on the fly. That means, without any drops. If a frequency and an amplitude change, the sinusoid is faster/slower and higher/lower from the current point. All the parameters can be changed by commands, unless otherwise. In such case, the compile time or start-up is specified. It is a mixture of object oriented and C style complex states machines. It started long time ago with a couple of pages and the C++03 (GCC-4). It was improved and made multi plate-forms with the C++11. It is currently going future with the C++17, or C++23 in a close future. Each time, the legacy remains as it unless there are bugs to fix or a good reason. Software version ---------------- New modules or improvements are written using the last version. The legacy part remains as it, as long as there is no issues nor requests. The "physical" output can be chosen, at start-up, among Jackaudio, a wave file or dummy. The general output volume is, today, always set to 100% but the software can be updated to control this value. For each channel: * This audio is a waveform chosen, at start-up, among sine, triangle, pulse and continuous (with restrictions). * The default one is chosen at compile time. * This waveform can be frequency modulated TODO. * This waveform can be amplitude modulated by two independent engines. * Some modifiers applies to some engines (see README.commands). * The volume can be changed at any time. The "destination" volume is set. A command defines the slew rate in order to change quickly or smoothly. * As many as needed input commands channels can be set. There are many types (see README.parameters). * As many as needed output commands channels can be set. The purposes are: i) display in a human readable ii) store for replays iii) use the software as a remote control of another instantiation, especially if there is the network in between iv) test that chained inputs and output give the same result. There is no extended documentation files. * Some data is in the code. A run of the Doxygen software, separately in the cpp and vhdl version folders generates the documentation in the format one wants. * Some data (mostly schematics) is in the Documentation folder. A run of the Graphviz software (dot) exports in the format one wants. The work-flow exports into PNG, JPEG or PDF format. The files are in the artifact. * Some information is in the specialized README files. The commits into GitHub are up and running, but might contain bugs. Hardware version DEAD --------------------- An hardware version was planned from the commands to the output. It would have handled the midi mapped commands (the most easy), the 2 modulators, the volume control and the output. There is too much work as it is the re-invention of the wheel. For details see every version prior October 2026. Some parts may, even, be designed without the VHDL2008. Alternatives hardware --------------------- Two fun projects to hardware implement a smaller part of the project. They are hosted in the same ElecGeek user. * A pure analogue electronics version generates a pretty good pulse mode from a sine output of the project, even with low sample rate. The strategy is one channel one board. * A pure VHDL design generates only the pulses mode, the volume control and the display. The strategy is one FPGA for all the channels.