Kassutronics Quantizer User manual

Quantizer Kassutronics
Board revision 1.1, build documentation revision A October 15, 2019
Description
A quantizer is a nearly essential utility in a
modular synth. By quantizing any incoming
control voltage to the 1V/Oct standard, the
Quantizer allows your VCOs to play in musical
tune. With two channels and exible custom
musical scales, the Quantizer can create two
voices or simple chords. Operating either free-
running or triggered from an external rhythm,
the Quantizer can generate all kinds of random
and pseudorandom melodies, or simply quan-
tize the voltage from a variable source such as
a ribbon controller. The Gate outputs indicate
whenever a new note has been quantized.
While the Quantizer is a digital module,
the user interface is designed to retain much
of the immediacy that makes analog synthe-
sizers so much fun. The musical scale is set
using a rather unique circle of illuminated but-
tons representing the semitones in an octave,
which can be enabled or disabled by pressing
the buttons. Breaking free from traditional pi-
ano keyboard layouts, the circle layout avoids
silly complexities in standard musical theory
and encourages experimentation. The rotate
buttons and allow you to change the root
note of the scale, and further highlight the cir-
cular nature of musical harmony. The module
automatically retains its state when powered
down.
More advanced options are supported
by a single menu layer, accessed with the
τ
Shift
button and explained by the blue icons.
These options allow dierent kinds of transpo-
sitions, gate length changes, and above all ex-
ible CV control of almost any parameter using
the A and B CV inputs. Under CV control
the Quantizer turns into a dynamic composi-
tion element.
For a more detailed description of the mod-
ules operation, see the separate User manual.
This document contains all information needed
to build a Quantizer for yourself. Please read
the Build instructions and Bill of materials
carefully before starting your build!
Quantizer
Gate A GateTrigTrig
Out BIn Out
In
1
1
2
0
4
1
5
1
0
7
6
8
Shift
A
B
τ
Front panel
Features
•
Two channel quantizer
•
External trigger inputs and free-running
mode
•
Easy selection of scales
•
Flexible CV control
•
Save/recall of scales and autosave of cur-
rent state
•
10hp Eurorack format
•
Arduino-compatible open-source code
•
Mostly through-hole construction
Schematics, PCB layout and documentation
c
2019 Caspar Ockeloen-Korppi.
Board revision 1.1, build documentation revision A 1

Quantizer Kassutronics
Power supply recommendations
Symbol Parameter Voltage Current (typ)
VCC
Positive supply
+12
V 70 mA
VEE
Negative supply
−12
V 30 mA
Typical performance characteristics
Parameter Typical value Unit
Output characteristics
Output voltage range
±5.33
V
Output voltage step size 83.3 mV
Output voltage accuracy and linearity
1
±1
mV
Ripple and noise (20 MHz bandwidth) 4 mVpp
Input characteristics (In, A and B jacks)
Input voltage range
±5.33
V
Hysteresis 10 mV
Timing characteristics
Sampling rate, per channel 4.8 kHz
Output rise time,
tr
250
µ
s
Delay, trigger to sample
2
,
tts
150 350
µ
s
Delay, sample to gate high
3
,
tsg
450
µ
s
Minimum trigger pulse length
<10 µ
s
1
Using well-matched resistors, see build instructions.
2
The Trigger delay function can be used to add an extra delay up to 11 ms.
3
The output changes voltage during this delay, and is settled completely before the gate goes high.
Output error and linearity Output ripple and noise vs bandwidth
2 Board revision 1.1, build documentation revision A

Kassutronics Quantizer
Timing diagram, triggered
Board revision 1.1, build documentation revision A 3

Quantizer Kassutronics
Build instructions
Main PCB
The main board contains the power circuitry, micro controller, analog input and output circuitry
and trigger/gate circuitry, all in through-hole parts.
1. For accurate 1V/Oct output on both output channels, resistors R5, R6, R15 and R16
should be matched to 0.1% or better. You can either buy 0.1% tolerance resistors, or
measure a bunch of normal 1% resistors and choose two closely matched pairs R5 = R6
and R15 = R16. Their value should agree within 10
Ω
.
2. Optionally the input resistor dividers could also be matched, which will improve the
tracking at the extreme ends of the scale (around +5V and -5V). If you choose to do this
step, they should be matched in pairs R22=R20, R29=R26, R45=R47, R46=R48. Note,
however, that matching on these resistors is much less critical since the inputs will be
quantized anyway, and even standard 1% tolerance resistors are ne for most uses.
The following image shows the locations of matched resistor pairs.
Red boxes
indicate pairs that
must
be matched for output performance, and yellow boxes indicate
pairs that can be matched for best input performance.
4 Board revision 1.1, build documentation revision A

