Great project, sounds really good! I´m currently working a teensy synth myself and was wondering if you could give me some info how you made the preset function. Are you able to save/edit the presets, or are they pre-programmed? Are you using the EEPROM or some other method? Any help would be very appreciated. Thanks!
Hi! I'm saving presets as text files to an SD card, using the slot that's built into the audio board. Each preset is saved as a numbered text file, with each line containing the value of that controller, stored as plain text. Relevant code here: github.com/ChrisBall/003_Synth/blob/main/code/003_synth_main/SD.ino It's limited to 128 presets (0-127), but only because I wanted to keep it simple. I've used about 40-50 so far!
I used this as a reference when I was thinking about how to structure my voice & voiceManager classes: www.martin-finke.de/blog/articles/audio-plugins-016-polyphony/ PJRC forums are also invaluable. Other than that, the teensy audio tutorial should be a good first watch! ruclips.net/video/wqt55OAabVs/видео.html
@@TheNormalUniverse the voice stealing I ended up implementing can be summarised as "if no voices are free, use the oldest released voice" - where released means in the R portion of ADSR.
No appreciable latency in person, so it's likely the video is out of sync. That said, how much latency are you talking about? I've never tested how much there is, and there will be some.
Nice project Chris, Can I just ask the reason for a separate controller for the pots and display? Surly the teensy 4 has enough processing power to read the controls and drive a display, or is it just the limited pins on the teensy 4. I have a teensy 3.6 synth using 2x 16 channel analog multiplexers, so 32 controls. Anyway great job sounds awesome....
Hi Brian - no one reason, I was just keen on a controller-agnostic approach, probably because I'm used to working with far less powerful MCUs. I'm pretty sure the teensy 4 could read all 48 and drive the display too. Perhaps I'll link it up sometime.
Hi Joshua - Lots of people have asked this! There are a few reasons, but the main one was a desire to keep the synth part and controller part separate. When I started making this I didn't have access to the control hardware (it wasn't even designed), so the synth was controlled by a computer via MIDI during the design of the audio system. This means the synth can exist in different forms, rather than being tied to a set layout/hardware. If someone can't afford 48 pots, and would rather build the controller with 4 pots that are on 12 "pages" they can, or even just have some simple hardware (one push encoder and one pushbutton) controlling presets that are designed in advance. It should be easily adapted to reading the pots directly, if someone wants to do so.
Looks and sounds amazing. Is the source code published anywhere? I've been playing with a TSynth which is another teensy polysynth, seeing your implementation would be really helpful.
It's not published anywhere - yet. Mostly because it's not perfect, and I'm fairly self conscious about my code. Some weird stuff still happens with the arpeggiator, there's clicking when many parameters change, etc. If you don't mind it being a bit of work to set up, send me a message on github: github.com/ChrisBall One benefit is that it's controller agnostic, so hardware-wise you just need a teensy 4.0+ and audio board to begin using it.
Wow, really impressive, you have pushed really far in the programmation. I am only at the first steps to get midi and produce a basic sound. Well done. How does your tape works, I can't see any modules in the designer to do this effect ? or is it delay ...
This thing sounds great! And you show it off nicely with your playing. Is the code available for anyone interested in learning to build a diy Teensy synth?
Thank you Chris for sharing this! Since I would like to learn how to program a polyphonic synth using the Teensy Audio library, I started by looking into your code to try to understand your approach. However, if I just compile it and upload it to a Teensy with an audio board, I don’t get any sound, while the serial monitor shows that it is receiving midi. Is there anything you’re aware of that could cause it not to produce any output (on the headphone out of the Teensy audio board), out of the box?
Hi Harm! Yep, unfortunately you'll need to send it some MIDI CC messages to get it doing something - the default startup makes no sound (probably something I should fix). From memory you'll just need to set the master volume (CC 44), and you should get a sin-like sound. What are you using to control it? I'd be happy to help you troubleshoot on a call - you're the first person to test this AFAIK.
@@ChrisBallProjects thank you for your swift reply and the hit: it was indeed a matter of increasing CC 44. I have no MIDI controller with 48 knobs to test with, so I quickly rebuilt your front panel in Ctrlr (I could share the panel file if you’d like). Now I have another issue: the effects don’t seem to do anything. I’ve set both SYN FX IN and FX MIX to 127 and tried all the effects, but I’m not hearing any difference. What could be the issue?
@@harmlammers1794 Again, this is another quirk. The two distortion sections don't "pass-through" unless the SHAPE is at 0 and GAIN at 127. This is something I need to work on! Does that help?
For future visitors, all my code, gerbers & SVGs for this project is now online at github.com/ChrisBall/003_Synth
Excellent work Chris, thanks for sharing!
Wow what an impressive demo !
Einfach Cooooool
Omg this is the dream
Great project, sounds really good!
I´m currently working a teensy synth myself and was wondering if you could give me some info how you made the preset function.
Are you able to save/edit the presets, or are they pre-programmed?
Are you using the EEPROM or some other method?
Any help would be very appreciated.
Thanks!
Hi! I'm saving presets as text files to an SD card, using the slot that's built into the audio board. Each preset is saved as a numbered text file, with each line containing the value of that controller, stored as plain text. Relevant code here:
github.com/ChrisBall/003_Synth/blob/main/code/003_synth_main/SD.ino
It's limited to 128 presets (0-127), but only because I wanted to keep it simple. I've used about 40-50 so far!
Sounds awesome! I'm making a teensy synth too. Do you have any learning resources you recommend?
I used this as a reference when I was thinking about how to structure my voice & voiceManager classes: www.martin-finke.de/blog/articles/audio-plugins-016-polyphony/
PJRC forums are also invaluable.
Other than that, the teensy audio tutorial should be a good first watch! ruclips.net/video/wqt55OAabVs/видео.html
@@ChrisBallProjects Awesome! Thanks for the tips. I also am bumping into the complexity that comes with polyphony.
@@TheNormalUniverse the voice stealing I ended up implementing can be summarised as "if no voices are free, use the oldest released voice" - where released means in the R portion of ADSR.
There appears to be a little latency. Is the video just out of sync with the audio or does your synth have noticeable latency?
No appreciable latency in person, so it's likely the video is out of sync. That said, how much latency are you talking about? I've never tested how much there is, and there will be some.
Nice project Chris,
Can I just ask the reason for a separate controller for the pots and display? Surly the teensy 4 has enough processing power to read the controls and drive a display, or is it just the limited pins on the teensy 4. I have a teensy 3.6 synth using 2x 16 channel analog multiplexers, so 32 controls. Anyway great job sounds awesome....
Hi Brian - no one reason, I was just keen on a controller-agnostic approach, probably because I'm used to working with far less powerful MCUs. I'm pretty sure the teensy 4 could read all 48 and drive the display too. Perhaps I'll link it up sometime.
This is amazing! Is there a reason you can’t read the pots from the teensy directly? Why did you need the arduino?
Hi Joshua - Lots of people have asked this!
There are a few reasons, but the main one was a desire to keep the synth part and controller part separate. When I started making this I didn't have access to the control hardware (it wasn't even designed), so the synth was controlled by a computer via MIDI during the design of the audio system. This means the synth can exist in different forms, rather than being tied to a set layout/hardware. If someone can't afford 48 pots, and would rather build the controller with 4 pots that are on 12 "pages" they can, or even just have some simple hardware (one push encoder and one pushbutton) controlling presets that are designed in advance.
It should be easily adapted to reading the pots directly, if someone wants to do so.
Hi Chris, I can't open your .brd or .sch files in KiCad and there is no BOM. Is there another application I should use? Also, is it a 2 layer board?
Yep - those are Eagle files. You should be able to open those in Fusion360 now. It's a 2 layer board.
Are you going to publish code and instrucyions? It is great!!
Code and files yes, instructions no - I don't have time to write them out! github.com/ChrisBall/003_Synth
Looks and sounds amazing. Is the source code published anywhere? I've been playing with a TSynth which is another teensy polysynth, seeing your implementation would be really helpful.
It's not published anywhere - yet. Mostly because it's not perfect, and I'm fairly self conscious about my code. Some weird stuff still happens with the arpeggiator, there's clicking when many parameters change, etc. If you don't mind it being a bit of work to set up, send me a message on github: github.com/ChrisBall
One benefit is that it's controller agnostic, so hardware-wise you just need a teensy 4.0+ and audio board to begin using it.
Wow, really impressive, you have pushed really far in the programmation. I am only at the first steps to get midi and produce a basic sound. Well done. How does your tape works, I can't see any modules in the designer to do this effect ? or is it delay ...
Thanks! I wrote my own digital tape delay for this one. Perhaps I should try to get it added to the audio lib?
@@ChrisBallProjects having this in the audio library would be great, or just publishing the code on github would be great. I would definitely use it!
@@floretan github.com/ChrisBall/003_Synth
Thank you, I look forward to trying out the tape delay!
This thing sounds great! And you show it off nicely with your playing. Is the code available for anyone interested in learning to build a diy Teensy synth?
Code's available, but not very well documented! Link in comments.
Thank you Chris for sharing this! Since I would like to learn how to program a polyphonic synth using the Teensy Audio library, I started by looking into your code to try to understand your approach. However, if I just compile it and upload it to a Teensy with an audio board, I don’t get any sound, while the serial monitor shows that it is receiving midi. Is there anything you’re aware of that could cause it not to produce any output (on the headphone out of the Teensy audio board), out of the box?
Hi Harm! Yep, unfortunately you'll need to send it some MIDI CC messages to get it doing something - the default startup makes no sound (probably something I should fix). From memory you'll just need to set the master volume (CC 44), and you should get a sin-like sound. What are you using to control it?
I'd be happy to help you troubleshoot on a call - you're the first person to test this AFAIK.
@@ChrisBallProjects thank you for your swift reply and the hit: it was indeed a matter of increasing CC 44.
I have no MIDI controller with 48 knobs to test with, so I quickly rebuilt your front panel in Ctrlr (I could share the panel file if you’d like).
Now I have another issue: the effects don’t seem to do anything. I’ve set both SYN FX IN and FX MIX to 127 and tried all the effects, but I’m not hearing any difference. What could be the issue?
@@harmlammers1794 Again, this is another quirk. The two distortion sections don't "pass-through" unless the SHAPE is at 0 and GAIN at 127. This is something I need to work on! Does that help?
@@harmlammers1794 Oh and feel free to send me the ctrlr file! I didn't know about ctrlr, looks really useful.
@@ChrisBallProjects that solved it. Actually, it seems it’s mostly about the GAIN setting.
Great!
Did you use the Teensy Audio Adapted Board?
Yep - Teensy 4.0 version.