Skip to the content
PCBKitNew board
2 layers86.4 × 54.6 mmDigitalSynthCape, the printed circuit board in 3D

This project is centered around making a digital synth using a custom designed keyboard cape. The inspiration for this project came from the Stylophone, an analog synth which used a stylus keyboard.

Size
86.4 × 54.6 mm
Copper layers
2
Thickness
1.6 mm
Parts
25
Nets
21
Pads
46
Tracks, vias
84, 11
Pours
68
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
26 Jan 2024
Updated
22 Feb 2024

Overview

DigitalSynthCape is an open-source printed circuit board by manthelt, from the manthelt/ECE434FinalProject repository on GitHub. It is a 2-layer board of 86.4 × 54.6 mm with 25 parts on 21 nets, routed with 84 tracks and 11 vias.

Its parts include 18 resistors and 1 connector. It belongs with the audio and music boards of this library.

README

Readme.md

ECE434 Sound Project

Larissa Krakora, Ash Collins, Logan Manthey

Table of Contents

Executive Summary

PCBRende:r
Project Overview

This project is centered around making a digital synth using a custom designed keyboard cape. The inspiration for this project came from the Stylophone, an analog synth which used a stylus keyboard. Our project currently has capability to play songs, navigate songs, take and play user input, record and play back user input, and has two octaves for that "manual mode". We also have a simple UI via Flask for the controls, and the display of the title of the current song. We wanted to add audio visualisation on an LCD, but we were barely even able to get anything to display on the LCD. We gave that up as we sunk too many hours into it and would rather add new features. Our project has many different capabilities related to sound.

Packaging

  • Most of our product is standard wires, pots, switch buttons, etc. except for our custom "Keyboard Cape"
  • Our cape acts as a voltage divider, allowing us to read in analog values of voltage to differentiate between notes

Hackster IO Link: https://www.hackster.io/larissa3/sound-project-77327a

ELinux Page Link: https://elinux.org/ECE434_Project_-_Sound_Project