Kassutronics Quantizer
3. J1 and J2 are for programming and debugging, and should be soldered on the bottom
side of the PCB. In most cases J2 will never be used.
4. The eurorack power header should also be soldered on the bottom of the PCB. Either a
shrouded or unshrouded header can be used.
5. I recommend using sockets for all ICs, especially for the microcontroller. Before inserting
the microcontroller, follow the power up test described in the next section.
Front panel PCB
The front panel PCB contains all buttons and jacks, as well as I/O expansion ICs and com-
ponents needed to read the buttons and drive the LEDs. Some of the components are surface
mount devices. The SMD pads were specically designed to allow easy hand soldering with a
normal soldering iron.
Pay special attention to the orientation of these components:
1. For SMD ICs pin 1 is marked on the silkscreen with a circle inside the component, and
an extended line next to the solder pad. On the chip itself markings may vary, but pin 1
is always in the bottom left corner when the text is in normal reading orientation.
2. The PB6149L buttons have 6 legs, but there are 7 holes in the PCB footprint. The
buttons must be rotated such that a small pastic alignment stub ts into the extra hole
in the PCB. Make sure to completely insert the buttons into the PCB before soldering.
3. The at side and shorter leg of the 3mm LEDs correspond to the square pad on the PCB.
4. All pin sockets should be soldered on the bottom side of the PCB such that they connect
with the corresponding pin headers on the main PCB.
5. J213-J217 are very close to the Thonkiconn jacks on the other side, getting all these
components in place is a bit of a puzzle. I recommend to rst solder J214-J217 (but not
yet J213), then the Thonciconns, and nally J213.
6. The leads of S204-S206 should be trimmed fairly short to make space for the trimpots
RV1-RV3 when the boards are connected together.
Powerup test
Before inserting the microcontroller and assembling the two boards together, follow these steps.
1. Inspect the boards for shorts or bad joints.
2. Measure the resistance between the +12V and GND and between the GND and -12V
power connections. The values will change while measuring due to the large capacitors,
but should increase to at least the k
Ω
range after several seconds.
3. With U3 (LP2951N) inserted, but not yet the microcontroller, apply power to the main
board. Measure the 5V3 power rail on pin 4 of J2 (backside of the PCB). Adjust trimmer
RV1 until the voltage is close to 5.34V.
4. With the main board still powered up, measure the 5VD power rail on J5 (frontside of
the PCB). It should read between 4.8V and 5.2V and is not adjustable.
5. Disconnect power and insert the ATMega328P microcontroller.
Board revision 1.1, build documentation revision A 5

Quantizer Kassutronics
Mechanical assembly
The front panel must be connected to the front panel PCB with M3 standos to ensure proper
operation of the push buttons. To obtain the correct spacing of 10.3 to 10.5 mm, use 10mm
standos + one M3 washer. Similarly, washers must be used between the Thonkiconn jacks
and the front panel. The recommended mechanical assembly is shown in the following diagram.
M3 x 10mm (4 pcs)
M3 x 11mm (4 pcs)
M3 washer (4 pcs)
M3 x 6mm screw (4 pcs)
Thonkiconn washer (10 pcs)
Thonkiconn nut (10 pcs)
M3 x 6mm screw (4 pcs)
Programming the microcontroller
If you have a pre-programmed microcontroller, skip this section.
The board is designed to be compatible with the Arduino Uno, and can be easily pro-
grammed from the Arduino software. The chip can be programmed through the ICSP header
J1.
1
Getting started
First, make sure you have a recent version of the Arduino IDE. I used version 1.8.5 while
developing the module. Download the latest Quantizer rmware source code from github and
open it up in Arduino. Press Verify to compile the code, and check that it compiles successfully.
Programming with the ICSP header
Here, I give the steps needed for programming briey. This is exactly the same as programming
an Arduino via it's ICSP header, so plenty of instructions can be found online in case you are
having trouble.
For programming, you need one of the programmers that is supported by Arduino. I used
the USBasp, which is cheaply available from Ebay, but there are several others that work
1
When the Arduino bootloader is installed on the chip, the board can also be programmed through the
serial header J2. This option is mostly useful for debugging and will not be discussed here.
6 Board revision 1.1, build documentation revision A

