- From: Jukka Jylänki <jujjyl@gmail.com>
- Date: Thu, 16 Jan 2014 00:18:50 +0200
- To: kg@luminance.org
- Cc: Raymond Toy <rtoy@google.com>, Chris Wilson <cwilso@google.com>, Marcus Geelnard <mage@opera.com>, Paul Adenot <padenot@mozilla.com>, "public-audio@w3.org" <public-audio@w3.org>
- Message-ID: <CA+6sJ-0+mPggauY-vto4P5U0JDt1DcaqSBe0CCKHZzi=87nkaA@mail.gmail.com>
Ok, I marked this down as https://github.com/WebAudio/web-audio-api/issues/283 . Jukka 2014/1/15 K. Gadd <kg@luminance.org> > > > > On Wed, Jan 15, 2014 at 1:36 PM, Raymond Toy <rtoy@google.com> wrote: > >> >> But you, as the web audio app author, can't control the sample rate of >> the device it is playing on. Even on the same machine, the machine owner >> could have changed the local audio device to be 44.1 kHz today, but >> tomorrow he might change it to 88 kHz. Should your app suddenly sound funny >> the next day? If not doing resampling is important, you'd have to supply >> all of your assets in different sampling rates. (Which might be a good idea >> anyway, if you can afford the storage and bandwidth.) >> > > I'm talking about source rates, not mixing rates. I made this very > explicit in my email. I don't know why you think I was talking about > controlling the mixing rate. > > >> >> It's not just a minor efficiency optimization. Some of the algorithms >> are quite complex, so implementing them in fixed-point would be >> particularly painful. The existence of a biquad filter with, essentially, >> unlimited huge peaking can suddenly cause something that was nice to >> suddenly either clip or roll-around causing terrible glitching. Yes, this >> is solvable, but int16 makes the internal implementation much, much more >> difficult, prone to bugs, and many more round-off effects. >> >> For controlled applications, fixed-point is ok. For something as open as >> WebAudio, floating-point is a natural choice. >> >> I know Chris Rogers wanted to be able to use WebAudio for pro-audio >> applications where (I think) 24-bit or floating-point samples are the norm. >> Forcing int16 internally prevents this completely. >> >> > Why would you implement the filters in fixed-point? Nobody has suggested > this. You'd convert int16 samples up to float32 before mixing them in the > mixer. If the cost of doing the conversion in realtime is too high, you > could maintain a small fixed-size pool of decoded samples (int16->float32, > etc), and when the buffer gets too full you can do your mix in multiple > passes. (I doubt that the cost of some int16->float32 conversions for > samples is really that significant on typical desktop configurations, > especially using SIMD; I can't comment on mobile.) > > Your point about 24-bit samples makes no sense to me. Is anyone talking > about forcing everything to use int16? We're talking about being able to > decode audio into int16 samples (especially if it contained int16 samples > to begin with) and storing them in AudioBuffers as 16-bit samples. This > doesn't mean that the mixer stops using float32 or that we drop support for > float32, I don't know why it would. >
Received on Wednesday, 15 January 2014 22:19:18 UTC