Show HN: Wavepot – Digital audio workstation of the web
wavepot.com
wavepot.com
While I suppose this does allow for all of those things, as much as any programming language with access to an audio API does, this would be better described as a web-based DSP livecoding environment.
Apart from the naming quibbles, it looks excellent! I wonder what's generating the sound? I'm aware of the oscillator/filter primitives in the HTML5 audio API from the minimoog google doodle, but this seems more elaborate than that.
EDIT: for fun times, load "need more 303," scroll down to the bottom, and change some of the numbers around. Setting the slide() call to 1/1024 yields a nice FM-ish sound. You can even overdrive the filter. Reach for the lasers!
That said, it's a really clever idea to have all the source editable, since js is an interpreted language anyway. One can imagine a future where the community not only shares songs and sounds, but the DSP units themselves. Unlike desktop DAWs, which rely on dylibs (dlls) to supply external synths and effects, a js-based DAW can load, re-compile and hotswap units on the fly.
especially annoying when features you like get deprecated (pluggo, ms. pinky) though i understand gen & max4live both kinda serve as pluggo replacements. all in all its just hard for me to pull the trigger on a $250 upgrade for a few extra integration points on a tool that should be mostly open source anyway.
I feel like if something were done to prevent Pd from being wiped off the map we could have had an open source community by now rather than Cycling 74. hm.... the media production world is complicated for open source tho.
But we got another repeat of the scenario: the OSS project was unable to muster decent UI while the commercial variant was able to both fund the staff and draw out the needs from its user community to make continual UI improvements. (Speaking specifically to the vast improvements over time culminating in Max 6.) If I sound a bit testy here, it's because I've seen too many promising OSS projects killed by this same problem: terrible user experience.
> I realize the biggest reason Max is thriving is because of marketing
I strenuously disagree. It's because PD absolutely failed to deliver a sane user experience, period. Sure, marketing is important, but Cycling '74's work is what makes Max at all relevant today. About all that PD ever had going for it versus Max was being open source.
As someone who used Max/FTS back on the ISPW[1], even that old UI was vastly better than PD's. I enthusiastically gave PD a go when it first came out, even going back from time to time to check in on it. Every time I found it nigh unusable due to huge UI issues. Especially for what amounts to a visual programming language, this is the death knell. For comparison, it's not like early ISPW Max didn't have its pain points.
Max users owe Miller Puckette a substantial debt for his contributions to this excellent visual signal/event programming environment, so it's unfortunate that PD was never able to pull it together.
I think when Max 5 introduced "Presentation Mode" I knew it was over, and then Max for Live was the nail in the coffin, but prior to that I'd seen most students using Max because they believed it was more feature-rich even though most of our professors were using Pd to do more complex work than my Max-toting peers. Similar to Matlab/Octave... I've seen a few Octave users outpacing Matlab users simply because they were free to experiment without having the roadblocks of toolkit purchases.
Cycling 74 has done a good job over time for sure I'm just saying that as recently as 5-10 years ago there wasn't such a clear dichotomy, and the release of Max for Live really struck me because it was a proprietary integration, huge departure from pluggo's VST philosophy.
I think I just have to get used to the fact that despite the great work being done on projects like Pd/Jack/Ardour, audio technology is probably drifting further away from OSS than towards it
It's tough, I want to contribute to to some audio projects but most of the ones that are gaining traction seem to be putting up paywalls or are too rooted in platform-specific code. I'm toying with some audio stuff on the JVM, will see how that goes....
"development is split into milestones on which the features are discussed and decided upon in the mailing list with the help of the community.
a funding campaign is then setup for each next milestone which supports development and keeps the project up and alive."
Janky audio is unnacceptable in a way that janky visuals aren't. It totally kills the experience.
Without very strong guarantees about GC latency and thread scheduling that are neither available nor on the horizon for in-browser js, it won't work for anything beyond fun hacks.
https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specifica...
The WebAudio API does provide a ScriptProcessorNode for JS processing, but it appears to suffer from the problems I described. The spec seems to warn against using this for realtime processing, fwiw.
Yup. That is being worked on by W3C and the WebAudio committee as we speak. WebWorker based JS processing is something being considered.
https://github.com/WebAudio/web-audio-api/issues/113
http://lists.w3.org/Archives/Public/public-audio/2013OctDec/...
I am expecting this to be resolved in a few months. (hopefylly?)
If the threading issues are resolved, then real time audio rendering doesn't take that much processing power and can be easily done in JS.
Infact if there is nothing else contending for the EventLoop (like in this example of WavPot) the ScriptProcessorNode is able to meet the real-time guarantees pretty well, while still doing decent processing.
Also going forward, with Technologies like SIMD.js and asm.js more can be done within a single onprocess callback.
The WebWorker proposal is interesting. If the worker has its own heap and realtime scheduling with a correctly configured GC, it would be a big improvement.
Getting the different implementations to work consistently enough will be challenging, though. Meeting realtime deadlines is difficult enough when working in C with a known OS and audio stack.
https://github.com/w3c/web-platform-tests/tree/master/webaud...
You aren't going to digitize 100 MHz of RF spectrum and build an SDR in JavaScript, but for audio rendering work it'd be fine. Cool hack.
That isn't an issue for the demoed app, but it is for the hypothetical longer-term goal under discussion.
REAPER does just this. It has its own audio scripting language, JesuSonic (also abbreviated JS, which can get confusing), which is interpreted. It's not incredibly popular, but people do share code and modules for it. There are some who sell VSTs/AUs/etc (dlls), but give away the same plugin in a JS format in order to support Reaper.
I would call it the audio equivalent of OpenSCAD.
I'm glad you like it. The sound is generated purely by a JavaScript function returning sample values that are then handled by the Web Audio API and buffered. That's how you hear sound.
On edit: It's really easy to remix tracks that way, even small changes to values yield quite different results. It's fun!
i feel like this belongs here: https://www.youtube.com/watch?v=tCRPUv8V22o - not in a DAW kinda sense, though
An oscillator and a filter modulator are pretty much all you need to create this particular app. There's no reverb, and any delay effects are being "hard-coded" with simple degrading velocities. All synthesizers are built from these ultra-simple components, maybe 2 or 3 more and you have everything you need to build a digital synth purely with web technologies.
I'll certainly contribute to this. Will the source be opened up?
Here's a delay filter:
var delay_array = [];
var delay_length = 5;
var delay_feedback = 0.6;
var delay_volume = 0.4;
function delay(x) {
y = 0;
if (delay_array.length < (delay_length * 1000)) {
delay_array.push(x);
} else {
y = delay_array.shift();
delay_array.push(x + (y*delay_feedback));
}
return (x) + ( y * delay_volume );
}
Include this in the DSP return code, ie; return delay(synth);I look forward to showing this to students in the fall.
Vice did an article on the subject a few months back which gives an overview of the scene (from a layman's view) http://www.vice.com/en_uk/read/algorave-is-the-future-of-dan...
- wikipedia
Check out http://algorave.com for more info on the live coding music scene, which has really taken off in the last year.
I can't wait for someone to combine live coding with Swift Playground/Bret Victor 'revealing the system' style interfaces.
THIS!
Let's build it!
You've really got a great product here.
At Bandhub ( http://bandhub.us ) we are looking for ways to integrate programmed music into our web DAW.
If you guys are up for a collaboration or want to discuss ideas, ping me osi (at) getbandhub (dot) com
Also, Find Musicians doesn't seem to be working, at least not in Chrome on osx.
GET http://bandhub.us/discoverUsersList?genres=&instruments=&col... 400 (Bad Request)
re: programming - we are trying to figure out what's the best model. One thing we are trying to avoid is complex timelines to make it easy for the average recreational musician.
The 303 example in the environments in which I learned computer music fundamentals (PD, Max, CSound, Supercollider) would require either much more or less understanding and/or 3rd party implementations of components to generate something similar. Most importantly the sound is really nice.
Btw the categorisation of it being a DAW is dependent on the user perspective, I've created what I would consider to be DAW equivalents in Max/Pure Data, that facilitate audio/midi recording and playback; just because a toolkit doesn't do stuff for you automatically doesn't mean it isn't capable. DAW in my opinion is just a marketing term not a descriptive one.
A modular piece of software like this can achieve pretty much the same as professional DAWs. Consider modules that add UI elements, automations, etc. It won't be long until the abstraction is high enough so everyone just assembles their own custom DAWs on the fly.
They also have a funding campaign (accepting paypal) to finish this project that will include modules like Oscillators, Sequencers and:
Effects: Amp, Chorus, Delay, Dynamics, Eq, Filter, Flanger, Modulation, Phaser, Reverb.
Synths: Ambient, Analog, Bass, Drums, Flute, FM, FX, Modular, Organ, Pads, Percussion, Piano, Samples and Strings.
import DiodeFilter from 'filters';
var filter = new DiodeFilter;Extended the melody & progression a bit. I'm so proud, this is awesome!
Also
yntaxError: Unexpected token * at Function (native) at t (blob:http%3A//wavepot.com/576aa761-8f7c-4918-b4e7-8bdd7c77ff39:2:16401) at Function.<anonymous> (blob:http%3A//wavepot.com/576aa761-8f7c-4918-b4e7-8bdd7c77ff39:2:16779) at Function.i.emit (blob:http%3A//wavepot.com/576aa761-8f7c-4918-b4e7-8bdd7c77ff39:1:2656) at DedicatedWorkerGlobalScope.i.isMaster.self.onmessage (blob:http%3A//wavepot.com/576aa761-8f7c-4918-b4e7-8bdd7c77ff39:2:12723)
https://gist.github.com/druu/044b8103e2a4842828bd
It's the melody of the song 'Popcorn'. While this might not be special, I implemented a first draft of a (going-to-be) multi-track sequencer. </shameless self plug>
Whatcha think?
If only I could export the generated sound!
I fiddled for a couple of minutes without any changes before realizing i had forgotten to initialize a variable. (the x checkmarks don't seem to work for unassignad variables..)
I assume it's mostly the (basic?) physics of sound waves that I'd need to understand?
If so, where can I find the repo?
If you could use any help coding, please let me know.
[edit: using something like coinbase would solve this, but how could you work it out without a 3rd party and any fees?]
I am floored by how well it runs on my Moto G, specially the 303 and the subwah patches.
Great job!
source code here:
For Mint: Firefox 29 - everything works; Chromium 34 - only grey background
For CyanogenMod: Chrome 35 - everything works; Dolphin 10.3.1 - only grey background
Note, this isn't a complaint, it's merely a request to understand why my comment is inappropriate and to understand how I can express my approval of a submission without losing karma.
Anyway, I didn't downvote you btw, just my 2 cents from what I've read in the past.
The best way to express your approval of a submission? Upvote it.
Except with hidden vote scores it doesn't express anything at all (except changing a number on the OP's interface; the OP doesn't even know that you upvoted them).
If you want to express your approval to anyone other than the parent/OP or have anyone know who is expressing approval [that is occasionally relevant] then you have to comment.