Kassutronics Quantizer
pretty much in the same way. See the USBasp website for drivers and instructions how to
install them.
2
The quantizer board has a 6-pin ICSP header, with the standard pinout also written on
the PCB. If your programmer only comes with a 10-pin header, you need to buy or make an
adapter cable to the 6-pin version. Now come the important steps:
1.
Remove the
Power device
jumper from the programmer
.
2. Power up the Quantizer board from a eurorack power supply.
3. Connect the 6-pin ICSP header to J1. Pin 1 is the bottom-right pin when looking at the
back of the module, and is labeled MISO.
4. In the Arduino IDE, choose Tools
→
Programmer and select the programmer you are
using.
5. Choose Tools
→
Burn Bootloader.
3
6. Choose Sketch
→
Upload Using Programmer.
If all goes well, the scale lights now light up with a Major scale and the quantizer is working!
Note:
Programming the microcontroller via the ISCP header erases the EEPROM, resetting
the Quantizer to factory defaults.
Alternative: programming via the serial port
Once the Arduino Bootloader has been uploaded (using the Burn Bootloader command de-
scribed above or by starting with a preprogrammed Arduino chip), the Quantizer can also
be programmed via the serial header J2. This way the EEPROM doesn't get reset, which is
especially useful for rmware development.
The serial header can be connected to any 5V-compatible USB-to-serial adapter. Connect
RX (adapter) to TX (quantizer), and vice versa TX (adapter) to RX (quantizer). Connect
also GND and DTR, but
do not connect 5V3
. Power the board through a eurorack power
source, and upload the sketch with the normal Upload button.
Calibration
To calibrate the output to 1V/octave, a multimeter with reasonably good precision is needed. I
recommend a 4-digit or better multimeter; however, if you only have a 3-digit it will still work.
You can always do a more precise calibration later if needed!
•
Set the multimeter to DC Volt and connect it to the left Out jack.
•
Press
τ
Shift
+ to enter keyboard mode. Button 0 should light up, and the output should
be around 0V.
•
Adjust RV2 (the middle trimmer when looking from the side) such that the output voltage
is exactly 0.000V, within a few mV.
2
To get the USBasp working on Windows 10 I had to choose the libusbK driver; others report using the
libusb-win32 driver successfully. These are all included in the Zadig software linked from the USBasp site.
3
If you get an error target doesn't answer you may need to connect the
Slow
jumper on the programmer
during this step.
Board revision 1.1, build documentation revision A 7

Quantizer Kassutronics
•
Press ve times, it will ash quickly. The output voltage should be close to 5V. Adjust
RV1 (the trimmer near the board edge) to make it exactly 5.000V, within a few mV.
•
Go back down ve times with to check the 0V again, and adjust if needed. If you made
an adjustment, also check the 5V again. Finally, check the -5V output.
•
Now, connect the multimeter to the right Out jack, and go back to octave zero (both
and are not lit up). Adjust RV3 to set this voltage to exactly 0.000V (within a few
mV).
•
Finally, check the high and low octaves of the right output. They should be close to
correct and normally no further adjustments are needed.
Note:
If the resistor matching was done accurately, all octaves on both outputs can be
matched to within about 2 mV. However, don't fuss too much about the accuracy here. An
error of up to 5mV will be comparable to the tracking accuracy of a typical analog VCO such
as my VCO 3340, and is totally acceptable. For reference, 1mV error corresponds to 1.2 cents
detuning.
8 Board revision 1.1, build documentation revision A

Kassutronics Quantizer
Bill of materials
Main PCB
Qty Designator Value Note
2 C2, C7 22p C0G ceramic, pitch 2.5mm
4 C22, C23, C28, C29 47p C0G ceramic, pitch 2.5mm
4 C1, C6, C8, C11 220p C0G ceramic, pitch 2.5mm
4 C20, C21, C26, C27 470p C0G ceramic, pitch 2.5mm
6 C5, C10, C24, C25, C30, C31 1n C0G/X7R cer., pitch 2.5mm
1 C12 22n Film, pitch 5.0mm
7 C3, C4, C9, C16, C18, C19, C32 100n X7R ceramic, pitch 2.5mm
4 C13, C14, C15, C17 10u Electrolytic, min. 25V, diame-
ter 6.3mm, pitch 2.5mm,
max.
height 9mm
1
3 D1, D2, D7 1N4148 THT
3 D4, D5, D6 1N5817 THT
1 J5 1x2 Pin header, pitch 2.54mm
5 J8, J9, J10, J11, J12 1x3 Pin header, pitch 2.54mm
1 J3 1x5 Pin header, pitch 2.54mm
1 J2 1x6 Pin header, pitch 2.54mm
1 J1 2x3 Pin header, pitch 2.54mm
1 J4 2x5 Pin header, pitch 2.54mm
2 Q1, Q2 2N3904 TO-92, square pad = emitter
11 R1, R7, R8, R13, R14, R17, R18, 1k 1/4W or 1/8W, 1% metal lm
R49, R50, R53, R54
7 R9, R21, R28, R34, R36, R41, R42 10k 1/4W or 1/8W, 1% metal lm
4 R5, R6, R15, R16 10k
0.1% matched pairs
8 R20, R22, R26, R29, R45, R47 10k 1% or 0.1%, see instructions
R46, R48
7 R2, R10, R32, R33, R35, R37, R38 15k 1/4W or 1/8W, 1% metal lm
1 R27 47k 1/4W or 1/8W, 1% metal lm
4 R3, R4, R11, R12 68k 1/4W or 1/8W, 1% metal lm
10 R19, R23, R24, R25, R30, R31, R39, 100k 1/4W or 1/8W, 1% metal lm
R40, R43, R44
2 R51, R52 1M 1/4W or 1/8W, 1% metal lm
2 RV2, RV3 10k Trimmer 3296X or T910-X
1 RV1 5k Trimmer 3296X or T910-X
1 U4 78L05 TO-92
1 U2 ATMega328P ATMega328P-PU, DIP-28
1 U3 LP2951ACN DIP-8, ON Semi
1 U5 TL072 DIP-8
2 U1, U6 TL074 DIP-14
1 Y1 16MHz HC49 crystal
1
Nichicon UST1H100MDD or equivalent, pay close attention to dimensions.
Board revision 1.1, build documentation revision A 9

