WavePainter

A Draw-Your-Own Wavetable Synthesizer

  • Overview
  • Design
  • Updates

Update 5/9/2018

May 9, 2018 2 responses davjgardner Updates

Today was the first chance I’ve had to work on this project for a while, but I made a fair amount of progress.

Up to this point I had just been experimenting with JACK applications on my desktop computer, but today I installed an OS on my Raspberry Pi and got my development environment set up. After a little bit of configuration, I had a JACK server running and producing sound. To my surprise, MIDI input worked out of the box, and I was able to run my wavetable.c test program. I was also happy to find that input latency is definitely acceptable, and much better than I expected. The MIDI keyboard feels responsive enough to play comfortably, although the Pi sometimes has trouble processing MIDI events fast enough, resulting in events being dropped.

I modified my wavetable.c test program to change its wavetable based on input from standard in. I then wrote sendwaves.c, which allows the user to select one of five waveforms, which it then calculates a table for and writes to standard out. I can then run these programs with ./sendwaves | ./synth, which allows real-time waveform selection for the synth. These programs are in the code repository on Github.

I then switched over to the GUI side, and wrote up a quick Java program to accept wave drawings. It has a canvas which reads mouse input, and a button to write the data to standard out. I piped its output to the synth in the same way as the sendwaves program. This works pretty well – the basic concept is there, but there is still room for improvement in sound quality. I plan to add some smoothing and interpolation to the user input to make more pure waveforms possible.

At this point I have a working prototype of the project running on my desktop computer. My next step will be to set up the Raspberry Pi touchscreen and get the application running there. Finally, I will work to improve sound quality by adding a smoothing function to the input. I could also improve quality by increasing the number of samples and the size of samples – currently each sample is 1 byte, but I could bump this up to 4 bytes without much trouble.

Related

This work is licensed under a Creative Commons Attribution 4.0 International License.

2 thoughts on “Update 5/9/2018”

  1. jessicah7654 says:
    May 10, 2018 at 1:15 AM

    Hi David, is the main goal of your synth to provide the purest sound possible? Or are you trying to achieve a specific style/tone?

    Reply
    1. davjgardner says:
      May 10, 2018 at 10:13 AM

      The goal is to provide freedom for the user to create any sort of sound, including pure sounds. If I have time, I intend to add a “smoothing” slider which will adjust how much the drawing is filtered before sending it to the synth.

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

  • « Update 4/27/2018
  • Update 5/10/2018 – Results »

Recent Posts

  • Update 5/10/2018 – Results
  • Update 5/9/2018
  • Update 4/27/2018

Recent Comments

  • Darryl Haylett on Overview
  • davjgardner on Update 5/9/2018
  • jessicah7654 on Update 5/9/2018
  • davjgardner on Update 4/27/2018
  • davjgardner on Update 4/27/2018

Archives

  • May 2018
  • April 2018

Categories

  • Updates

Meta

  • Register
  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.org
Proudly powered by WordPress
Protected by Akismet • Blog with WordPress