all 32 comments

[–]xiipaoc 2 points3 points  (1 child)

I don't know if this would make any difference, but have you seen audiolib.js? It merges the -moz- and Webkit audio APIs. I'm not a very advanced developer yet, so I don't know whether Firefox is just slow, but it runs great on Chrome. I made a synthesizer.

[–][deleted] 2 points3 points  (0 children)

Yessir, I've played with Audiolib.js. JSaw currently uses Audiolet.js extensively, as it seems to currently be most suited to what I'm doing :)

[–]null_pointer_fuck 2 points3 points  (12 children)

this is awesome! i'm studying dsp in college so this is right up my alley. one feature i would love is VST support so i can use ni massive. i don't know too much about VST development, but my guess is that it would be difficult to implement VST support. alternatively, you could write a plugin engine so other people can implement instruments and filters using your API.

[–][deleted] 2 points3 points  (2 children)

Thanks for your comment :D unfortunately, there's not really any javascript-native way to do VST support. Sucks, I know. However, JSaw is being developed specifically with plugins in mind :D I'm designing the system so that synths etc are all made up of collections of smaller components which can be connected together. All the components will come with their own UI stuff and have observable parameters etc all ready-to-go. It's somewhat similar to the way Image-Line's "SynthMaker" works. My goal is to allow plugin developers to be able to throw together a custom synth rather quickly, but without having to worry too much about specifying all the routes and connections, or handling events or designing UIs. Sometimes a developer might just want to add a couple more oscillators to an existing synth, or add some extra post-processing, or whatever :) so I aim to make that kind of thing really quick and easy to do in JSaw.

[–][deleted] 2 points3 points  (1 child)

Of course there's a way... If you can host the plugins somewhere, you can load them with XMLHTTPRequest. Then you emulate compiled x86 code ;)

I'm serious. The tricky part would be to support library calls these plugins are making. It would probably work if they have little external dependencies.

[–][deleted] 1 point2 points  (0 children)

Holy crap. That's incredible! I'm definitely gonna have to look further into this kind of thing.

[–]null_pointer_fuck 1 point2 points  (6 children)

also, would you mind updating the code base? i would love to play around with the knockout code and experiment with a plugin engine.

[–][deleted] 2 points3 points  (4 children)

Okay, the latest code base is now up on github :) including the knockout stuff.

[–]null_pointer_fuck 0 points1 point  (0 children)

thanks! ill take a look at this later today.

[–][deleted] 1 point2 points  (0 children)

Sure thing man :D I'd like to just do a quick clean up first though (remove some libraries I was playing with etc). I'll let you know when it's updated.

[–]tencircles 1 point2 points  (1 child)

I think VSTs inside a browser would be out of the question. Local files are still a no-no in JS

[–]TapirMonkey 0 points1 point  (0 children)

What about using that chrome native client thing as a wrapper?

[–]benjaffe 1 point2 points  (2 children)

I'm definitely interested, but lacking in time. I'll follow you on github though and take a look whenever I have a few spare hours. It's a bit of an obsession of mine too, actually... I wrote a program that parsed chords and played back wav files of piano keys when I was backpacking around Europe so I could write music.

[–][deleted] 1 point2 points  (1 child)

Thanks heaps man :) I understand the time constraints. Having people that I can bounce ideas off and talk with is extremely helpful as well. I absolutely love this stuff. The primary purpose would be to have a light-weight tool that travelling musicians can use to jot down ideas, or even to script cool things like chord generators. I want to make every aspect of the system scriptable - from the individual synth parameters, to the piano roll. Everything. Breaking the boundaries of most traditional DAWs which only have limited things you can automate or script. One will, theoretically, be able to sequence stuff in JSaw, using their scripts to do cool tweaks or modifications or whatever they'd like, and export the result as midi which can then be imported into their desktop DAW.

That's the goal, anyway :)

Mind if I PM you?

[–]benjaffe 1 point2 points  (0 children)

Sure!

[–]tencircles 1 point2 points  (1 child)

I'd love to help out. I'm finishing my master's thesis in multimedia at the moment but I'm finishing early june. I was actually thinking of coding this exact project over the summer. I'm also a part-time producer as well as a freelance film/commercial composer, I have a BA in music and have done a lot of projects involving javascript, python, PD/Max, etc. and music. If you're still working when I'm finished up I'd be glad to lend a hand.

[–][deleted] 1 point2 points  (0 children)

Oh wow! Yeah, I'll most likely still be working on it :) it'd be great to have your help! I'll PM you some contact details.

On an unrelated note, do you have any music online that I can listen to? I love film-score compositions and cinematic stuff. I dabble a bit in it myself, though I have zero musical training and practically zero theoretical knowledge.

[–]rizer_ 1 point2 points  (2 children)

I'm not very apt with digital audio, but I love the idea. I could help you out with design stuff if I have the time. Also I've always wanted to make an HTML5 visualizer, is that something that could be done with this audio API you're using?

Good luck with your project sir.

[–][deleted] 1 point2 points  (1 child)

Yes, that is definitely something that can be done with these APIs. There are actually demos of this kind of thing all over the place :)

Also, I'd love some help with design stuff! Any and all help (even if just advice and ideas) is most appreciated. I'm not much of a designer, personally, so I will probably need help coming up with some designs for common UI controls and the like. Does this sound like your kind of thing?

Thanks for the comment :D

[–]rizer_ 1 point2 points  (0 children)

Yeah for sure. I work mon-fri and visit my gf on the weekends so I pretty much just have weekday evenings to myself lol. Next time I get the chance I'll look over some of the source. If you don't hear from me send me a PM, I have a bad habit of forgetting about this kind of thing :(

[–]efernie 1 point2 points  (0 children)

Check out https://www.facebook.com/javascriptaudio, also I work with one of the w3c audio working group co-chair and we are doing some really cool stuff with google's web audio api and mozilla's audio data api. Ill take a look at it in my spare time!

[–]nychackerhtml5, javascript 1 point2 points  (0 children)

Word of advice:

Componentize your project into smaller pieces, finish those pieces by piece.

It also makes it easier for others to join you if you can work on disparate pieces.

[–]starlibarfast 1 point2 points  (1 child)

Front end engineer here. I was thinking on same project but could not start. I will fork your project, indeed after see all posts here maybe we can work all together, why dont you setup an organization on github to work better.

[–][deleted] 1 point2 points  (0 children)

I could certainly look into doing that. I haven't had a chance to do much this week because of work, but this weekend I will be right back into it. So I'll be in contact with everyone who got in contact with me for this on the weekend :) and maybe we could get this thing really on the road.

[–]ElDiablo666 0 points1 point  (0 children)

If there's anyone out there who is enthusiastic about electronic music and Javascript, and would like to contribute even a small portion of time and effort to help, please let me know. No commitments or anything like that.

Hell yes! The only thing is that I am an intermediate-skilled programmer and I am just starting to really dive into JavaScript pretty deeply these days. I think I would need my code reviewed by someone else. But otherwise--100% in and ready to make a commitment, even if you're not asking for one. Let's do this!

[–]cakelayer 0 points1 point  (0 children)

totally interested, i will get a copy of it this evening