
IPoS
peterheinrich/InternetOverSpaghetti
Transmitting IP packages over a pair of spaghetti thus demonstrating how media independent IP really is.

A Raspberry Pi Pico miniature synth keyboard inspired by analog keyboard with analog controls and MIDI
TrebleSynth is an open-source printed circuit board by profdc9, from the profdc9/TrebleSynth repository on GitHub. It is a 2-layer board of 236 × 128 mm with 222 parts on 167 nets, routed with 2,493 tracks and 111 vias.
It is built around the LM358. Its parts include 74 resistors, 48 capacitors, 32 switches, 14 ICs and 8 connectors. It belongs with the audio and music boards and the RP2040 boards of this library.
A video about the TrebleSynth: Video
The TrebleSynth is a "Modular Synth on a Chip" based on the Raspberry Pi Pico. It is a through-hole design that is easy to assemble yourself and uses only inexpensive generic parts that are widely available to minimize costs. One can create various modules on the chip and interconnect them by specifying which unit takes input from another input, assign the controls of these modules to potentiometers, and then adjust the potentiometers to achieve your desired sound. It also has a fully capable effects module on the chip as well. The modular synth supports six note polyphony.
The synth has a 25 key, two-octave keyboard (though external MIDI controllers are highly recommended, as the built-in synth keys are rudimentary and more suitable for testing). The TrebleSynth accepts notes over serial MIDI input and outputs the synth keyboard presses over the serial MIDI output. There is also a USB MIDI input/output, and notes can be played from a computer to the TrebleSynth over USB and similarly the synth keyboard presses are sent over the USB MIDI output. The are two jacks available for expression and selection pedals.
When plugged into a USB port, the TrebleSynth enumerates both as a MIDI device and a COM port. The COM port interface has a text-based interface that may be used to read and set configuration data from a PC. Type "HELP" for a list of the commands. For example, typing "ECONF 0 0" lists all of the current effects configuration data, and "SCONF 0 0" lists all of the current synth configuration data. The data is output in the form of the commands used to reprogram the same state back into the device, so these may be directly copied into a text file and pasted back into a terminal to recreate the configuration. At some point I (or some volunteer...) could write a graphical user interface that allows external configuration of the modules.
A peculiarity of the device is that, because it uses potentiometers, when loading a saved configuration, the potentiometers may not be at the same positions when the configuration was saved. When adjusting a potentiometer, the unit number and type of control is displayed. In addition, initially after the configuration is loaded, the control does not adjust its corresponding parameter until the control is turned back to the original position it was at when the configuration was saved. A symbol "O" is shown when the control is adjusted to the point where the parameter is being adjusted again. The symbols "->" and "<-" show that the control should be turned clockwise ("->") or counterclockwise ("<-") until a dot ("O") is displayed, and likewise if ">" is shown, the control should be turned down until "*" is displayed.
Each module has a "SourceUnit" and "ControlUnit." The source unit is the unit that the module receives audio input from, and the control unit is the unit that the module receives parameter data from (for example, to adjust pitch for the VCO or amplitude for the VCA). The unit number of 1 corresponds a zero-valued source (zero voltage signal source). A unit number of 2 or above corresponds to the input received from the previous module. So for example, a SourceUnit for 4 would be the output of unit 3 (which normally is input to unit 4, unless unit 4's SourceUnit is otherwise changed). For example, the mixer has two SourceUnits, one of which defaults to its own unit number (so that it receives the input from the previous unit), and another that can be set to another previous unit, so that the output of these units can be combined.
The code is all licensed under the zlib license (no warranty, yes commercial and non-commercial use). The PCB is licensed under CC-BY-SA 4.0. A new, highly efficient, 15-bit fixed-point precision synthesizer engine, specifically suited for Cortex M0+ processors with no floating point or 64-bit integer multiply or divide, was written for this project. Because the samples are processed in real time, the lag due to processing is about 100 microseconds. In order to achieve this, the Pi Pico is overclocked to 250 MHz with no seemingly bad effects.
The type of modules that one can create are:
Up to 10 modules can be used at a time. Subtractive and FM synthesis is possible with various configurations of the modules. It also includes these effect taken from the GuitarPico ( https://www.github.com/profdc9/GuitarPico ) project:
The effects may be cascaded, to up to 16 in a sequence. Since the synthesizer has an audio input, at some point I will likely implement audio pass-through so the TrebleSynth can act as a guitar pedal as well like the GuitarPico.

A list of parts is included below, with LCSC part numbers (with noted exceptions), minimum quantity order, and prices as of the time of writing (2024-06-24). For some of the resistors and capacitors, you may be better off buying an assortment kit rather than ordering large quantities.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 32 | SW_Push | Button_Switch_THT:SW_PUSH_6mm | SW1, SW2, SW10, SW11, SW12, SW13, SW14, SW15, SW16, SW17, SW18, SW19, SW20, SW21, SW22, SW23 +16 |
| 25 | 1k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R1, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R30, R32, R34, R39 +9 |
| 21 | 10k | Potentiometer_THT:Potentiometer_Alps_RK09K_Single_Vertical | RV2, RV3, RV4, RV10, RV11, RV12, RV13, RV14, RV15, RV16, RV17, RV18, RV19, RV20, RV21, RV22 +5 |
| 18 | 100 nF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C1, C14, C18, C21, C24, C25, C28, C29, C30, C39, C40, C41, C42, C43, C44, C45 +2 |
| 12 | MountingHole | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3, H4, H5, H6, H7, H8, H9, H10, H11, H12 |
| 10 | 10k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R23, R26, R36, R37, R38, R40, R42, R44, R63, R67 |
| 10 | 2k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R28, R29, R31, R33, R35, R49, R53, R54, R55, R56 |
| 9 | 10 uF | Capacitor_THT:CP_Radial_D5.0mm_P2.50mm | C4, C5, C7, C10, C11, C15, C16, C17, C38 |
| 7 | 4051 | Package_DIP:DIP-16_W7.62mm_Socket | U6, U8, U9, U10, U11, U12, U13 |
| 6 | 100 uF | Capacitor_THT:CP_Radial_D5.0mm_P2.50mm | C2, C19, C20, C34, C35, C48 |
| 6 | 100R | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R3, R22, R24, R27, R46, R74 |
| 6 | 2N3904 | Package_TO_SOT_THT:TO-92_Inline_Wide | Q1, Q2, Q3, Q4, Q5, Q6 |
| 6 | 2k2 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R25, R43, R68, R71, R72, R73 |
| 5 | 220R | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R5, R62, R65, R66, R69 |
| 3 | 100 pF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C23, C26, C27 |
| 3 | 10R | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R58, R59, R60 |
| 3 | 1M | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R4, R21, R45 |
| 3 | 22 nF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C8, C12, C36 |
| 3 | INPUT | TrebleSynth:PJ-3240-35mm-stereo | J2, J8, J9 |
| 3 | NC | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R7, R47, R48 |
| 2 | 10 nF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C22, C31 |
| 2 | 1N4148 | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D2, D3 |
| 2 | 220 uF | Capacitor_THT:CP_Radial_D5.0mm_P2.50mm | C32, C33 |
| 2 | 4700 pF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C13, C37 |
| 2 | DIN-5_180degree | TrebleSynth:DIN5Circular | J10, J11 |
| 2 | LM358 | Package_DIP:DIP-8_W7.62mm_Socket | U1, U2 |
| 2 | POWER | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | JP1, JP2 |
| 1 | 1000 pF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C3 |
| 1 | 10k | TrebleSynth:Potentiometer_Big_Small_Combined | RV1 |
| 1 | 1N5819 | Diode_THT:D_DO-41_SOD81_P7.62mm_Horizontal | D1 |
| 1 | 22 pF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C46 |
| 1 | 2200 pF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C9 |
| 1 | 220k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R6 |
| 1 | 470R | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R2 |
| 1 | 4k7 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R9 |
| 1 | Barrel_Jack_Switch | Connector_BarrelJack:BarrelJack_Horizontal | J5 |
| 1 | INPUT | TerminalBlock:TerminalBlock_bornier-2_P5.08mm | J1 |
| 1 | LM7805_TO220 | Package_TO_SOT_THT:TO-220-3_Vertical | U4 |
| 1 | MicroSD_SPI_CD | TrebleSynth:GCT-MEM2055-00-190-01-A | U14 |
| 1 | OUTPUT | TrebleSynth:PJ-3240-35mm-stereo | J3 |
| 1 | PC817 | Package_DIP:DIP-4_W7.62mm | U7 |
| 1 | Pico | TrebleSynth:RPi_Pico_SMD_TH | U3 |
| 1 | SSD1306 | TrebleSynth:128x64OLED | Brd1 |
| 1 | TL431LP | Package_TO_SOT_THT:TO-92_Inline_Wide | U5 |
It measures 236 × 128 mm and has 2 copper layers, 1.6 mm thick.
222 parts, built around the LM358. 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 profdc9/TrebleSynth repository on GitHub, at the commit this page was made from: the board is TrebleSynth/TrebleSynth.kicad_pcb and its schematic TrebleSynth/TrebleSynth.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 profdc9 before reusing the design.

peterheinrich/InternetOverSpaghetti
Transmitting IP packages over a pair of spaghetti thus demonstrating how media independent IP really is.

zmaker/arduino_cookbook
gli sketch del nuovo progetto Arduino Cookbook e dei video di YouTube

profdc9/RFBitBanger
A QRP digital transceiver created from readily available parts for off-the-grid maintenance


tvlad1234/pillScopePlus
Oscilloscope based around the STM32F401 Black Pill and a color LCD screen


starlightk7/OpenSFC
OSHW Reproduction Parts related to the Super Famicom / Super Nintendo game console
