AI prompts
base on Open source, analog and polyphonic synthesizer # polyUAnalog: A Polyphonic Analogic and *Open Source* Synth
## Project Overview
The architecture of polyUAnalog centers around a simple design: a *conductor board* orchestrating multiple *voice boards*. This modular approach allows each board to function independently as a monophonic synthesizer. When combined under the guidance of the conductor board, they form a versatile polyphonic synthesizer capable of operating in various modes:
- **Polyphonic Mode**: Achieve polyphony with up to virtually 120 voices. Our current configuration supports 10 voices of polyphony, tested and functioning seamlessly.
- **Monophonic with Unison and Spread Mode**: For those moments when a single, powerful voice is needed, enhanced with unison and spread capabilities for added depth.
- **Multi-timbral Mode** (Under development as of April 2024): Expanding the synth's versatility by allowing multiple timbres to be played simultaneously.
![PolyUAnalog Synth](resources/synth_archi.png)
## Repository Structure
The `polyUAnalog` repository is organized into two main directories, `firmware` and `hardware`, each containing subdirectories dedicated to different components of the synth:
### Firmware
Contains all necessary code to bring the polyUAnalog to life. This includes the microcontroller programming for voice and conductor boards, as well as the controller interface.
- **Voice Board**: The soul of the polyUAnalog's sound, each voice board is an independent monophonic synthesizer.
- **Conductor Board**: The brain behind the operation, orchestrating the voice boards to work in harmony.
- **Controller**: Interface and panel design for hands-on control of the polyUAnalog.
### Hardware
Detailed schematics, PCB designs, and everything required to physically construct the polyUAnalog synth.
- **Voice Board**: Designs and instructions to build each monophonic voice board.
- **Conductor Board**: The blueprint for constructing the central conductor board.
- **Controller**: Panel design and schematics for the physical user interface.
For specific details on each component, please refer to the corresponding `README.md` file within its directory. Our aim is to make the assembly and understanding of the polyUAnalog as accessible as possible.
## Contributing
polyUAnalog thrives on community input and collaboration. Whether you're a seasoned electrical engineer, a software developer with a knack for DSP, or an enthusiast eager to learn and explore, your contributions are welcome.
## Academic Research and Publications
We have documented our journey and findings in a comprehensive academic paper. This paper delves into the theoretical underpinnings, design choices, and technical challenges encountered during the development of polyUAnalog. While the paper is currently in draft form and distributed as-is, we believe it provides valuable insights into the project's scientific and engineering aspects.
A DOI and access to the official publication will be provided upon acceptance. Additionally, a pre-print version of the paper will be made available to ensure our findings are accessible to the community, fostering further research and development in the field of analog synthesis.
## Sound Examples
We are currently compiling a diverse range of audio samples to showcase the versatility and musicality of polyUAnalog. This is a work in progress, and we appreciate your patience as we curate a collection that truly represents the essence of this project.
Stay tuned for a SoundCloud link, which will be shared here soon.
## Project Progress
| Task | Description | Status |
|--------------------|------------------------------------------------|--------------|
| Documenting | Drafting an explanation of the synth's electronics and detailing the functionality of the code. | ![#c5f015](https://via.placeholder.com/10/c5f015?text=+) In Progress |
| Multitimbral | Add multitimbral capability by adapting the software. | ![#00FF00](https://via.placeholder.com/10/1589F0?text=+) Almost OK ! |
| Faster PID | Transitioning from the hardware RC-based Timer of the RP2040 to the PIO ones to achieve a faster response time of the DCO waveform. | ![#f03c15](https://via.placeholder.com/10/f03c15?text=+) Testing |
| Conductor board | Design and finalize the electronic, PCB, and firmware layout for the conductor board, which enables the control of voice cards, connects to an FX board, and one or multiple controllers.| ![#1589F0](https://via.placeholder.com/10/1589F0?text=+) Pending |
| FX Loop | Testing the V4220 codec chip.| ![#1589F0](https://via.placeholder.com/10/1589F0?text=+) Pending |
| Controler | Finishing the first controler : the "basic synth" | ![#1589F0](https://via.placeholder.com/10/1589F0?text=+) Pending |
| Continous waveform for the DCO | Produce waveform in between saw and triangle and modulate it | ![#1589F0](https://via.placeholder.com/10/1589F0?text=+) Pending |
| Finishing the paper | Last measurements still to be done | ![#1589F0](https://via.placeholder.com/10/1589F0?text=+) Pending |
## License
polyUAnalog is open source and distributed under the MIT License.
", Assign "at most 3 tags" to the expected json: {"id":"9691","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"