I started looking into digital audio, as at some point I'll need sound effects and music for my GBA game. I read a bit about sound in Infinite Game Universe: Level Design, Terrain, and Sound, and got more of an introduction to it in Digital Audio with Java. Despite the age of these books, they were a good introduction to digital audio for someone with no prior experience.

In any case, I started experimenting with generating waves, and with additive synthesis. I realized pretty quickly (after blasting terrible sounding noise through my speakers) that some way to help debug the audio I was generating would be useful. So I've started working on a waveform viewer, which I've named WaveScope. At the moment it only works with pure functions, but I'm in the process of adding support for sampled audio as well.

The viewer currently supports zooming horizontally (by time), as well as vertically (by amplitude), and scrolling through the time axis:

Waveform Viewer in Action
Waveform Viewer in Action

It's still pretty rudimentary, but I have plans for a lot of improvements. I'd really like to include time and amplitude markings, and maybe a way to do measurements, so you could e.g. place markers at the peaks to measure the period of a wave. And while I've mostly been experimenting with additive synthesis, I'll eventually want to be able to edit audio in a way similar to Audacity. So perhaps a way to layer (in a non-destructive manner) transformations on top of a wave would be nice.