Skip to the content
4 layers71.1 × 99.1 mmQuad adsr, the printed circuit board in 3D

PCB for a quad eurorack ADSR

Size
71.1 × 99.1 mm
Copper layers
4
Thickness
1.6 mm
Parts
197
Nets
160
Pads
610
Tracks, vias
1,195, 164
Pours
17
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
27 Feb 2020
Updated
20 Dec 2021

Overview

Quad adsr is an open-source printed circuit board by JordanAceto, from the JordanAceto/quad_ADSR_board repository on GitHub. It is a 4-layer board of 71.1 × 99.1 mm with 197 parts on 160 nets, routed with 1,195 tracks and 164 vias.

It is built around the MCP4822-E/P, TL072 and HDSP-7503, with the 74HC595, 24LC32A/P and AMS1117-3.3 among its other parts. Its parts include 86 resistors, 53 capacitors, 14 connectors, 13 ICs and 13 diodes. It belongs with the STM32 boards of this library.

Main components

9

README

README.md

Quad digital ADSR module

*** Work in progress ***

ADSRs are generated by an STM32 microcontroller and controlled by four encoders. A seven-segment display shows the most recently modified parameter.

One ADSR at a time is set as the "active" ADSR, which will be controlled by the encoders.

To select an ADSR as "active", the encoder push-button above a given ADSR is pressed.

The four-digit seven-segment display shows the parameter of the encoder that was most recently turned. For instance, if you just turned the decay time to 500 milliseconds, the display will show 0.500. If you then adjust the sustain level to 68%, the display will now show 68. Time based parameters are shown in units of seconds, and sustain parameters are shown as 0% to 100%.

Additionally, the ADSRs can all be forced to lock to a "master" ADSR, so that that their attack, decay, sustain, and release parameters are all set the same. The four ADSRs can still be triggered independently in this mode, which makes this useful for polyphonic patches. This saves you from manually setting identical paramters four times. Lock-to-master mode is selected by performing a long push-switch press of the encoder above the desired ADSR. For instance, to force all the ADSRs to lock to the ADSR 3 settings, depress and hold the sustain encoder push-button for a few seconds. To leave lock-to-master mode, do a short click of any of the encoder push-buttons to select a new active ADSR.

A bank of four bi-color LEDs shows the active ADSR, and whether it is in independent, or lock-to-master mode.

First rev build evaluation:

  • Most of the systems work.
  • Done (but there is an I2C bug lurking, see the issues)The EEPROM has not been physically installed and EEPROM code has not been written yet.
  • DONE In the code, when switching from lock-to-master mode back to independent mode: the ADSRs should go back to the settings they held before entering lock-to-master mode. Write a function called release_ADSRs_from_master_mode or something that accomplishes this, and call that function when leaving lock-to-master mode.
  • Done The encoders should be no-detent types. I used encoders with detents and I don't like it.
  • I tried and failed to setup encoder trigger filtering, please investigate using the timer register filters when the timers are in encoder mode. I'd like to be able to apply filtering to the encoders. They work fine and don't misfire now, but it would be nice to easily tailor how "fast" they update by addign in some filtering.
  • This really isn't that bad The heights of the panel mount components is an issue: the 3.5mm jacks are taller than the encoders and the seven-segment display. I got everything to work by lifting the encoders and 7-seg up off the pcb before soldering, but this is lame. I think the solution is split the pcb into a main pcb and a jack pcb, and connect the two pcbs with wires. Another solution could be to create a "lifter" pcb that acts as a spacer between the main pcb and the encoders/7-seg, but this seems kind of yucky too. Think about this for a while before doing a new pcb rev.
  • I'm having issues with getting the PLL to work for arbitrary frequencies: with some settings of M, N, and P the output frequency is not as expected. Please investigate this and figure out what I'm doing wrong.
  • I used two MCP4822 DACs, but I probably could have used the 2 internal DAC channels for 2 of the ADSRs and only installed one MCP4822. Investigate if using the internal DAC for 2 channels creates any pinout conflicts, or any other kind of conflicts, for the next board revision, to try and save a DAC.
  • The ADSR outputs are low: I want 10v peak ADSRs and I calculated the opamp gain resistors assuming the DACs output 3.3v peaks, but they don't. Please recalculate the gain resistors for the actual MCP4822 output with a gain of 1x. Take into account the internal DACs if you apply the suggestion above.
  • DONE (enabled FPU and changed signals to floats) Many parts of the codebase could be optimized and improved. In particular, the ADSR code does some costly 64-bit divisions in a couple of spots. See if you can't improve this. View the main.list output file occasionally.
  • DONE (works ok but be on the lookout) Compiler optimization is turned off right now. Turn this up to -Os or -O2 and make sure that nothing breaks. There might be some volatile issues, or necessary code that gets optimized away, be careful and thorough!
  • Otherwise the project is in pretty good shape! The prototype I built could definitely go in a rack and work with other modules.

Parts

