Posted on Leave a comment

Knobs + Oscillator

So this was done quite a while ago… it’s an Arduino wavetable based oscillator.

In this instance, I have two oscillators running out one PWM channel.

The wavetable is 8-bit with 256 sample points. At the moment I have three waveforms to choose from: sine, triangle, and sawtooth. I’ll be harvesting others to play with. The base Arduino won’t give enough space for what I eventually want to make available.

There are two potentiometers; one controls the base frequency of both oscillators, the other controls the detune amount between them.

I implemented this on an Arduino rather than a Propeller (my normal choice) because I have my Propeller proto-boards wired up for something else at the moment but fully plan to do this on the Prop. Another reason for the Arduino experiment is that I’m messing with analog filters (the subject of a later post) and I found a few sketches to base that work on.

At any rate, this experiment gave me a quick way to play with software anti-aliasing of the 8-bit data along with “click reduction” when changing the wavetables dynamically.

Anyway, here’s a quick video of this thing in action:

No schematic this time because this stuff is uber-simple and is described on hundreds of Arduino sites (i.e. reading potentiometers with the built-in ADC and generating audio with the PWM channel).

Let me know what you think!

Posted on Leave a comment

Shifty LCD

I stayed up a little late last night and added the LCD I mentioned in my last post to my setup.

I left the LEDs in the circuit to help debug the signaling to the panel which was a good thing as when I first powered the circuit, nothing showed up on the LCD. After slowing the shift routines down to a speed I could follow, I watched the “debug LEDs” properly sequencing through the signals to initialize and draw a character and still saw zip on the panel. I scratched my head for a while and reviewed the wiring and finally realized I neglected to connect anything to pin 3 of the panel.

That was a significant omission because pin 3 is used as the supply voltage to drive the LCD, distinct from the logic voltage. Leaving it disconnected results in a blank panel. I added a 10k ohm potentiometer and connected its wiper to pin 3 and one leg to ground. My modest 1st output (a single ASCII “A”) greeted me on the next power-on. Yipee!

Here’s a sketch of the circuit so far:

Since this application only uses 6 pins of the 74HC595, I took out two of the LEDs and swapped two red LEDs with green and yellow ones, to distinguish the LCD ‘E’ and ‘RS’ signals from the data nibble signals (D4-D7). An added benefit is when my wife/kids ask what I’m doing in my office, blinky lights in different colors keep their eyes from glazing over when I start my explanation.

Anyway, as I played around with the LCD code, I got a little carried away with the cursor movement and custom character set functions which you’ll see in the video below (sorry for the crappy quality… I’m still getting familar with YouTube editing and annotations).

Beyond the 74HC595 shift function and the LCD initialization code, I expect the extra routines I wrote for this will come in handy, notably:

  • text string output
  • binary-to-ASCII/decimal output

While I’ve coded stuff like this a million times before as part of my “day jobs”, coding in the Propeller’s “Spin” language is a little different, so these mundane tasks help me get familiar with the environment.

So the next step is to put the “shifty” on a breadboard so I have less of a wiring “rats-nest”. After that, it’s time to add an analog-to-digital converter so I’ll have some control knobs.

See you later!

Posted on Leave a comment


So two weeks ago I showed the sound gizmo I sent my friend. While it’s a neat sound maker, it’s decidedly weak in the user interface department.

There are three items I want to add to make it more musician friendly, namely:

  • A display to show parameters and options
  • Knobs and buttons to adjust parameters
  • A way to input musical notes

Over the next few weeks I’ll put all that together and add new posts when I have something new to show.

Anyway, I’d thought that by now I’d have the completed display up and running but since I was on the West coast for work training, I only got around to wiring up the first part of the display, namely a 74HC595 shift register.

The ‘595 is used to keep as many pins free on my processor as possible. This method only requires 3 pins instead of 6 to drive the display at the expense of the speed I can change the characters on the display. There are countless articles on the web that talk about this but the code I’m using was written by me. Speaking of the display, I’ll eventually wire-up a Hitachi HD44780-compatible LCD but this week, I’ll just showing the data pins on LEDs so I can make sure my code is working properly.

Here’s a rough layout of how I have everything hooked up:

So without further ado, here’s a video of the gizmo flashing the LEDs in patterns so I could be sure how I’m wired up and which direction bits are getting shifted in but it isn’t making any sound this week so don’t turn up your speakers, because this week it’s silent:

Posted on Leave a comment


Last week I mailed a very late birthday present to a friend. It was the first real “sketch” of the noise maker I’m getting the confidence and experience to build. In the process, I got practice soldering, tweaking the filter by looking at the output with an o’scope, reading resistors and the like. Lots of fun!

Anyway, here’s a picture of what he got

So what is this mess anyway? It’s:

  • A Propeller protoboard (the large board everything’s soldered to)
  • A R/C filter for audio output (board on the top)
  • A SDCard interface with C64 chiptunes (board on the right)
  • A pushbutton (sticking out of the top right)

What does it do? I won’t tell you but I will show you via a very short video clip of the prototype:

What’s next? Check back (or subscribe) and I’ll show you.