WavePainter

A Draw-Your-Own Wavetable Synthesizer

  • Overview
  • Design
  • Updates

Update 4/27/2018

April 28, 2018 4 responses davjgardner Updates

Over the last few days I have been experimenting with the tools and platforms I will be using for this project. I do not have much experience with python, so I installed pygame and spent some time learning how to show a window with some simple graphics. While doing this, I realized that writing the GUI application would be easier in Java, a language I am much more familiar with. Therefore, I may decide to write a Java GUI using tools I am more familiar with, rather than learn a new system. Additionally, I have read that the Raspberry Pi touchscreen drivers have in the past not worked well with pygame.

I also spent some time learning my way around the JACK audio system. JACK applications are organized as a set of callbacks, which are pieces of code that are called when certain events occur. The main one of these is called at regular intervals, and its task is to fill a buffer with samples to be played. Other callbacks include one for changes to the sample rate, and one for when the audio server shuts down. I first modified one of the example programs, a MIDI sine wave synthesizer, to be polyphonic, and then further modified it to use a wavetable. Code for these two programs is on Github here.

Related

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

4 thoughts on “Update 4/27/2018”

  1. ogphillips says:
    May 2, 2018 at 11:17 PM

    The JACK audio system seems like it will be perfect for this project! I just have a quick question. Will changing from Python to Java change the user interface as well? I was just wondering if it’d be just as easy for the user to use one as it would the other.

    Reply
    1. davjgardner says:
      May 2, 2018 at 11:32 PM

      At this point I have some general ideas about what the GUI will look like, but I haven’t made a detailed plan. The general functionality will be the same no matter which platform I choose, but the styling will be different. In pygame, if I wanted any traditional GUI elements (buttons, text boxes, etc) I would have to code them myself, whereas in Java there is a built in framework for such things. If I put the time and design effort in I could probably make a better looking custom GUI in python, but I’m also no graphic designer.
      That was a long way of saying that they’d be functionally identical for the user, but would look different.

      Reply
  2. jessicah7654 says:
    May 1, 2018 at 7:53 PM

    Hi David! It seems like there’s a large learning curve in terms of just figuring out what programs to use. To what extent are you using other people’s code versus others’ programs?

    Reply
    1. davjgardner says:
      May 2, 2018 at 11:35 PM

      Whenever I learn a new system I always find it helpful to load up examples that others have written them and modify them to figure out how they work. I expect my final synthesizer application will flow from modifying, expanding, and adding functionality to example code.

      Reply

Leave a Reply Cancel reply

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

  • Update 5/9/2018 »

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