Interesting idea and cool presentation, I like the sliders and that I can play around with it.
I will probably use this at work.
edit: This is really good, I just accidentally left it on and had completely forgotten I was listening to the same thing. Very much works as advertised.
Agreed - not only is this cool, but the audio samples are pretty high quality. Great example of HTML5, too. A few years ago, this would have required Flash ;-)
Does it actually generate the sound server-side and send it over the network, or does it generate it client-side? (i.e. does it actually use much bandwidth?)
Right, the EQ controls the volume of each of the 10 (each one corresponds to a slider) sounds. (Every sound has been previously decomposed into its frequency components.) The Web Audio API is used for browsers that have it present, else HTML5 audio elements are used. The slider just adjusts the volume of the sound (exponentially of course!), leading to an equalizer effect with no filtering required. (Garnered from looking at the code.)
Interestingly, this could be done using one file (rather than ten) using a Web Audio API filter node. This would limit the site to only Web Audio API compatible browsers. Unfortunately, at this time, that's only newer versions of Chrome, Safari, and I believe FF nightly (slight API variations). However there is some mobile support through recent Chrome and Safari implementations.
Sure, you could pre-calculate your filter coefficients and use a bandpass for each frequency band then do the math in Javascript however it's slower, and more involved. Also, unless you're going to be using WAVs, there's going to be some overhead for the decoding of the sound. Also, the filter won't be very high order since you're going to be doing at least n*44100 operations per second (at the standard sampling rate). (Web Audio API filter nodes are only 2nd order but you can cascade them.) Do you have examples of the above working in Firefox? I'd be curious to see the implementation.
It's slower, but... does it matter if it's not just "slow"? Slower than "so fast" is still "fast".
> and more involved
That's right.
> Also, unless you're going to be using WAVs, there's going to be some overhead for the decoding of the sound.
If I recall correctly, Firefox's Audio Data API does the decoding for you and provides the final PCM samples even when loading non-WAV formats.
> Also, the filter won't be very high order since you're going to be doing at least n 44100 operations per second
If the effect computation is a problem, you can pre-render it in a buffer.
Anyways, n*44100 operations per second is not that much. You actually operate on buffers, which makes caching useful for the slow part (memory access). Summing, multiplying, etc. is a piece of cake for your CPU in JIT-compiled code.
Check this JSFiddle I threw in a couple minutes: http://jsfiddle.net/9LpKd/2/ (please mind the awful effect and the fact that it's not audio... I'm not very experienced with Audio Data API and that would take me a bit more to fiddle with!)
44000 pixel updates, up to 60 times a second, with pretty expensive operations (sines, cosines and even square roots!), updating DOM values... JavaScript is fast enough for this.
I can see the problem in mobile devices though, but I'm not even sure Firefox provides Audio Data API in mobile devices.
>Do you have examples of the above working in Firefox? I'd be curious to see the implementation.
The only web implementing it that I can remember is http://websdr.ewi.utwente.nl:8901/ (you have to check the HTML5 audio radio button).
Unfortunately the code is minified and it takes a bit to make sense of it after Beautifying.
>I've opened up multiple tabs and superimposed the noises, it downs everything out. Hope you can spare the traffic.
I built a noise generator around the concept of superimposing noises over each other [1]. I've consistently struggled with performance - at the moment it takes far too long to load properly. I'm planning to implement just-in-time loading when I get some free time
Oh this is beautiful. Those textures are better than music at times. Loved playing around with the ocean waves [1], I was able to get close to the sound that used to make me fall asleep as a kid.
Oh, this is wonderful! I love Simplynoise but this is even more fun. I hope they can decrease load times and make this a webapp rather than taking 2 steps to load the various noises.
First of all -- awesome concept and execution, and great sound samples. Well-done.
> Mobile Safari iOS 6 on iPad 2+, iPhone 4GS+
But... not working on my 4S/iOS6. :(
Anyone got it working to play in the background, even when your phone's screen is off? I also wonder about battery life as HTML5 audio, vs if it were an app.
The creators clearly want to support HTML-only, according to the FAQ, but this calls for an app if anything ever did -- you want it to run, providing sound in the background, while you do other stuff (whether on or off your phone).
To reply to you, forgetting that the interface is not really touch friendly,
I was totally able to make it run in the background on a Nexus 4 with Chrome (the Web Audio API works in the background with Chrome),
however I got some clicks (interruptions) in the sound probably due to the bad performance the Web Audio API gets in Android Chrome today.
I wish there was a way to contribute (Github?) to improve this app.
I have been using an iPhone app called Ambiance for a long time, it even allows you to record your own sounds, works in the background, has a sleep and alarm modes etc.
The only down side is it tries to do too much, they have like a sound store and stuff, which is a cool feature but affects the simplicity.
I don't really understand how it runs on iOS devices at all - to the best of my knowledge, it simply isn't possible to control device audio volume from javascript on iOS [1]. Or at least, that seemed to be the consensus last time I attempted to.
You can always reduce the volume in software before sending it to whatever API plays your sounds. This is especially easy if you're synthesizing the sound with the desired output volume known.
It should be noted that this operation (digital gain staging) reduces headroom/resolution, although in practice this doesn't really matter. Especially not with ambient rain sounds.
Agreed. And I would pay quite a bit of money (in the context of what apps cost ... i.e., $10 or so) for an app that did this with this level of quality.
I'm trying to add a slow warp to it, and after some experiment I got something. That's the first time I've used sox to generate audio, didn't even know it could. I'll play with it some more.
play -c2 -n synth whitenoise band -n 100 24 band -n 300 100 gain +20 phaser 0.5 0.3 2 0.8 0.5 -t
There is something like this currently under development. There is a problem though: my noise generators are supposedly active across the whole hearing range, from 20Hz to 20kHz. And birds are only producing frequencies above 1000Hz. So, I need to fill up the bottom sliders with other sounds, or find... really big birds! ;-)
perhaps a combination of birds and ocean waves, or frogs, or yes, big birds :) ... It'll be a little puzzle, but +1 for more nature sounds! .. and perhaps one of my favourites: tibetan gongs!
I tried this before... but it doesn't sound anything like a known animal. But who cares actually, if the noise title is right? ('Imaginary Birds') So, let's try it again ;-)
Pink noise can be found under White Noise (because all myNoise noise generators are spectrally-tunable, there is no reason to have different color noise generators: the white noise generator can be shaped to any imaginable color, and a pink noise preset is already provided for you).
This is really great. I listen to sounds like this alot as I find they help me focus. I've used environmental recordings of rain, storms, and ocean waves for years (decades, actually) and I usually loop them in Banshee while I work. I've seen a few of these noise generators in the past but never really came back to them because they weren't superior to my recordings.
Your generator, however, is exceptional.
One request: when we make a selection, say a preset, would it be possible to have an indicator that shows what we had set? I find myself selecting something, then working a while, then coming back and being a bit forgetful!
Fantastic. I tend to not like rain sound simulators, but the sliders let me pick one that seemed believable and familiar. I loved how the darker end of the spectrum let me simulate a visit to the Oregon coast.
(After which, I wished there was actually a storm right now, until I walked out onto my balcony and realized it was raining.)
Hi Guys! I am the developer of the myNoise website and just want to say that all your comments are a great source of inspiration today: many suggestions for further improvements will be taken into account! Although I did entirely code the website by my own using a simple text editor, I am not a programmer, in the sense that I never learned how to program efficiently and beautifully. Multiplatform issues, and mobile browsers in particular, are driving me crazy ;-) And yes... I feel a bit "naked" now as some of you are digging into my website code with much expertise. Please be indulgent! ;-) Cheers, Stephane
Thanks for doing this, I'm going to use this page a lot, I think. But have you thought about open sourcing some, if not all of the code? With the source code out on for instance github, a lot of people could help you out wherever you feel your own skills come to short.
Let me think about it... Not sure about all the implications of releasing this as open source, in particular the investment in... time. I wish I had 48 hours in a day.
If it were me, I'd not open source this. Common tools that are used to build other things generally are, such as a compiler or VCS, but an actual finished product, not so much. Open sourcing this would be like Github open sourcing github.com, rather than just a handful of common tools they built to create github that might be useful to others.
Open source has a time and a place, but some things, like finished websites, are best left proprietary. There's a lot of thinking that's gone into this site. I think the #1 thing that would happen as a result of open sourcing it is that other people would just take the her work and creating clones, eroding her ability to make money from it (if she so chooses).
Choosing to open source something should be done only with a compelling rationale, and the downsides should always be carefully considered.
As a big proponent of open source, I would agree your statements completely. There is little a community could do with this that can't be done with existing tools already. Furthermore, this succeeds primarily because of the author's specific execution of the idea and the way it is presented. Open source just risks a "too many cooks in the kitchen" scenario.
Furthermore, because of the high quality, someone is extremely likely to turn this into a paid mobile app and make money off of it (irrespective of the license it is released under-- unscrupulous people don't care about pieces of virtual paper).
I used a white noise generator app for a long time with my first child and this is far superior to what I had. I would have gladly paid several dollars for a solid mobile execution of this.
Not true. You might not want to make money yourself but you also might not want other people to rip your work off and profit from it.
People that open source things do so as a gift to the community at large, and sometimes people just don't want to give away their property (intellectual in this case), even if they don't intent to turn a profit. Plus, leading an open source project can be quite stressful and there's also the time cost of actually supporting a community of people, if they gather around a project.
There are tons of downsides to open sourcing something but occasionally there's a significant benefit (or other motive) that drives the decision to open source and outweighs the negatives.
This is truly one of the best noise websites I've come across, especially for cabin noise with that deep rumble that helps me focus. Seriously, thank you for creating this! This has had way more thought put in to it than anything I've come across to date.
Truly impressive and wonderful, thank you. I have one request - please add more thunder! Or the ability to create more rumbling low rolling thunder noises.
The site is fantastic - and the aesthetics of the background pics you chose are very well done.
Amazing work! I'll definitely visit more often, these are great.
Minor quibble: the "Binaural Beat Machine" does not produce binaural beats. It plays two notes at the same time, to both ears, which produces an actual beat in each ear (pull off one headphone - you can still hear it). A nice example of how it should sound: http://en.wikipedia.org/wiki/Binaural_beats
It does combine both, as to work without headphones, but if you wear the headphones, you will have the binaural thing on top of the modulation. Two for the price of one ;-)
Great site, but the generators are pretty CPU intensive. Is it the nature of Web audio API, or just heavy computation in your particular case? kmix is really overloaded in KDE when the generator is running (using PulseAudio).
A "mute all" button. I like having multiple layers of sounds open at once. Sometimes I need to mute them to watch a video or something, and it's a hassle to go through muting each one.
At least for me, the fact that I can't pick out any real words/phrases makes what could be believable background/nice sound feel like it could be from a horror movie.
It is rather spooky at first, but once I got over that its excellent for blocking background office noise.
Now what would amuse me NO END would be if once, (and just once) after a few hours, it was coded to fade out and play a distinct voice along the lines of "You're going to die today". I'd love to do that to someone!
113 comments
[ 2.5 ms ] story [ 179 ms ] threadI will probably use this at work.
edit: This is really good, I just accidentally left it on and had completely forgotten I was listening to the same thing. Very much works as advertised.
I use simplynoise's noise generators to drown out noise at work (oscillating brown noise usually)
But I like having an equalizer.
I've opened up multiple tabs and superimposed the noises, it downs everything out. Hope you can spare the traffic.
Then I'm guessing the EQ controls the volume. So no it doesn't generate / stream anything to you server-side.
Interestingly, this could be done using one file (rather than ten) using a Web Audio API filter node. This would limit the site to only Web Audio API compatible browsers. Unfortunately, at this time, that's only newer versions of Chrome, Safari, and I believe FF nightly (slight API variations). However there is some mobile support through recent Chrome and Safari implementations.
Impulse filters are easy to implement, e.g. an averaging low pass filter (or at least I think so, I'm no DSP expert):
Where "a" is a vector of constant coefficents.You could even use FFT to modulate the bands separately, e.g.:
It's slower, but... does it matter if it's not just "slow"? Slower than "so fast" is still "fast".
> and more involved
That's right.
> Also, unless you're going to be using WAVs, there's going to be some overhead for the decoding of the sound.
If I recall correctly, Firefox's Audio Data API does the decoding for you and provides the final PCM samples even when loading non-WAV formats.
> Also, the filter won't be very high order since you're going to be doing at least n 44100 operations per second
If the effect computation is a problem, you can pre-render it in a buffer.
Anyways, n*44100 operations per second is not that much. You actually operate on buffers, which makes caching useful for the slow part (memory access). Summing, multiplying, etc. is a piece of cake for your CPU in JIT-compiled code.
Check this JSFiddle I threw in a couple minutes: http://jsfiddle.net/9LpKd/2/ (please mind the awful effect and the fact that it's not audio... I'm not very experienced with Audio Data API and that would take me a bit more to fiddle with!)
44000 pixel updates, up to 60 times a second, with pretty expensive operations (sines, cosines and even square roots!), updating DOM values... JavaScript is fast enough for this.
I can see the problem in mobile devices though, but I'm not even sure Firefox provides Audio Data API in mobile devices.
>Do you have examples of the above working in Firefox? I'd be curious to see the implementation.
The only web implementing it that I can remember is http://websdr.ewi.utwente.nl:8901/ (you have to check the HTML5 audio radio button).
Unfortunately the code is minified and it takes a bit to make sense of it after Beautifying.
I built a noise generator around the concept of superimposing noises over each other [1]. I've consistently struggled with performance - at the moment it takes far too long to load properly. I'm planning to implement just-in-time loading when I get some free time
[1] http://asoftmurmur.com
[1] http://mynoise.net/NoiseMachines/oceanNoiseGenerator.php
> Mobile Safari iOS 6 on iPad 2+, iPhone 4GS+
But... not working on my 4S/iOS6. :(
Anyone got it working to play in the background, even when your phone's screen is off? I also wonder about battery life as HTML5 audio, vs if it were an app.
The creators clearly want to support HTML-only, according to the FAQ, but this calls for an app if anything ever did -- you want it to run, providing sound in the background, while you do other stuff (whether on or off your phone).
To reply to you, forgetting that the interface is not really touch friendly, I was totally able to make it run in the background on a Nexus 4 with Chrome (the Web Audio API works in the background with Chrome), however I got some clicks (interruptions) in the sound probably due to the bad performance the Web Audio API gets in Android Chrome today.
I wish there was a way to contribute (Github?) to improve this app.
The only down side is it tries to do too much, they have like a sound store and stuff, which is a cool feature but affects the simplicity.
http://ambianceapp.com/
[1] https://developer.apple.com/library/safari/documentation/Aud... - "On iOS devices, the audio level is always under the user’s physical control. The volume property is not settable in JavaScript."
https://chromadoze.googlecode.com/
http://www.reddit.com/r/startrek/comments/1nwzd6/ambient_war...
> play -n -c1 synth whitenoise band -n 100 20 band -n 50 20 gain +25 fade h 1 864000 1
I used this as a background noise muting sound when I was a kid.
I'm trying to add a slow warp to it, and after some experiment I got something. That's the first time I've used sox to generate audio, didn't even know it could. I'll play with it some more.
play -c2 -n synth whitenoise band -n 100 24 band -n 300 100 gain +20 phaser 0.5 0.3 2 0.8 0.5 -t
For example for mandolin layout:
4 (G):
3 (D): 2 (A): 1 (E):You could stream example outputs 24/7 as net radio channels so they are also available on other devices / STBs (Roku) / Consoles / Smart TVs etc..
I didn't notice it at first either. May be its explanation could be more visible, or it could be made more obvious...
Everything feels better when listening to the Dawn Chorus.
(And yes, I know Pterodactyls aren't actually birds.)
Your generator, however, is exceptional.
One request: when we make a selection, say a preset, would it be possible to have an indicator that shows what we had set? I find myself selecting something, then working a while, then coming back and being a bit forgetful!
(After which, I wished there was actually a storm right now, until I walked out onto my balcony and realized it was raining.)
"Too much internet for me" as they say.
Open source has a time and a place, but some things, like finished websites, are best left proprietary. There's a lot of thinking that's gone into this site. I think the #1 thing that would happen as a result of open sourcing it is that other people would just take the her work and creating clones, eroding her ability to make money from it (if she so chooses).
Choosing to open source something should be done only with a compelling rationale, and the downsides should always be carefully considered.
Furthermore, because of the high quality, someone is extremely likely to turn this into a paid mobile app and make money off of it (irrespective of the license it is released under-- unscrupulous people don't care about pieces of virtual paper).
I used a white noise generator app for a long time with my first child and this is far superior to what I had. I would have gladly paid several dollars for a solid mobile execution of this.
People that open source things do so as a gift to the community at large, and sometimes people just don't want to give away their property (intellectual in this case), even if they don't intent to turn a profit. Plus, leading an open source project can be quite stressful and there's also the time cost of actually supporting a community of people, if they gather around a project.
There are tons of downsides to open sourcing something but occasionally there's a significant benefit (or other motive) that drives the decision to open source and outweighs the negatives.
Thanks for making this!
The site is fantastic - and the aesthetics of the background pics you chose are very well done.
Minor quibble: the "Binaural Beat Machine" does not produce binaural beats. It plays two notes at the same time, to both ears, which produces an actual beat in each ear (pull off one headphone - you can still hear it). A nice example of how it should sound: http://en.wikipedia.org/wiki/Binaural_beats
A "mute all" button. I like having multiple layers of sounds open at once. Sometimes I need to mute them to watch a video or something, and it's a hassle to go through muting each one.
Use the geotag browser and listen to the wilderness of your choice! http://freesound.org/browse/geotags/
At least for me, the fact that I can't pick out any real words/phrases makes what could be believable background/nice sound feel like it could be from a horror movie.
Now what would amuse me NO END would be if once, (and just once) after a few hours, it was coded to fade out and play a distinct voice along the lines of "You're going to die today". I'd love to do that to someone!