
Graphics card rev-2
ShaneTWilliams/worlds-worst-graphics-card
Custom HDMI transmitter PCB with 480 MHz STM32H7 microcontroller

Purpose/Requirements: This subsystem must be able to power the processor and the USB keyboard. Capacitors will be used to stabilize the power block.
String Drum Synthesizer is an open-source printed circuit board by AbhiN30, from the AbhiN30/String-Drum-Synthesizer repository on GitHub. It is a 2-layer board with 62 parts on 161 nets, routed with 325 tracks and 0 vias.
It is built around the SII1136CTU, LM1117MP-3.3 and USB-A1HSW6, with the 10029449-111RLF and 74LS257PC among its other parts. Its parts include 32 resistors, 11 capacitors and 5 ICs. It belongs with the audio and music boards and the STM32 boards of this library.
A musical artist brings with them a sense of how to evoke certain emotions or create particular atmospheres, but may lack the technical knowledge to bring it to life. Sound design can be challenging as it involves crafting the unique timbres and textures that define a piece of music, which can be both an art and a science. The learning curve is steep, not only because it requires a grasp of complex technical tools but also because it demands a creative intuition that isn't easily taught. Musicians and producers must learn to navigate a vast array of software and hardware tools, each with its own set of knobs, sliders, and buttons. Understanding how to shape sounds means diving deep into the physics of sound waves, the principles of digital signal processing, and the subtleties of different synthesis methods. This process can feel overwhelming, especially for beginners who might feel lost amidst the jargon and the sheer number of options.
Our proposal is to build a synthesizer. A synthesizer is a machine that is capable of producing a range of sounds when given a simple key or noise pulse. The range of sounds are controlled by a set of parameters such as filter cutoffs, oscillator types, low frequency oscillators, etc. The proposed solution is two-fold. The first part of the project is to build emotive knobs that feature descriptive ranges such as soft to aggressive or thin to thick. These knobs would also control the internal parameters of the system to achieve the desired effects on the input sound. The other part is to create a system that records a sound and finds the best way to set the synthesizer's internal parameters to recreate it. The intended work flow of this device for a musical artist is to record a sound, tweak the knobs, and play that sound by pressing a key on a MIDI keyboard. It is up to the musician to record the sound into their own recording software for further manipulation.
Purpose/Requirements: This subsystem must be able to power the processor and the USB keyboard. Capacitors will be used to stabilize the power block.
Components:
Purpose/Requirements: This subsystem will generate sounds using the Karplus Strong algorithm which features a pulse generator and an echo chamber (modeled with digital delay, feedback, and filtering). When a note is played on a USB keyboard, this component must be able to change the pitch based on which key is pressed. The algorithm’s parameters must be controllable using potentiometers, but several parameters can be determined as a function of one knob. We chose the Karplus Strong algorithm to reduce the computational load, but we are modifying certain aspects to allow for a greater range of sounds. The pulse that we will use is a blend of noise and sine wave oscillator which are added together and distorted. In addition, there will be some soft distortion applied on the output. In addition, the echo chamber will use 3 IIR filters: highpass, lowpass, and a bell. The choice to use IIR filters is to lower the amount of computation.
We made a demo of the synthesizer algorithm using a digital audio workstation in order to play with parameters and determine the names of the emotive knobs. Below are the emotive knobs and how the corresponding synth parameters should change to implement them:
Aggression
Brightness
Boominess
Dampening
*Not sure what to call this yet, but it affects how the echo chamber resonates. Note: setting this to around 3.6 kHz sounds good, so it could be fine to keep this completely internal and forgo the corresponding knob.
Scratchiness
Sharpness
*Strike weight => Corresponds to simulated weight of object striking the string/drum head.
Notes:
Components:
Purpose/Requirements: This subsystem should output the smallest possible signal to noise ratio through a guitar cable or headphones. In order to achieve this we will experiment with using several inverting op-amp amplifier circuits in parallel and summing them together with an inverting mixer. The gain of each amplifier will be set, but the volume control will be part of the inverting mixer circuit.
Components:
Purpose/Requirements: This subsystem should display the waveform of the sound being processed. The purpose of this subsystem is for the user to be able to receive a visual representation of the sound they are developing using their input pulse and emotive knob manipulations. The screen could enhance the usability of the synthesizer by providing visual indicators or icons for each emotive knob, making it easier for users to identify how different settings affect the overall sound. This would bridge the gap between technical sound parameters and intuitive control.
Components:
High-Level Goals:
Get a simple sound, such as a sine wave at 440 Hz, out of DAC output from the synthesizer subsystem. Should be viewable in an oscilloscope, but not important to hear yet.
Add potentiometers to the synthesizer and use to control pitch of simple sound for testing.
Build the amplifier in order to hear the previously described sound.
Add USB port and code for parsing keyboard input.
Use synthesizer algorithms to implement the emotive knobs, starting with the pulse generator and then building the echo chamber. Reach Goal:
Implement the screen into the entire system. It will show the waveform of the generated sound, including its amplitude, frequency, and potential distortions. This helps users better grasp the effect of parameters like distortion, brightness, dampening, etc. This visualization would assist the user in creating more precise and desired sounds.
Important Notes:
-The screen is peripheral and not required for the rest of the system to operate. Therefore implementing it is a reach goal.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 12 | 220 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R3, R4, R5, R7, R9, R17, R27, R28, R29, R30, R31, R32 |
| 8 | EmotiveKnob | Connector_Molex:Molex_KK-254_AE-6410-03A_1x03_P2.54mm_Vertical | Pot0, Pot1, Pot2, Pot3, Pot4, Pot5, Pot6, Pot7 |
| 5 | 10k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R10, R15, R19, R21, R23 |
| 4 | 10uF | Capacitor_THT:CP_Radial_D7.5mm_P2.50mm | C2, C4, C6, C7 |
| 4 | 4k7 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R8, R18, R20, R22 |
| 3 | 0.1uF | Capacitor_THT:C_Disc_D6.0mm_W4.4mm_P5.00mm | C1, C3, C5 |
| 3 | 1M | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R24, R25, R26 |
| 2 | 2k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R1, R12 |
| 2 | 400pF | Capacitor_THT:C_Disc_D6.0mm_W4.4mm_P5.00mm | C11, C12 |
| 2 | 75k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R14, R16 |
| 2 | LM1117MP-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U1, U5 |
| 2 | USB-A1HSW6 | USB_A1HSW6:OST_USB-A1HSW6 | KeyboardUSBPort1, ProgrammableUSBPort1 |
| 1 | 0.01u | Capacitor_THT:C_Disc_D6.0mm_W4.4mm_P5.00mm | C8 |
| 1 | 10029449-111RLF | 10029449_111RLF:CONN_10029449111_AMP | HDMI_Port1 |
| 1 | 1k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R11 |
| 1 | 2.2uF | Capacitor_THT:C_Disc_D6.0mm_W4.4mm_P5.00mm | C9 |
| 1 | 3.3k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R2 |
| 1 | 74LS257 | Package_DIP:DIP-16_W7.62mm_Socket | 74LS257 |
| 1 | 750 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R13 |
| 1 | 820 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R6 |
| 1 | Conn_01x03_Pin | Connector_Molex:Molex_KK-254_AE-6410-03A_1x03_P2.54mm_Vertical | AudioJack1 |
| 1 | LM3900DR | Package_DIP:DIP-14_W7.62mm_Socket | U4 |
| 1 | SII1136CTU | Package_QFP:TQFP-100-1EP_14x14mm_P0.5mm_EP5x5mm | U2 |
| 1 | STM32F722RCTx | Package_QFP:LQFP-64_10x10mm_P0.5mm | U6 |
| 1 | Volume (100k) | Connector_Molex:Molex_KK-254_AE-6410-03A_1x03_P2.54mm_Vertical | Volume |
62 parts, built around the SII1136CTU, LM1117MP-3.3, USB-A1HSW6 and 10029449-111RLF. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the AbhiN30/String-Drum-Synthesizer repository on GitHub, at the commit this page was made from: the board is Schematic/String-Drum-Synthesizer.kicad_pcb and its schematic Schematic/String-Drum-Synthesizer.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask AbhiN30 before reusing the design.

ShaneTWilliams/worlds-worst-graphics-card
Custom HDMI transmitter PCB with 480 MHz STM32H7 microcontroller

7west/PicoTop
A very basic computer & OS based on the RP2350 microcontroller


Erolctk/CH334R-USB-HUB
a compact 4-port USB 2.0 hub designed in KiCad using the WCH CH334R USB Hub Controller

benja47012/Robot-de-seguridad
Robot de seguridad con diversas funciones, planteado con un protocolo I2C.

Benny-Chippers/Enchanted_Rocks
The dev board PCB for the MacroController project

EngineerGuySam/Cat-Turret
A Raspberry Pi 4–powered pan-and-tilt water gun that uses a camera and YOLO machine learning to detect cats on counters.