Installation Instructions

  1. Clone the repo
  2. Run sudo ./install.sh
  3. Run sudo ./setup.sh
  4. Move .asoundrc to your home directory
  5. Use aplay -l to find out which card your USB Audio device is setup as
  6. Change pcm "hw:0,0" -> pcm "hw:[card #],0" and card 0 -> card [card #] in ~/.asoundrc

User Instructions

  1. Run ./recordServerNew.py
  2. Visit https://localhost:8081

Highlights

  • Play a variety of songs
  • Backward, pause/play, and skip functionalities
  • "Manual mode" that allows the user to play their own sequence of notes
  • Record a sequence of notes and play them back

Video

Here is a video that shows our project in operation.

Sound Project Demo Video

Theory of Operation

  • Input from buttons > navigate through songs > display via Flask
  • Input from cape while in manual mode > play various notes
  • Manual mode is navigated to the same way other songs are > input only taken in during manual mode > other songs do not play during manual mode

Hardware

This section decribes the hardware portion of the project and which parts and designs were used.

BOM
text
- 17 1206 Resistor of Varying Sizes
  -  [Resistor List for Note Values](#resistor-list-for-note-values)
- 1 Potenimeter
- 2 2 Pin Male Connectors
- 1 1 Pin Male Connector 

Note for the connectors I used large ones that I cut down to size

Keyboard Section

This section decribes the keyboard section of the hardware and it's theory of operation

PCBRende:r
Beagle Bone Keyboard Cape Render

In short this keyboard acts as a form of potentiometer where connecting the 1.8 volt line to the different nets allows a different value to be read by the analog input as there is a different resistor connected to each one of the note nets.

Schematic and PCB

The keyboard cape was designed using KiCAD EDA software. KiCAD is an open source easy to use EDA software that allowed us to quickly design and then print out a PCB prototype on campus using the CNC mill. If we were going to redesign this for real manufacture we would add more headers to make it more stable. We would also add a spot for a pull down resistor to the board itself.

PCBRende:r
Beagle Bone Keyboard Cape Schematic View
PCBRende:r
Beagle Bone Keyboard Cape PCB View
PCBRende:r
Beagle Bone Keyboard Cape Inital CNC Print
Resistor List for Note Values

These values were chosen to allow for a somewhat even distrubtion of values which will translate to a even distrubtion of values. We then added a pull down resistor to allow for a even larger distributing of notes.

text
Note  Ohm
0     47000
1     33000
2     22000
3     15000
4     10000
5     6800
6     4700
7     3300
8     2200
9     1500
10    1000
11    680
12    470
13    330
14    220
15    150
16    100
17    0
Pot Section

In addition to the keyboard acting as a potentiometer there is also a normal potentiometer that can act as a volume control or however you would like to program it. That potentiometer is located here.

PCBRende:r
Beagle Bone Keyboard Cape Inital Print

Software

Reading in the values
  • Analog input via /sys/bus/iio
  • Button input via gpio
Creating Sound
  • While in manual mode, user hits the keys with connected wire
  • Software reads in analog voltage input via /sys/bus/iio
  • That analog voltage value corresponds to a frequency that is then played
Storing Recorded Sound
  • User hits keys
  • Notes are read in via /sys/bus/iio
  • Durations are determined based on the time the user started playing the note and when they stopped
Changing Octaves
  • Take in input from potentiometer
  • Use that value as a boolean to determine offset for array index of frequencies
Switching Songs
  • Buttons on Flask navigate to new page to control navigation through songs

Work Breakdown

  • PCB Design and Solder Logan

  • Sound Generation and USB Audio Logan, Ash, Larissa

  • LCD Visualization (not working - dropped) Ash, Larissa

  • Flask Ash, Larissa

  • Documentation Logan, Ash, Larissa

Future Work

Future Additions - More features on the Flask App - More Synth Options and possbile Digital Signal Processing - Possible Second Pot Features - Pitch Bend - Wave Adjustment (Example: Sin Wave to Sawtooth to Square) - Being able to play over background songs and beats - This would let you solo with the keyboard over tunes like free bird - Adding a loop for recording playback would be able to allow for more intense soloing - LCD Screen - We attempted to get the LCD screen to work with the bone but this proved to be very difficult especially with a UI if we had LCD working with it we could make it into a smaller self contained package - Hardware - Adding buttons to the cape - Making the cape more stable on the bone - Printing the PCB at a PCB House

Conclusions

Overall our group thinks our project was a success. Our approach of making something simple and adding features to it proved to be very useful and allowed us to pivot as needed. This also allowed us to always have something to demo at every stage of our project. We also thought the interactive nature of the project made this a really fun project to demo.

Above in future work shows a few different features that we would like to add to the project.

Parts

25
QtyValueFootprintReferences
17RResistor_SMD:R_1206_3216MetricR1, R2, R3, R4, R5, R6, R7, R8, R10, R11, R12, R13, R14, R15, R16, R17 +1
4MountingHole_3.2mm_M3_DIN965MountingHole:MountingHole_3.2mm_M3_DIN965MH1, MH2, MH3, MH4
1
1BeagleBone_Black_HeaderConnector_PinHeader_2.54mm:PinHeader_2x23_P2.54mm_VerticalP9
1COM-09806Project:TRIM_COM-09806R18
1LOGOLOGOG***

Questions

How big is the DigitalSynthCape PCB?

It measures 86.4 × 54.6 mm and has 2 copper layers, 1.6 mm thick.

What parts does the DigitalSynthCape use?

25 parts. 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 DigitalSynthCape KiCad files?

From the manthelt/ECE434FinalProject repository on GitHub, at the commit this page was made from: the board is Hardware/DigitalSynthCape/DigitalSynthCape.kicad_pcb and its schematic Hardware/DigitalSynthCape/DigitalSynthCape.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the DigitalSynthCape design in my own project?

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

Similar boards

  • 2 layers159.5 × 30 mmType f, the printed circuit board in 3D

    Type f

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    25 parts3kApache-2.0
  • 2 layers113.5 × 95.1 mmSweep high, the printed circuit board in 3D

    Sweep high

    davidphilipbarr/Sweep

    Sweep - a small promicro based keyboard inspired by the Ferris.

    25 parts2.1k
  • 2 layers58.4 × 114.3 mmPicoPedal, the printed circuit board in 3D

    PicoPedal

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    25 parts915
  • 2 layers54 × 15 mmXyp gpib, the printed circuit board in 3D

    Xyp gpib

    xyphro/UsbGpib

    Versatile, cheap and portable USB to GPIB converter (USBTMC class based)

    25 parts690MIT
  • 2 layers50 × 76 mmVoron 0, the printed circuit board in 3D

    Voron 0

    dennisss/dacha

    Monorepo for awesome tools/projects/libraries

    25 parts397Apache-2.0
  • 2 layers237.5 × 102.9 mmStorage, the printed circuit board in 3D

    Storage

    jes/scamp-cpu

    A homebrew 16-bit CPU with a homebrew Unix-like-ish operating system.

    25 parts301Unlicense
  • 2 layers43.3 × 21 mmNanoS3 Carrier, the printed circuit board in 3D

    NanoS3 Carrier

    UnexpectedMaker/esp32s3

    Assorted files for my ESP32-S3 development boards

    25 parts296