Quantizer Kassutronics
Front panel PCB
Qty Designator Value Note
4 C201, C202, C203, C204 100n 0805 SMD, X7R ceramic
2 D201, D202 LED 3mm, square pad = negative
1 J212 1x2 Socket strip, pitch 2.54mm
5 J213, J214, J215, J216, J217 1x3 Socket strip, pitch 2.54mm
1 J201 1x6 Socket strip, pitch 2.54mm
10 J6, J7, J204, J205, J206, J207, Thonkiconn Thonkiconn
J208, J209, J210, J211
16 R202, R204, R206, R208, R210, R212, 2.2k 0805 SMD
R214, R216, R218, R220, R222, R224,
R226, R228, R230, R232
2 R233, R234 10k 1/4W or 1/8W THT
16 R201, R203, R205, R207, R209, R211, 100k 0805 SMD
R213, R215, R217, R219, R221, R223,
R225, R227, R229, R231
16 S201, S202, S203, S204, S205, S206, Highly PB6149L-1
1
S207, S208, S209, S210, S211, S212,
213, S214, S215, S216
2 U201, U203 74HC165 SOIC-16
2 U202, U204 74HC595 SOIC-16
1
Highly PB6149L-
x
, where
x
indicates the LED color, is available from TME.
Mechanical parts
Qty Item
4 M3 hex stand-os, 10mm long, one male and one female thread
4 M3 hex stand-os, 11mm long, two female threads
4 M3 washers
8 M3 screws, cheese head
10 Washers for Thonkiconn jacks
10 Board revision 1.1, build documentation revision A

Kassutronics Quantizer
Board view
Main PCB Front panel PCB
Board revision 1.1, build documentation revision A 11

Quantizer Kassutronics
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: 2018-12-19
KiCad E.D.A. kicad 4.0.6 Rev: 1.1Size: A4 Id: 1/3
Title: Quantizer
File: Quantizer.sch
Sheet: /
Kassutronics
(C) 2018 Caspar Ockeloen-Korppi
(PCINT14/RESET)PC6 1
(PCINT16/RXD)PD0 2
(PCINT17/TXD)PD1 3
(PCINT18/INT0)PD2 4
(PCINT19/OC2B/INT1)PD3 5
(PCINT20/XCK/T0)PD4 6
VCC
7
GND
8
(PCINT6/XTAL1/TOSC1)PB6 9
(PCINT7/XTAL2/TOSC2)PB7 10
AVCC
20
(PCINT21/OC0B/T1)PD5 11
AREF
21
(PCINT22/OC0A/AIN0)PD6 12
GND
22
(PCINT23/AIN1)PD7 13
(PCINT8/ADC0)PC0 23
(PCINT0/CLKO/ICP1)PB0 14
(PCINT9/ADC1)PC1 24
(PCINT1/OC1A)PB1 15
(PCINT10/ADC2)PC2 25
(PCINT2/OC1B/SS)PB2 16
(PCINT11/ADC3)PC3 26
(PCINT3/OC2A/MOSI)PB3 17
(PCINT12/SDA/ADC4)PC4 27
(PCINT4/MISO)PB4 18
(PCINT13/SCL/ADC5)PC5 28
(PCINT5/SCK)PB5 19
U2
ATMEGA328P-PU
MOSI
MISO
SCK
RESET
RX
TX
1 2
3 4
5 6
J1
CONN_02X03
MISO
SCK
RESET MOSI
R9
10k
Y1
16MHz
C2
22p
C7
22p
C9
100n
1
2
3
4
5
6
J2
CONN_01X06
RX
TX
DTR
C4
100n
C3
100n
1 2
3 4
5 6
7 8
9 10
J4
PWR
-12VA
+12VA
PWR_FLAG
PWR_FLAG
PWR_FLAG
Eurorack power input connector
C15
10u
C17
10u
+12VA
-12VA
Bulk power decoupling
OUT 1
SENSE 2
SHUTDOWN
3
GROUND 4
ERROR
5
VTAP
6
FEEDBACK 7
IN
8
U3
LP2951N
+12VA
R32
15k R27
47k
RV1
5k
C12
22n
C13
10u
R1
1k SCL
R13
1k SDI
R14
1k SLI
R17
1k SDO
R18
1k SLO
1
2
3
4
5
J3
CONN_01X05
SCL
SDI
SLI
SDO
SLO
UIBoard
UIBoard.sch
+5VA
+5VA
+5VA
+5VA
GNDA
GNDA
GNDA
GNDA
GNDA
GNDA
GNDA
GNDA
GNDA
+5VD
+12VA
GNDA
1
2
J5
CONN_01X02
OUT 1
GND
2
IN
3
U4
78L05
Board-to-board interconnections
+5VA
C14
10u
D6
5817
D5
5817
D4
5817
Analog
Analog.sch
OC1A
OC1B
ADC0
ADC1
DOUTA
DOUTB
DINA
DINB
Gate/Trigger Analog I/O
Serial I/O
(Pushbuttons)
The brainbox
SPI / ICSP header
Serial debug/programming header
Subsheets
5.333V rail for microcontroller / analog reference 5V rail for LED pushbuttons
and serial I/O expanders
D6 protects from reverse discharge of C14
Power to
UI board
Analog I/O and
trigger/gate circuits All components
on the front PCB
D7
4148
D4,D5 are reverse power protection
C19
100n
GNDA
RESET
GNDA
+5VD
ADC2
ADC3
+5VD
1
2
3
J8
CONN_01X03
1
2
3
J9
CONN_01X03
1
2
3
J10
CONN_01X03
1
2
3
J11
CONN_01X03
1
2
3
J12
CONN_01X03
GATEA
TRIGA TRIGB
GATEB
INA INB
OUTA OUTBCVA
CVB
GNDA GNDA
GNDA
GNDA
+12VA
Programming / debugging interfaces
Power
GNDA GNDA
+5VA
12 Board revision 1.1, build documentation revision A