197
QtyValueFootprintReferences
24100nFCapacitor_SMD:C_0402_1005MetricC3, C12, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25, C26, C27, C28, C29 +8
1810kResistor_SMD:R_0402_1005MetricR1, R2, R3, R4, R7, R8, R10, R13, R14, R15, R16, R19, R20, R21, R22, R82 +2
16390Resistor_SMD:R_0603_1608MetricR26, R27, R28, R29, R30, R31, R32, R33, R37, R38, R39, R40, R41, R42, R43, R44
1210kResistor_SMD:R_0603_1608MetricR25, R34, R35, R36, R50, R52, R54, R56, R58, R60, R62, R64
12MMBT3904Package_TO_SOT_SMD:SOT-23Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12
8100kResistor_SMD:R_0603_1608MetricR49, R51, R53, R55, R57, R59, R61, R63
810nFCapacitor_SMD:C_0402_1005MetricC1, C2, C4, C5, C7, C8, C10, C11
81N4148WDiode_SMD:D_SOD-123D6, D7, D8, D9, D10, D11, D12, D13
82n2Capacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolderC37, C38, C39, C40, C41, C42, C43, C44
5100Resistor_SMD:R_0402_1005MetricR6, R12, R18, R24, R84
4100nFCapacitor_SMD:C_0603_1608MetricC33, C34, C35, C36
41kResistor_SMD:R_0603_1608MetricR45, R46, R47, R48
4200kResistor_SMD:R_0603_1608MetricR67, R68, R75, R76
433kResistor_SMD:R_0603_1608MetricR69, R70, R77, R78
44k7Resistor_SMD:R_0402_1005MetricR5, R11, R17, R23
450kResistor_SMD:R_0603_1608MetricR65, R66, R73, R74
468kResistor_SMD:R_0603_1608MetricR71, R72, R79, R80
4HDSP-7503Display_7Segment:HDSP-A151U1, U3, U4, U5
4LED_Dual_ACALED_THT:LED_D3.0mm-3D1, D2, D3, D4
4PJ301M-12Eurocad:PJ301M-12J1, J2, J3, J4
4Rotary_Encoder_SwitchRotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mmENC1, ENC2, ENC3, ENC4
310uFCapacitor_SMD:C_1206_3216MetricC13, C51, C52
210uFCapacitor_SMD:C_0805_2012MetricC14, C15
212pFCapacitor_SMD:C_0402_1005MetricC47, C48
22.2uFCapacitor_SMD:C_0603_1608MetricC45, C46
24k7Resistor_SMD:R_0603_1608MetricR85, R86
274HC595Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU2, U6
2MCP4822Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU9, U10
2TL072Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU8, U11
116MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmHSE1
124LC32Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU13
12k2Resistor_SMD:R_0603_1608MetricR81
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U7
1Ferrite_Bead_SmallInductor_SMD:L_0805_2012MetricFB1
1LEDLED_SMD:LED_0603_1608MetricD5
1STM32F405RGTxPackage_QFP:LQFP-64_10x10mm_P0.5mmU12
1SWD_headerConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ14
1gate_1_i nEurocad:PJ301M-12J6
1gate_2_inEurocad:PJ301M-12J8
1gate_3_inEurocad:PJ301M-12J10
1gate_4_inEurocad:PJ301M-12J12
1power_inConnector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_VerticalJ5
1trigger_1_inEurocad:PJ301M-12J7
1trigger_2_inEurocad:PJ301M-12J9
1trigger_3_inEurocad:PJ301M-12J11
1trigger_4_inEurocad:PJ301M-12J13

Similar boards

  • 2 layers48.3 × 99.1 mmModulation source, the printed circuit board in 3D

    Modulation source

    JordanAceto/modulation_source

    Eurorack compatible pcb with sine/square VCLFO, white and pink noise, and sample & hold

    95 parts6
  • 4 layers134.6 × 113 mmJordanAceto micro pico micro pico, the printed circuit board in 3D

    JordanAceto micro pico micro pico

    punkfab/pcb-corpus

    235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

    333 parts1
  • 4 layers99 × 53.3 mmPSLab, the printed circuit board in 3D

    PSLab

    fossasia/pslab-hardware

    PSLab Hardware Design and Schematics https://pslab.io

    199 parts1.7kApache-2.0
  • 2 layers58.4 × 99.1 mm2164SVF, the printed circuit board in 3D

    2164SVF

    JordanAceto/SSM2164-SVF

    State variable filter with audio and super low frequency modes

    77 parts4CC-BY-4.0
  • 2 layers39.8 × 108.6 mmPuff Main, the printed circuit board in 3D

    Puff Main

    Thorinair/Avalon-Harmonics

    A collection of Avalon Harmonics branded synthesizer modules.

    153 parts26CC-BY-SA-4.0
  • 4 layers100 × 100 mmTouchSynth, the printed circuit board in 3D

    TouchSynth

    cpldcpu/TouchSynth

    Analog Monophonic Synthesizer with a touch keyboard. Controller by CH32V00x

    246 partsMIT
  • 4 layers111.8 × 165.1 mmModulation board, the printed circuit board in 3D

    Modulation board

    JordanAceto/micro_ox

    Monosynth with analog signal path and digital controls. SSI2130 VCOs and SSI2140 VCF.

    244 parts8CC-BY-4.0
  • 4 layers118 × 88 mmVinyl adc rev e, the printed circuit board in 3D

    Vinyl adc rev e

    MadsRudolph/vinyl-adc

    Discrete 3rd-order delta-sigma stereo audio ADC, built from op-amps and logic gates: a four-layer Raspberry Pi HAT made by PCBWay, with KiCad files, SPICE simulations and measurements

    184 parts1

Questions

How big is the Quad adsr PCB?

It measures 71.1 × 99.1 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Quad adsr use?

197 parts, built around the MCP4822-E/P, TL072, HDSP-7503 and 74HC595. 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.

Where can I download the Quad adsr KiCad files?

From the JordanAceto/quad_ADSR_board repository on GitHub, at the commit this page was made from: the board is hardware/main_pcb/kicad_docs/quad_adsr.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Quad adsr design in my own project?

Its repository states no licence, so its author keeps all rights: ask JordanAceto before reusing the design.