[whatwg] Audio canvas?

Dr. Markus Walther walther at svox.com
Thu Jul 17 02:05:42 PDT 2008

ddailey wrote:
> I recall a little app called soundEdit (I think) that ran in the Mac 
> back in the mid 1980's. I think it was shareware (at least it was 
> ubiquitous).
> The editing primitives were fairly cleanly defined and, had a reasonable 
> metaphoric correspondence to the familiar drawing actions.
> There was a thing where you could grab a few seconds of sound and copy 
> it and paste it; you could drag and drop; you could invert (by just 
> subtracting each of the tones from a ceiling) you could reverse (by 
> inverting the time axis). You could even go in with your mouse and drag 
> formants around. It was pretty cool.
> It would not be a major task for someone to standardize such an 
> interface and I believe any patents would be expired by now.

No need to go to particular _applications_ for inspirations when 
libraries developed with some generality in mind (e.g. 
http://www.speech.kth.se/snack/man/snack2.2/tcl-man.html) can serve as 
inspiration already. A carefully chosen subset of Snack might be a good 

> David
> ----- Original Message ----- From: "Dave Singer" <singer at apple.com>
> To: <whatwg at lists.whatwg.org>
> Sent: Wednesday, July 16, 2008 2:25 PM
> Subject: Re: [whatwg] Audio canvas?
>> At 20:18  +0200 16/07/08, Dr. Markus Walther wrote:
>>> get/setSample(<samplePoint> t, <sampleValue> v, <channel> c).
>>> For the sketched use case - in-browser audio editor -, functions on 
>>> sample regions from {cut/add silence/amplify/fade} would be nice and 
>>> were mentioned as an extended possibility, but that is optional.
>>> I don't understand the reference to MIDI, because my use case has no 
>>> connection to musical notes, it's about arbitrary audio data on which 
>>> MIDI has nothing to say.
>> get/set sample are 'drawing primitives' that are the equivalent of 
>> get/setting a single pixel in images.  Yes, you can draw anything a 
>> pixel at a time, but it's mighty tedious.  You might want to lay down 
>> a tone, or some noise, or shape the sound with an envelope, or do a 
>> whole host of other operations at a higher level than 
>> sample-by-sample, just as canvas supports drawing lines, shapes, and 
>> so on.  That's all I meant by the reference to MIDI.

I see. However, to repeat what I said previously:

audio =/= music.

The direction you're hinting at would truly justify inventing a new 
element, since it sounds like it's specialized to synthesized music. But 
that's a pretty narrow subset of what audio encompasses.

Regarding the tediousness of doing things one sample at a time I agree, 
but maybe it's not as bad as it sounds. It depends on how fast 
JavaScript gets, and Squirrelfish is a very promising step (since the 
developers acknowledge they learnt the lessions from Lua, the next 
acceleration step could be to copy ideas from luajit, the extremely fast 
Lua-to-machine-code JIT compiler). If it gets fast enough, client-side 
libraries could do amazing stuff using sample-at-a-time primitives.

Still, as I suggest above, a few higher-level methods could be useful,

-- Markus

More information about the whatwg mailing list