Kassutronics Quantizer
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: 2018-09-26
KiCad E.D.A. kicad 4.0.6 Rev: 1.0Size: A4 Id: 2/3
Title: Quantizer
File: UIBoard.sch
Sheet: /UIBoard/
Kassutronics
(C) 2018 Caspar Ockeloen-Korppi
1
23
4
5 6
S201
PB6149
1
23
4
5 6
S202
PB6149
1
23
4
5 6
S203
PB6149
1
23
4
5 6
S204
PB6149
1
23
4
5 6
S205
PB6149
1
23
4
5 6
S206
PB6149
1
23
4
5 6
S207
PB6149
1
23
4
5 6
S208
PB6149
R201
100k
R203
100k
R205
100k
R207
100k
R209
100k
R211
100k
R213
100k
R215
100k
R202
2.2k
R204
2.2k
R206
2.2k
R208
2.2k
R210
2.2k
R212
2.2k
R214
2.2k
R216
2.2k
QB 1
QC 2
QD 3
QE 4
QF 5
QG 6
QH 7
QH 9
SRCLR
10 SRCLK
11
RCLK
12
G
13
SER
14 QA 15
U202
74HC595
SLO_TOP
SCL_TOP
SDO_TOP
Pl 1
CP 2
P4 3
P5 4
P6 5
P7 6
Q7
7Q7
9Ds 10
P0 11
P1 12
P2 13
P3 14
CE 15
U201
74HC165
SDI_TOP
SLI_TOP
SCL_TOP
1
23
4
5 6
S209
PB6149
1
23
4
5 6
S210
PB6149
1
23
4
5 6
S211
PB6149
1
23
4
5 6
S212
PB6149
1
23
4
5 6
S213
PB6149
1
23
4
5 6
S214
PB6149
1
23
4
5 6
S215
PB6149
1
23
4
5 6
S216
PB6149
R217
100k
R219
100k
R221
100k
R223
100k
R225
100k
R227
100k
R229
100k
R231
100k
R218
2.2k
R220
2.2k
R222
2.2k
R224
2.2k
R226
2.2k
R228
2.2k
R230
2.2k
R232
2.2k
QB 1
QC 2
QD 3
QE 4
QF 5
QG 6
QH 7
QH 9
SRCLR
10 SRCLK
11
RCLK
12
G
13
SER
14 QA 15
U204
74HC595
SLO_TOP
SCL_TOP
Pl 1
CP 2
P4 3
P5 4
P6 5
P7 6
Q7
7Q7
9Ds 10
P0 11
P1 12
P2 13
P3 14
CE 15
U203
74HC165
SLI_TOP
VCCVCC
VCC VCC
GND
GND
GND
GND
GND
GND
LD8
LD7
LD6
LD5
LD4
LD3
LD2
LD1
SW1
SW2
SW3
SW4
SW5
SW6
SW7
SW8
SW8
SW7
SW6
SW5
SW4
SW3
SW2
SW1
LD1
LD2
LD3
LD4
LD5
LD6
LD7
LD8
SW16 LD16
LD15
SW15
SW14 LD14
SW13 LD13
SW12 LD12
SW11 LD11
SW10 LD10
SW9 LD9
SCL_TOP
SW16
SW15
SW14
SW13
SW12
SW11
SW10
SW9
LD9
LD10
LD11
LD12
LD13
LD14
LD15
LD16
1
2
3
4
5
J201
CONN_01X06
SCL_TOP
SDI_TOP
SLI_TOP
SDO_TOP
SLO_TOP
C201
100n
C202
100n
C203
100n
C204
100n
VCC
GND
1
2
3
J206
Thonkiconn GNDA_TOP
12VA_TOP
TRIGA_TOP
1
2
3
J210
Thonkiconn GNDA_TOP
12VA_TOP
TRIGB_TOP 1
2
3
J208
Thonkiconn
GNDA_TOP
GATEB_TOP
1
2
3
J204
Thonkiconn
GNDA_TOP
GATEA_TOP
1
2
3
J209
Thonkiconn
GNDA_TOP
OUTB_TOP
1
2
3
J205
Thonkiconn
GNDA_TOP
OUTA_TOP1
2
3
J207
Thonkiconn GNDA_TOP
INA_TOP
1
2
3
J211
Thonkiconn GNDA_TOP
INB_TOP
1 2
D201
LED R233
10k
GATEA_TOP
1 2
D202
LED R234
10k
GNDA_TOP
GATEB_TOP
1
2
J212
CONN_01X02
Input/output jacks and gate LEDs
Illuminated push buttons
Local supply decoupling and
power connector for illuminated buttons
Board-to-board interconnects
Serial I/O expansion for illuminated push buttons
PWR_FLAG
PWR_FLAG
1
2
3
J6
Thonkiconn GNDA_TOP
CVA_TOP
1
2
3
J7
Thonkiconn GNDA_TOP
CVB_TOP
1
2
3
J213
CONN_01X03
1
2
3
J214
CONN_01X03
1
2
3
J215
CONN_01X03
1
2
3
J216
CONN_01X03
1
2
3
J217
CONN_01X03
12VA_TOP
TRIGA_TOP
GATEA_TOP
GNDA_TOP GATEB_TOP
TRIGB_TOP
GNDA_TOP
GNDA_TOP
GNDA_TOP
INA_TOP
OUTA_TOP OUTB_TOP
INB_TOP
CVA_TOP
CVB_TOP
* Circle: counting CW starting from S201 = 12 o'clock
* Function keys: S213 (right) through S216 (left)
Board revision 1.1, build documentation revision A 13

