[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Public WebGL] Proposal for WebAL



Steve, if you haven't already, you might consider joining the W3C
audio incubator group mailing list for discussing this
(http://lists.w3.org/Archives/Public/public-xg-audio/).  This thread
in particular covers some of the ideas you put forward here:
http://lists.w3.org/Archives/Public/public-xg-audio/2010Dec/0013.html
Joe

On Wed, Jan 12, 2011 at 7:16 AM, Steve Baker <steve@sjbaker.org> wrote:
>
> Awesome stuff!   (Moving this over to the WebAL mailing list)
>
> On 01/11/2011 08:11 PM, Ben Vanik wrote:
>> I was just about to respond with that link :)
>>
>> I thought the same things as you, Steve, so I went about implementing
>> it last month. I mocked up an IDL for the API, did a quick and dirty
>> port of OpenAL-soft to Javascript to do 3D mixing, and also provided
>> some fallbacks to <audio>. Although I haven't done it yet it should be
>> possible to get this implementation running on top of Web Audio API (I
>> really am not a fan of that API for games). This should allow for the
>> OpenAL-like API that's much easier to use in games (as opposed to the
>> scene graph interface of Web Audio) without requiring a lot of browser
>> work.
>>
>> You can check out the readme with samples/etc here:
>> https://github.com/benvanik/WebAL
>>
>> IDL is here:
>> https://github.com/benvanik/WebAL/blob/master/webal.idl
>> I tried to match the OpenGL->WebGL transforms as closely as possible,
>> and I think it ended up pretty good for a first pass.
>>
>> There's also a fun little demo I made that uses it:
>> http://benvanik.github.com/WebAL/demos/smwjs/ (arrows + wsad to move around)
>>
>> My design philosophy with this implementation was to do as much as
>> possible in pure JS. The code is setup to support different underlying
>> devices that fall into two categories: direct sample writers and
>> retained object models. It uses a pure JS 3D software mixer when the
>> Firefox Audio Data API is present or Flash can be used (which has an
>> identical API), and a 2D fallback when only <audio> is available. You
>> can see the device implementations here:
>> https://github.com/benvanik/WebAL/tree/master/src/devices
>>
>> Would love to chat more about this. It's good to see other people
>> interested! If Web Audio API is really the way all the browsers are
>> going (something I think is a bit too high-level and complex, but oh
>> well~), implementing a WebAL-ish API on top of it is not that bad -
>> just unfortunate.
>>
>> --
>> Ben Vanik
>> http://www.noxa.org
>>
>>
>>
>> On Tue, Jan 11, 2011 at 4:52 PM, Mikko Mononen <mikko@tinkercad.com> wrote:
>>
>>> Have you checked out that other WebAL?
>>>
>>> https://github.com/benvanik/WebAL
>>>
>>>
>>> --mikko
>>>
>>>
>>> On Tue, Jan 11, 2011 at 10:12 PM, Steve Baker <steve@sjbaker.org> wrote:
>>>
>>>> On 01/11/2011 12:59 PM, Benoit Jacob wrote:
>>>>
>>>>> ----- Original Message -----
>>>>>
>>>>>
>>>>>> On Tue, Jan 11, 2011 at 10:50 AM, Steve Baker <steve@sjbaker.org>
>>>>>> wrote:
>>>>>>
>>>>>>
>>>>>>> In the course of writing my WebGL game, it became painfully obvious
>>>>>>> that
>>>>>>> the audio capabilities of present browsers is woefully inadequate to
>>>>>>> the
>>>>>>> task of rendering game audio - and I've decided to try to evangalize
>>>>>>> what I think is the clear and obvious solution to the problem. I
>>>>>>> call
>>>>>>> it "WebAL".
>>>>>>>
>>>>>>> This is off-topic for this list - but I'm trying to propose a
>>>>>>> solution
>>>>>>> that closely mirrors WebGL, both in structure and in how it gets
>>>>>>> adopted
>>>>>>> and implemented and I presume that the people who inhabit this list
>>>>>>> will
>>>>>>> either be the right people to talk to - or will know who those
>>>>>>> people are.
>>>>>>>
>>>>>>> I have written a white-paper describing why we need it, what it
>>>>>>> should
>>>>>>> be - and how I think it should happen:
>>>>>>>
>>>>>>>
>>>>>>> http://www.sjbaker.org/wiki/index.php?title=WebAL_-_Interactive_audio_for_browsers
>>>>>>>
>>>>>>> Please SPAM it to anyone who will listen!!
>>>>>>>
>>>>>>> I also created a mailing list to centralize the discussion:
>>>>>>>
>>>>>>>  http://lists.sjbaker.org/listinfo.cgi/webal-sjbaker.org
>>>>>>>
>>>>>>> Thanks in advance
>>>>>>>
>>>>>>>
>>>>>> Please look into the Web Audio incubator group at
>>>>>> http://www.w3.org/2005/Incubator/audio/ and in particular the Web
>>>>>> Audio API specification proposal at
>>>>>> http://chromium.googlecode.com/svn/trunk/samples/audio/specification/specification.html
>>>>>> . This is an API designed by an audio processing expert (Chris Rogers)
>>>>>> which provides low latency audio and extremely powerful capabilities.
>>>>>> The initial implementation in WebKit is nearly complete on all
>>>>>> platforms. I think it would be best to focus efforts on the
>>>>>> development of this API rather than start a new one.
>>>>>>
>>>>>>
>>>>> And also, a different (lower level, I'm told) approach is being implemented in Firefox 4:
>>>>>
>>>>> https://wiki.mozilla.org/Audio_Data_API
>>>>>
>>>>> Benoit
>>>>>
>>>>>
>>>> I'd seen the Audio_Data_API before - I'm not sure what applications it's
>>>> designed to address - but it doesn't cover any of the issues that
>>>> practical game folk are likely to need.  Basically, it lets you read out
>>>> and write back raw audio data and have the <audio> tag system play it
>>>> back.  That's not the problem here - it's that the <audio> playback
>>>> system itself is fundamentally flawed.
>>>>
>>>> The Audio API specification is a new one on me - I searched for such
>>>> things and failed to find them.
>>>>
>>>> However, it suffers from the same problems as previous efforts - it
>>>> re-invents the wheel.  Consequently it's a complete unknown to anyone
>>>> who might be considering switching to Web-based gaming.  The reason
>>>> WebGL is so interesting is precisely that there is absolutely nothing
>>>> new or novel about it.   We have OpenGL-ES 2 - translated to
>>>> JavaScript.   My proposal is to take the nearest thing in the gaming
>>>> world to OpenGL-for-audio (which is OpenAL) and do the exact same
>>>> thing.   Because OpenAL is so widely used (there are a slew of shipping
>>>> games using it) - we know it covers all the bases and is familiar to
>>>> developers.
>>>>
>>>> I need to read the Audio API specification more closely though - despite
>>>> asking around everywhere I could find over the last few months - this is
>>>> the literally the first I've heard of it!
>>>>
>>>> The thing that's compelling about OpenAL is that it's just like OpenGL.
>>>> The API is instantly familiar - if you know OpenGL (or, by extension,
>>>> WebGL) then you know OpenAL (and by extension, the WebAL that I
>>>> propose).   But also, you can position audio sources in 3D space with
>>>> the same 4x4 matrices you use for positioning the corresponding
>>>> graphical object.  You position "listeners" just like you'd position a
>>>> camera - and let the API worry about all the spatialization, doppler,
>>>> range attenuation, etc.
>>>>
>>>> Anyway - this isn't the place to discuss it - and I need to read the
>>>> Audio API spec in detail.
>>>>
>>>>  -- Steve
>>>>
>>>> -----------------------------------------------------------
>>>> You are currently subscribed to public_webgl@khronos.org.
>>>> To unsubscribe, send an email to majordomo@khronos.org with
>>>> the following command in the body of your email:
>>>> unsubscribe public_webgl
>>>> -----------------------------------------------------------
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Mikko Mononen, Software Engineer
>>> http://tinkercad.com - The unprofessional solid CAD
>>>
>>> -----------------------------------------------------------
>>> You are currently subscribed to public_webgl@khronos.org.
>>> To unsubscribe, send an email to majordomo@khronos.org with
>>> the following command in the body of your email:
>>> unsubscribe public_webgl
>>> -----------------------------------------------------------
>>>
>>>
>>>
>
> -----------------------------------------------------------
> You are currently subscribed to public_webgl@khronos.org.
> To unsubscribe, send an email to majordomo@khronos.org with
> the following command in the body of your email:
> unsubscribe public_webgl
> -----------------------------------------------------------
>
>

-----------------------------------------------------------
You are currently subscribed to public_webgl@khronos.org.
To unsubscribe, send an email to majordomo@khronos.org with
the following command in the body of your email:
unsubscribe public_webgl
-----------------------------------------------------------