DIY Teensy FM synth

Hi,

I recently started working on making my own synth because I can’t afford to buy one but I have already a Teensy 3.2 with its Audio Board.

So I made a simple polyphonic FM synth, that is also standalone, meaning I can connect my Launchpad to it to play notes without a computer in between.

The setup is really simple, I just have a USB Host chip connected to the Teensy, and then I can plug the Launchpad or any Midi instrument to it via USB.

Here is a demo:

For now I don’t have any potentiometer connected to it to adjust parameters while playing so the envelope and the modulator frequency are fixed but I’m planning on doing that.

I open sourced it on my GitHub. It’s at a very early stage but you can already use it or even contribute:

Let me know your thoughts!

32 Likes

This project is very inspiring!! Your design is simple but very precise. I think this is an excellent framework for beginners who are looking to program a simple hardware synth. I am reading through the git and have learned quite a bit!

I started getting into synths through modular. More recently I’ve really come to appreciate hybrid hardware like this, mozzi, axoloti, and norns. It’s so much more accessible in a way.

Do you think this code could run on something like an ESP32?

1 Like

Thanks

Yes if you have some skills you could make your own modular things for cheap. I’m starting with this synth that I will improve and then I’ll make a simple drums synth too. My goal is to be able to play dawless on a budget.

I never tried myself the audio library on another chip, but I asked on the Pjrc forum, apparently Adafruit did a fork of it to use it with their hardware so it might be compatible with other chips:


Really cool project, and is now making me wonder what it would take to get a Grid talking to a Teensy device…

The later Teensys are ARM M4 devices so anything with an ARM M4 chip should be able to run teensy code with just a little effort. Not for a novice, but someone who has worked with at least two different ARM devices with the same core would have the general sense of what’s required to port it. The bulk of the heavy lifting here is done by the audio library so the synth logic, voice allocation and MIDI mapping layer would be instantly portable if the audio library is.

1 Like

Nice project too, just quickly looking at it I noticed it’s using the ubs.h library that apparently is made specifically for the Arduino Due:
https://www.arduino.cc/en/Reference/USBHost

This should be changed if used with a different board like I’m doing with the Teensy+usb host chip.

Kinda similar to Monome this guy is showing how to make a standalone sequencer with the Launchpad:

All the logic for the sequencing is handled by the arduino as the Launchpad is only sending midi notes when pushing the buttons.

I was thinking of doing my own Launchpad sequencer too later…

1 Like

oh you’re right, i forgot teensy can’t use that lib directly.

theres this, maybe similar/same API?

[ed] hm… no, not really the same.
[ed ed] but… not too bad. (Task exists, &c)
[ed ed ed] BUT… sorry i finally realized you said teensy 3.2 and a shield.

i haven’t really looked at this project for 5 years. port for both USBHostShield arduinos, and teensy 3.6+ would be useful. and i think all the FTDI and monome protocol stuff would translate.

maybe there is some newer / better option for usb host middleware across arduino types / shields.

FWIW - i have some code that does monome grid (and varibright) on Teensy.

It’s in the middle of some big refactoring that I want to get back to, but the proof of concept part works well.

This is messy but ¯_(ツ)_/¯

2 Likes

Realizing I may have misunderstood the question…

to HOST a monome grid with a teensy - this is totally doable on Teensy 3.6 without any monkeying around with FTDI or other libraries.

@scanner_darkly and I have this working on a project and we have code that hosts a grid or arc from a Teensy 3.6

1 Like

oh - good to know that things are easier in 2019 than 2014

where might that code be? (not this one, it seems, despite the description https://github.com/okyeron/MonomeHost)

FTDI or other libraries

for clarity: FTDI is the usb->uart chip in older monome grids. these devices definitely require a host-side driver. on linux these are in the kernel. in 2012 i had to roll one for aleph and in 2014 i had to roll one for Due, both modeled on the linux sources. is there an official driver built into teensy libs these days?

Repo is @scanner_darkly’s - not sure it’s public. I’ll see if I can DM you a link.

FTDI stuff is built in on Teensy I think. (forum reference)

1 Like

(Sorry for the deluge of posts)

With Teensy 4, you could do the audio board and USB-host all in one - and not have to rely on a separate USB host chip. There’s a new Audio shield for Teensy 4

1 Like

Yes Teensy 4 is like Teensy 3.6 on the USB Host part so it is included.

Wow the audio board is now updated to work with it! I was waiting for that. I’ll get one soon then!

My solution was an intermediary one where I had a 3.2 with no USB Host and I though maybe it’s more valuable to have a separate USB chip that I can reuse with other micro-controllers later instead of getting a Teensy 3.6 (at the time there was no 4.0 yet). But unfortunately they discontinued that USB chip now… so not a long term solution finally.

For info the USB chip I’m using is this one:
http://www.hobbytronics.co.uk/usb-host-board-v2

1 Like

I added potentiometers to play with the modulator frequency and amplitude and the envelope:

4 Likes

Another spooky demo.

Now I made the buttons of the Launchpad to light up when I play notes, and they stay on as long as the notes are playing to have some feedback.

Still on a branch on GitHub because I’m not yet done with the Launchpad specific code.