Quantizer Kassutronics
1 2 3 4 5 6
1 2 3 4 5 6
A
B
C
D
A
B
C
D
Date: 2018-09-26
KiCad E.D.A. kicad 4.0.6 Rev: 1.0Size: A4 Id: 3/3
Title: Quantizer
File: Analog.sch
Sheet: /Analog/
Kassutronics
(C) 2018 Caspar Ockeloen-Korppi
C16
100n
(U1) C18
100n
V+ 4
V-
11
+
5
-
67
U1B
TL074
R2
15k R3
68k
C5
1n
R4
68k
C6
220p
C1
220p
R6
10k
R5
10k
V+ 4
V-
11
8
-
9
+
10 U1C
TL074
R10
15k R11
68k
C10
1n
R12
68k
C11
220p
C8
220p
R16
10k
R15
10k
V+ 4
V-
11
1
-
2
+
3U6A
TL074
R22
10k
R20
10k
V+ 4
V-
11
+
12
-
13 14
U6D
TL074
R29
10k
R26
10k
1
2
3
Q1
EBC
R23
100k
D1
4148
1
2
3
Q2
EBC
R30
100k
D2
4148
R24
100k
R21
10k
R31
100k
R28
10k
-12VA
+12VA
R7
1k
R8
1k
+5VA
+5VA
+5VA
+5VA
GNDA GNDA
GNDAGNDA
GNDA
GNDA
GNDA
GNDA
V-
4V+ 8
1
-
2
+
3U5A
TL072
R34
10k
R33
15k
GNDA
-12VA
+12VA
V-
4V+ 8
+
5
-
67
U5B
TL072
R36
10k
R35
15k
GNDA
-12VA
+12VA
-12VA
+12VA
(U5)
Local power supply decoupling
Analog outputs
Analog inputs
Gate outputsTrigger inputs
Uses internal pullups of the microcontroller Scale 5.3V gate to 8.8V
4th order passive low pass filter
OC1A
OC1B
OUTA
OUTB
ADC0
ADC1
INA
CVA
GATEA
GATEB
DOUTB
DOUTA
TRIGA
TRIGB
DINA
DINB
Match R5 = R6 within 0.1%
Match R15 = R16 within 0.1%
2N3904
2N3904
R19
100k
C20
470p
C22
47p
GNDA GNDA
R25
100k
C21
470p
C23
47p
GNDA GNDA
GNDA
V+ 4
V-
11
1
-
2
+
3U1A
TL074
R37
15k
C24
1n
GNDA
GNDA
V+ 4
V-
11
+
12
-
13 14
U1D
TL074
R38
15k
C25
1n
GNDA
+12VA
-12VA
V+ 4
V-
11
+
5
-
67
U6B
TL074
R45
10k
R47
10k
V+ 4
V-
11
8
-
9
+
10 U6C
TL074
R46
10k
R48
10k
R39
100k
R41
10k
R40
100k
R42
10k
+5VA
+5VA
GNDA
GNDA
ADC2
ADC3
INB
CVB
R43
100k
C26
470p
C28
47p
GNDA GNDA
R44
100k
C27
470p
C29
47p
GNDA GNDA
R49
1k
C30
1n
R50
1k
C31
1n
RV2
10k
R53
1k
R51
1M
RV3
10k
R54
1k
R52
1M
C32
100n
(U6)
U1A buffers first two stages and adds offset
U1A gain equation: Vin' = (1 + R53/R51)*Vin - (R53/R51)*Vx
where Vx is the wiper voltage of RV2
U1B buffers the last 2 stages, and scales up the voltage to +/-5.333V
U1B gain equation: Vout = (1 + R6/R5)*Vin' - (R6/R5)*Vref
where Vref is the +5VA rail, approx. 5.3V
Overall DC gain equation:
Vout = (1 + R6/R5)*(1 + R53/R51)*Vin - (1 + R6/R5)*(R53/R51)*Vx - (R6/R5)*Vref
With the nominal resistor values:
Vout = 2.002*Vin - 0.002*Vx - 2*Vref
+12VA
-12VA
-12VA
+12VA
14 Board revision 1.1, build documentation revision A

