Skip to content

Commit da081a3

Browse files
author
ScrapComputing
committed
Initial commit rev0.2
0 parents  commit da081a3

13 files changed

+3481
-0
lines changed

LICENSE

Lines changed: 339 additions & 0 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# WavetablePi
2+
3+
WavetablePi is a wavetable module based on the Raspberry Pi Zero 2 W running [mt32-pi](https://github.com/dwhinham/mt32-pi).
4+
It is capable of emulating several midi synthesizers, including mt32, sc55 and general midi with custom sound fonts.
5+
For a complete feature list please refer to the [mt32-pi](https://github.com/dwhinham/mt32-pi) project.
6+
7+
<img src='img/WavetablePi_rev0.1_purple_PCB.jpg' alt='WavetablePi with OLED Display and DAC' height=240>
8+
<p float="left">
9+
<img src='img/WavetablePi_PCB_front.png' alt='WavetablePi PCB Front' height=240>
10+
<img src='img/WavetablePi_PCB_back.png' alt='WavetablePi PCB Back' height=240>
11+
</p>
12+
13+
# Features
14+
15+
- It currently supports two modes of audio: using the raspberry pi's PWM audio out (which is noisy and sounds pretty bad), and an external Hi-Fi PCM5102A based DAC.
16+
- You can also attach a 0.91 OLED SSD1306 I2C 128x32 display.
17+
18+
# Bill of materials
19+
20+
Item | ## | Description
21+
-----------------------------------------|-----|-----------------------------------------
22+
Raspberry Pi Zero 2 W | 1 | The older RPi Zero is not fast enough
23+
40-pin 2x20 male header 2.54mm pitch | 1 | For attaching the RPi to the board.
24+
26-pin 2x13 female header 2.54mm pitch | 1 | For attaching the board to the wavetable header
25+
6-pin 2x3 pin male header 2.54mm pitch | 1 | For the audio select jumpers
26+
Jumper 2.54mm pitch | 2 | Jumpers for the audio selection header
27+
10uF through-hole ceramic capacitors | 2 |
28+
Resistor 22K Ohm | 1 |
29+
Resistor 10K Ohm | 1 |
30+
0.91 OLED SSD1306 I2C 128x32 module | 1 | (Optional)
31+
PCM5102A I2S DAC Module | 1 | (Optional but highly recommended) Please check the PCB for the supported dimensions
32+

img/WavetablePi_PCB_back.png

28.3 KB
Loading

img/WavetablePi_PCB_front.png

28 KB
Loading
323 KB
Loading

kicad/WavetablePi.kicad_pcb

Lines changed: 1846 additions & 0 deletions
Large diffs are not rendered by default.

kicad/WavetablePi.lib

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
EESchema-LIBRARY Version 2.4
2+
#encoding utf-8
3+
#
4+
# GY_PCM5102A
5+
#
6+
DEF GY_PCM5102A GY_PCM5102? 0 40 Y Y 1 F N
7+
F0 "GY_PCM5102?" 0 0 50 H V C CNN
8+
F1 "GY_PCM5102A" 0 100 50 H V C CNN
9+
F2 "" 0 0 50 H I C CNN
10+
F3 "" 0 0 50 H I C CNN
11+
DRAW
12+
S -50 -100 1200 -700 0 1 0 N
13+
X SCK 1 -150 -150 100 R 50 50 1 1 I
14+
X FMT 10 650 0 100 D 50 50 1 1 O
15+
X A3V3 11 750 0 100 D 50 50 1 1 O
16+
X G 12 850 0 100 D 50 50 1 1 P
17+
X R 13 950 0 100 D 50 50 1 1 O
18+
X G 14 1050 0 100 D 50 50 1 1 P
19+
X L 15 1150 0 100 D 50 50 1 1 O
20+
X BCK 2 -150 -250 100 R 50 50 1 1 I
21+
X DIN 3 -150 -350 100 R 50 50 1 1 I
22+
X LCK 4 -150 -450 100 R 50 50 1 1 I
23+
X GND 5 -150 -550 100 R 50 50 1 1 P
24+
X VIN 6 -150 -650 100 R 50 50 1 1 W
25+
X FLT 7 350 0 100 D 50 50 1 1 O
26+
X DEMP 8 450 0 100 D 50 50 1 1 O
27+
X XSMT 9 550 0 100 D 50 50 1 1 O
28+
ENDDRAW
29+
ENDDEF
30+
#
31+
# LCD_0.91_OLED
32+
#
33+
DEF LCD_0.91_OLED U 0 40 Y Y 1 F N
34+
F0 "U" 0 0 50 H V C CNN
35+
F1 "LCD_0.91_OLED" 800 -300 50 H V C CNN
36+
F2 "" 0 0 50 H I C CNN
37+
F3 "" 0 0 50 H I C CNN
38+
DRAW
39+
S 100 -100 1250 -500 0 1 0 N
40+
S 400 -150 1200 -450 0 1 0 N
41+
X SDA 1 0 -150 100 R 50 50 1 1 I
42+
X SCK 2 0 -250 100 R 50 50 1 1 I
43+
X VCC 3 0 -350 100 R 50 50 1 1 W
44+
X GND 4 0 -450 100 R 50 50 1 1 P
45+
ENDDRAW
46+
ENDDEF
47+
#
48+
# RPiZero2W
49+
#
50+
DEF RPiZero2W RPi 0 40 Y Y 1 F N
51+
F0 "RPi" 1050 350 50 H V C CNN
52+
F1 "RPiZero2W" 1100 -600 50 H V C CNN
53+
F2 "" 0 0 50 H I C CNN
54+
F3 "" 0 0 50 H I C CNN
55+
DRAW
56+
S 0 300 2200 -1500 0 1 0 N
57+
X 3.3V 1 200 -1100 100 U 50 50 1 1 w
58+
X GPIO_15 10 600 -100 100 D 50 50 1 1 B
59+
X GPIO_17 11 700 -1100 100 U 50 50 1 1 B
60+
X GPIO_18 12 700 -100 100 D 50 50 1 1 B
61+
X GPIO_27 13 800 -1100 100 U 50 50 1 1 B
62+
X GND 14 800 -100 100 D 50 50 1 1 P
63+
X GPIO_22 15 900 -1100 100 U 50 50 1 1 B
64+
X GPIO_23 16 900 -100 100 D 50 50 1 1 B
65+
X 3.3V 17 1000 -1100 100 U 50 50 1 1 w
66+
X GPIO_24 18 1000 -100 100 D 50 50 1 1 B
67+
X GPIO_10 19 1100 -1100 100 U 50 50 1 1 B
68+
X 5V 2 200 -100 100 D 50 50 1 1 W
69+
X GND 20 1100 -100 100 D 50 50 1 1 P
70+
X GPIO_9 21 1200 -1100 100 U 50 50 1 1 B
71+
X GPIO_25 22 1200 -100 100 D 50 50 1 1 B
72+
X GPIO_11 23 1300 -1100 100 U 50 50 1 1 B
73+
X GPIO_8 24 1300 -100 100 D 50 50 1 1 B
74+
X GND 25 1400 -1100 100 U 50 50 1 1 P
75+
X GPIO_7 26 1400 -100 100 D 50 50 1 1 B
76+
X ID_SD 27 1500 -1100 100 U 50 50 1 1 B
77+
X ID_SC 28 1500 -100 100 D 50 50 1 1 B
78+
X GPIO_5 29 1600 -1100 100 U 50 50 1 1 B
79+
X GPIO_2 3 300 -1100 100 U 50 50 1 1 B
80+
X GND 30 1600 -100 100 D 50 50 1 1 P
81+
X GPIO_6 31 1700 -1100 100 U 50 50 1 1 B
82+
X GPIO_12 32 1700 -100 100 D 50 50 1 1 B
83+
X GPIO_13 33 1800 -1100 100 U 50 50 1 1 B
84+
X GND 34 1800 -100 100 D 50 50 1 1 P
85+
X GPIO_19 35 1900 -1100 100 U 50 50 1 1 B
86+
X GPIO_16 36 1900 -100 100 D 50 50 1 1 P
87+
X GPIO_26 37 2000 -1100 100 U 50 50 1 1 B
88+
X GPIO_20 38 2000 -100 100 D 50 50 1 1 P
89+
X GND 39 2100 -1100 100 U 50 50 1 1 P
90+
X 5V 4 300 -100 100 D 50 50 1 1 W
91+
X GPIO_21 40 2100 -100 100 D 50 50 1 1 P
92+
X GPIO_3 5 400 -1100 100 U 50 50 1 1 B
93+
X GND 6 400 -100 100 D 50 50 1 1 P
94+
X GPIO_4 7 500 -1100 100 U 50 50 1 1 B
95+
X GPIO_14 8 500 -100 100 D 50 50 1 1 B
96+
X GND 9 600 -1100 100 U 50 50 1 1 P
97+
ENDDRAW
98+
ENDDEF
99+
#
100+
#End Library
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
(module GY_PCM5102A (layer F.Cu) (tedit 61CD69B5)
2+
(fp_text reference REF** (at 18.796 9.144) (layer F.SilkS)
3+
(effects (font (size 1 1) (thickness 0.15)))
4+
)
5+
(fp_text value GY_PCM5102A (at 0 -0.5) (layer F.Fab)
6+
(effects (font (size 1 1) (thickness 0.15)))
7+
)
8+
(fp_line (start 0 0) (end 32.004 0) (layer F.SilkS) (width 0.15))
9+
(fp_line (start 32.004 0) (end 32.004 17.272) (layer F.SilkS) (width 0.15))
10+
(fp_line (start 32.004 17.272) (end 0 17.272) (layer F.SilkS) (width 0.15))
11+
(fp_line (start 0 17.272) (end 0 0) (layer F.SilkS) (width 0.15))
12+
(fp_line (start 23.495 17.272) (end 23.495 18.669) (layer F.CrtYd) (width 0.15))
13+
(fp_line (start 23.495 18.669) (end 29.464 18.669) (layer F.CrtYd) (width 0.15))
14+
(fp_line (start 29.464 18.669) (end 29.464 4.572) (layer F.CrtYd) (width 0.15))
15+
(fp_line (start 23.495 17.272) (end 23.495 4.572) (layer F.CrtYd) (width 0.15))
16+
(fp_line (start 23.495 4.572) (end 29.464 4.572) (layer F.CrtYd) (width 0.15))
17+
(fp_text user R (at 23.241 3.302) (layer F.SilkS)
18+
(effects (font (size 1 1) (thickness 0.15)))
19+
)
20+
(fp_text user G (at 25.781 3.302) (layer F.SilkS)
21+
(effects (font (size 1 1) (thickness 0.15)))
22+
)
23+
(fp_text user L (at 28.321 3.302) (layer F.SilkS)
24+
(effects (font (size 1 1) (thickness 0.15)))
25+
)
26+
(fp_text user VIN (at 3.81 14.732) (layer F.SilkS)
27+
(effects (font (size 1 1) (thickness 0.15)))
28+
)
29+
(fp_text user GND (at 4.064 12.319) (layer F.SilkS)
30+
(effects (font (size 1 1) (thickness 0.15)))
31+
)
32+
(fp_text user LCK (at 4.064 9.906) (layer F.SilkS)
33+
(effects (font (size 1 1) (thickness 0.15)))
34+
)
35+
(fp_text user DIN (at 3.81 7.366) (layer F.SilkS)
36+
(effects (font (size 1 1) (thickness 0.15)))
37+
)
38+
(fp_text user BCK (at 4.064 4.572) (layer F.SilkS)
39+
(effects (font (size 1 1) (thickness 0.15)))
40+
)
41+
(fp_text user SCK (at 4.064 2.032) (layer F.SilkS)
42+
(effects (font (size 1 1) (thickness 0.15)))
43+
)
44+
(fp_line (start 9.398 5.588) (end 9.398 12.7) (layer F.SilkS) (width 0.15))
45+
(fp_line (start 9.398 12.7) (end 14.732 12.7) (layer F.SilkS) (width 0.15))
46+
(fp_line (start 14.732 12.7) (end 14.732 5.588) (layer F.SilkS) (width 0.15))
47+
(fp_line (start 14.732 5.588) (end 9.398 5.588) (layer F.SilkS) (width 0.15))
48+
(fp_line (start 14.732 5.842) (end 15.494 5.842) (layer F.SilkS) (width 0.15))
49+
(fp_line (start 14.732 6.35) (end 15.494 6.35) (layer F.SilkS) (width 0.15))
50+
(fp_line (start 14.732 6.858) (end 15.494 6.858) (layer F.SilkS) (width 0.15))
51+
(fp_line (start 14.732 7.366) (end 15.494 7.366) (layer F.SilkS) (width 0.15))
52+
(fp_line (start 14.732 7.874) (end 15.494 7.874) (layer F.SilkS) (width 0.15))
53+
(fp_line (start 14.732 8.382) (end 15.494 8.382) (layer F.SilkS) (width 0.15))
54+
(fp_line (start 14.732 8.89) (end 15.494 8.89) (layer F.SilkS) (width 0.15))
55+
(fp_line (start 14.732 9.398) (end 15.494 9.398) (layer F.SilkS) (width 0.15))
56+
(fp_line (start 14.732 9.906) (end 15.494 9.906) (layer F.SilkS) (width 0.15))
57+
(fp_line (start 14.732 10.414) (end 15.494 10.414) (layer F.SilkS) (width 0.15))
58+
(fp_line (start 14.732 10.922) (end 15.494 10.922) (layer F.SilkS) (width 0.15))
59+
(fp_line (start 14.732 11.43) (end 15.494 11.43) (layer F.SilkS) (width 0.15))
60+
(fp_line (start 14.732 11.938) (end 15.494 11.938) (layer F.SilkS) (width 0.15))
61+
(fp_line (start 14.732 12.446) (end 15.494 12.446) (layer F.SilkS) (width 0.15))
62+
(fp_line (start 8.636 12.446) (end 9.398 12.446) (layer F.SilkS) (width 0.15))
63+
(fp_line (start 8.636 11.938) (end 9.398 11.938) (layer F.SilkS) (width 0.15))
64+
(fp_line (start 8.636 11.43) (end 9.398 11.43) (layer F.SilkS) (width 0.15))
65+
(fp_line (start 8.636 10.922) (end 9.398 10.922) (layer F.SilkS) (width 0.15))
66+
(fp_line (start 8.636 10.414) (end 9.398 10.414) (layer F.SilkS) (width 0.15))
67+
(fp_line (start 8.636 9.906) (end 9.398 9.906) (layer F.SilkS) (width 0.15))
68+
(fp_line (start 8.636 9.398) (end 9.398 9.398) (layer F.SilkS) (width 0.15))
69+
(fp_line (start 8.636 8.89) (end 9.398 8.89) (layer F.SilkS) (width 0.15))
70+
(fp_line (start 8.636 8.382) (end 9.398 8.382) (layer F.SilkS) (width 0.15))
71+
(fp_line (start 8.636 7.874) (end 9.398 7.874) (layer F.SilkS) (width 0.15))
72+
(fp_line (start 8.636 7.366) (end 9.398 7.366) (layer F.SilkS) (width 0.15))
73+
(fp_line (start 8.636 6.858) (end 9.398 6.858) (layer F.SilkS) (width 0.15))
74+
(fp_line (start 8.636 6.35) (end 9.398 6.35) (layer F.SilkS) (width 0.15))
75+
(fp_line (start 8.636 5.842) (end 9.398 5.842) (layer F.SilkS) (width 0.15))
76+
(fp_text user PCM5102A (at 12.192 9.144 90) (layer F.SilkS)
77+
(effects (font (size 1 0.8) (thickness 0.15)))
78+
)
79+
(fp_text user FLT (at 7.874 3.048) (layer F.SilkS)
80+
(effects (font (size 0.6 0.6) (thickness 0.1)))
81+
)
82+
(fp_text user DEMP (at 10.414 3.048) (layer F.SilkS)
83+
(effects (font (size 0.6 0.6) (thickness 0.1)))
84+
)
85+
(fp_text user XSMT (at 13.208 3.048) (layer F.SilkS)
86+
(effects (font (size 0.6 0.6) (thickness 0.1)))
87+
)
88+
(fp_text user FMT (at 15.748 3.048) (layer F.SilkS)
89+
(effects (font (size 0.6 0.6) (thickness 0.1)))
90+
)
91+
(fp_text user A3V3 (at 18.034 3.048) (layer F.SilkS)
92+
(effects (font (size 0.6 0.6) (thickness 0.1)))
93+
)
94+
(fp_text user G (at 20.828 3.302) (layer F.SilkS)
95+
(effects (font (size 1 1) (thickness 0.15)))
96+
)
97+
(pad 1 thru_hole circle (at 1.524 2.032) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
98+
(pad 2 thru_hole circle (at 1.524 4.572) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
99+
(pad 3 thru_hole circle (at 1.524 7.112) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
100+
(pad 4 thru_hole circle (at 1.524 9.652) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
101+
(pad 5 thru_hole circle (at 1.524 12.192) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
102+
(pad 6 thru_hole circle (at 1.524 14.732) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
103+
(pad 7 thru_hole circle (at 8.001 1.524) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
104+
(pad 8 thru_hole circle (at 10.541 1.524) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
105+
(pad 9 thru_hole circle (at 13.081 1.524) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
106+
(pad 10 thru_hole circle (at 15.621 1.524) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
107+
(pad 11 thru_hole circle (at 18.161 1.524) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
108+
(pad 12 thru_hole circle (at 20.701 1.524) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
109+
(pad 13 thru_hole circle (at 23.241 1.524) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
110+
(pad 14 thru_hole circle (at 25.781 1.524) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
111+
(pad 15 thru_hole circle (at 28.321 1.524) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
112+
)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
(module LCD_0.91_OLED (layer F.Cu) (tedit 61CD6957)
2+
(tags "SSD1306, 128x32, i2c")
3+
(fp_text reference REF** (at 21.59 1.397) (layer F.SilkS)
4+
(effects (font (size 1 1) (thickness 0.15)))
5+
)
6+
(fp_text value LCD_0.91_OLED (at 22.225 3.429) (layer F.Fab)
7+
(effects (font (size 1 1) (thickness 0.15)))
8+
)
9+
(fp_line (start 0 0) (end 38.1 0) (layer F.SilkS) (width 0.15))
10+
(fp_line (start 38.1 0) (end 38.1 12.192) (layer F.SilkS) (width 0.15))
11+
(fp_line (start 38.1 12.192) (end 0 12.192) (layer F.SilkS) (width 0.15))
12+
(fp_line (start 0 12.192) (end 0 0) (layer F.SilkS) (width 0.15))
13+
(fp_line (start 6.096 0.254) (end 37.084 0.254) (layer F.SilkS) (width 0.1))
14+
(fp_line (start 37.084 0.254) (end 37.084 11.938) (layer F.SilkS) (width 0.1))
15+
(fp_line (start 37.084 11.938) (end 6.096 11.938) (layer F.SilkS) (width 0.1))
16+
(fp_line (start 6.096 11.938) (end 6.096 0.254) (layer F.SilkS) (width 0.1))
17+
(fp_text user SDA (at -1.143 2.286) (layer F.SilkS)
18+
(effects (font (size 0.7 0.7) (thickness 0.1)))
19+
)
20+
(fp_text user SCK (at -1.143 4.826) (layer F.SilkS)
21+
(effects (font (size 0.7 0.7) (thickness 0.1)))
22+
)
23+
(fp_text user VCC (at -1.27 7.366) (layer F.SilkS)
24+
(effects (font (size 0.7 0.7) (thickness 0.1)))
25+
)
26+
(fp_text user GND (at -1.143 10.033) (layer F.SilkS)
27+
(effects (font (size 0.7 0.7) (thickness 0.1)))
28+
)
29+
(fp_text user "0.91 OLED SSD1306 i2c 128x32" (at 21.844 10.414) (layer F.SilkS)
30+
(effects (font (size 1 1) (thickness 0.15)))
31+
)
32+
(fp_line (start 0.381 0.889) (end 3.175 0.889) (layer F.CrtYd) (width 0.1))
33+
(fp_line (start 3.175 0.889) (end 3.175 11.176) (layer F.CrtYd) (width 0.1))
34+
(fp_line (start 3.175 11.176) (end 0.381 11.176) (layer F.CrtYd) (width 0.1))
35+
(fp_line (start 0.381 11.176) (end 0.381 0.889) (layer F.CrtYd) (width 0.1))
36+
(pad 1 thru_hole circle (at 1.778 2.286) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
37+
(pad 2 thru_hole circle (at 1.778 4.826) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
38+
(pad 3 thru_hole circle (at 1.778 7.366) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
39+
(pad 4 thru_hole circle (at 1.778 9.906) (size 1.524 1.524) (drill 0.9844) (layers *.Cu *.Mask))
40+
)

0 commit comments

Comments
 (0)