Kassutronics Quantizer
Circuit description
The Quantizer contains mostly fairly standard digital circuitry. However, a few unusual design
choices were made, as discussed below.
Analog outputs
For the pitch CV outputs, the Quantizer uses two pulse width modulated (PWM) signals that
are ltered and scaled to form analog signals. While PWM is often mostly considered as a
cheap alternative to other DAC architectures, it has a specic advantage. The output voltage
is directly derived from the microcontrollers (MCU) clock crystal, which provides very accurate
timing (low jitter), which converts to excellent linearity in the voltage domain. As shown in
the performance characteristics, the nonlinearity is below 0.01% of full scale. This vastly
outperforms popular low-cost DACs such as the MCP4822, which has a typical nonlinearity of
0.1%, and is comparable to high-performance DACs such as the DAC8565. A PWM output
is also extremely easy to use in software, since updating the value only requires writing to a
register of the MCU.
The challenges with PWM outputs are accuracy of the reference voltage, properly ltering
the PWM signal, and a trade-o between resolution and PWM frequency. The latter was no
big issue in the Quantizer, since we only need steps of whole semitones, or 12 steps per octave.
Using a 7-bit DAC (128 steps), a range of more than 10 octaves is reached. Using the 16 MHz
clock to drive the PWM we end up with a 125 kHz PWM frequency, well above audio range
and allowing for quick voltage changes.
The reference voltage of the PWM DAC is essentially the supply voltage of the MCU, so
a well-regulated, low-drift and accurately tunable supply is needed. This is implemented with
U3, a LP2951N adjustable regulator. The supply voltage is tuned to calibrate the DAC output
scale. By setting the supply voltage to a special value of nominally 5.333V (higher than the
usual 5V, but within spec for the MCU), the PWM output gets scaled to exactly 24 steps per
Volt. The analog output circuit described next amplies this by a factor 2, reaching the nal
required 12 steps per Volt. Note that in practice the supply voltage must be tuned slightly
higher around 5.34V to compensate for the on-resistance of the MCU output transistors.
Finally, carefully ltering the PWM signal to a DC output is essential. In the Quantizer
I chose a 4-pole passive RC lter, consisting of two 2-pole sections with a buer in between
and at the end. It should be noted that ltering the 125 kHz PWM carrier frequency is fairly
straight forward, choosing a trade o between cuto frequency, number of poles and residual
ripple. However, ltering the high-frequency harmonics is more dicult. Even the for modern
standards slow ATmega MCU has very fast signal edges, with frequency content up to about
100 MHz. For ltering the high frequency content a passive lter performs somewhat better
than for example a Sallen-Key topology, because in the latter the opamp has to actively keep
up with the high frequency content. A passive lter also has naturally exactly unity gain,
simplifying the output scaling setup in this design. Even so, stray electromagnetic coupling
allows some high-frequency content to pass through, as shown in the gure
Output ripple and
noise vs bandwidth
.
The rst buer opamp in each channel (U1A and U1D) has an oset trimmer connected with
a gain of 1/1000, allowing to trim the total oset to zero. The oset, which when unadjusted
is typically below 10 mV, originate partly from the opamps, and partly from asymmetric on-
resistance of the MCU output transistors. Trimming the oset to zero means you can connect
the Quantizer to a VCO without aecting the tuning.
Board revision 1.1, build documentation revision A 15

Quantizer Kassutronics
Finaly output scaling is done by the last opamps, U1B and U1C, using matched resistors to
set a gain of exactly 2. These opamps also have in-the-loop frequency compensation to allow
signicant capacitive loads without aecting DC accuracy.
Analog inputs
The four analog inputs, two channel inputs and two CV inputs, all use identical circuitry. They
use the internal 10-bit ADC of the MCU, which was found to be good enough in terms of noise
and linearity. The ADC is freely running at the maximum recommended rate of 52
µ
s per
sample, resulting in a 4.8 kHz sample rate per channel when divided over the four inputs.
Each input is ltered by a two-pole passive lter. The cuto frequency of each pole is set at
33 kHz, above audio rate. Hence, these lters in most cases do nothing! However, the actual
sampling time of the DAC is only a few
µ
s, and the DAC is able to pick up high-frequency
noise if presented with an noisy CV source. In prototypes I found I had plenty of noisy CV
sources around, in particular poorly ltered PWM outputs from other hardware. The input
lters mitigate this noise.
You may have noticed that the lter frequency is also well above the Nyquist frequency
of half the sampling frequency. This is a deliberate choice. The Quantizer does not aim to
faithfully reconstruct the input signal. Rather, it acts more like a sample-and-hold circuit,
sampling the signal at an instant. This analogy works in particular when using the Trigger
input, and for example sampling a noise source to generate a random melody.
Trigger inputs and gate outputs
The trigger inputs are handled by discrete transistor inverters Q1 and Q2. These make for
threshold voltages below 1V, and tolerance to external voltages well above and below the
eurorack supply voltage range. The gate outputs are scaled by opamp U5 to around 9V, which
should be enough to drive almost any other module or synth.
Front panel controls
The front panel buttons and LEDs require more I/O lines than available on the MCU. To drive
the LEDs and read the buttons, standard shift register ICs U201 U204 are used. By mounting
these on the front panel PCB also the number of PCB interconnects is reduced. The buttons
and LEDs are not multiplexed, meaning they do not icker and also not induce ripple into the
power lines. The LEDs, buttons and related circuitry are powered from a separate regulator
U4, to minimize cross-talk between the LED current draw and the DAC output voltage.
16 Board revision 1.1, build documentation revision A

Kassutronics Quantizer
Front panel dimensions
7.5
3.0
128.5
13.520.9520.9517.7812.708.8917.78
35.56
11.43
10.16
50.5
Dimensions in mm
3.0
Ø 40.46
Ø 6.0
Ø 6.0
Ø 3.0
Ø 6.0
Ø 3.4
Ø 3.2
30
o
Board revision 1.1, build documentation revision A 17

Quantizer Kassutronics
Possible modications
Alternate front panels or formats
While the quantizer is specically designed for Eurorack, the PCB can be adapted for other
formats if desired. Especially bigger formats like 5U are suitable, since this adaptation requires
panel wiring which will take up some extra space.
The the jacks section of the front panel board can be separated from the buttons section by
cutting along the white line printed on the PCB. No traces run through this line. The buttons
section should be used as is, and mounted to the front panel with 10.5mm (or longer up to
14mm) standos and M3 screws as described in the Mechanical assembly section. The main
PCB can be connected to the buttons PCB either as described there, or by replacing J3/J201
and J5/J212 with with longer pin headers or wire links if more space is needed.
The front panel jacks and LEDs can be simply panel mounted and wired to J8 through J10.
The following table lists the connections of these headers. Pin 1 is the square pad.
J8 J9 J10 J11 J12
Pin 1: Gate A Gate B Out A CV A Out B
Pin 2: GND +12V GND GND GND
Pin 3: Trig A Trig B In A CV B In B
The LEDs should be wired from the Gate A/B outputs through a 10k resistor and the
other leg to GND. The +12V point should connect to the switch connection of the Trig A and
Trig B jacks. The latter is needed for auto-detection of triggered mode vs free-running mode.
Alternatively, a manual switch could be used for this function if desired. See the schematic
diagram for more details on the wiring of this section.
Revision history
Board revisions
1.0 Initial prototype
1.1 Second prototype. Add CV inputs, add input ltering, improve output ltering.
Documentation revisions
A Initial documentation for board revision 1.1.
Contact
Check for updated documentation and other information on my blog at kassu2000.blogspot.com.
18 Board revision 1.1, build documentation revision A
Other manuals for Quantizer
1
Table of contents
Popular Control Unit manuals by other brands

DEWESOFT
DEWESOFT V21-1 How-to guide

Aqua Environment Inc
Aqua Environment Inc 504 Owner's operation and maintenance manual

National Instruments
National Instruments NI PXI-6682 user manual

Field Controls
Field Controls CK-92FVP quick start guide

M-system
M-system R7D-EA16 instruction manual

Ericsson
Ericsson DM-20 Interface manual