Show HN: Ambiphone, no-nonsense ambient music and white noise

ambiph.one

357 points by matteason 2 years ago

I built this free, no-nonsense white noise app. I know there are plenty of them out there already, but I wanted to make something beautiful and easy-to-use, without logins or ads or in-app purchases or any of the other stuff a lot of them have.

I appeared on The Economist's The Intelligence podcast [0] this week talking about Ambiphone and another ambient music project, Ambient ScotRail Beats [1] - I'm on at about 17:30

There's a big selection of music and sounds already but I'm always adding more - if there's anything you'd like to see added, let me know!

[0] https://www.economist.com/podcasts/2024/01/01/why-2024-could...

[1] https://matteason.co.uk/scotbeats

catapart 2 years ago

Fantastic! The design is just great; so simple and no-nonsense.

Honestly, I don't really use white-noise generators so I didn't plan on using it, myself, but after realizing it allows layering the sounds, I've built a really nice little soundscape and find myself missing a function that would allow me to transfer that design (selected sounds and volumes) to another instance of the app.

Totally not necessary, of course! Easy enough to re-configure. Just something I thought I might use, in case you were interested.

  • matteason 2 years ago

    Thanks for the great feedback!

    I'm building the ability to save mixes at the moment actually - good point about being over to move them over to a new device. At the moment I'm just storing saved mixes in localstorage but people will definitely want the ability to sync at some point. I've been trying to avoid having an account system in the interests of keeping things simple but I might have to bite the bullet or come up with another clever way to keep things in sync

    • hunter2_ 2 years ago

      You could store all state in the URL fragment. Maybe each key is a sound and each value is the volume, like /#whale=5&fire=8 or whatever. Call replaceState (better than pushState to avoid polluting the back button history with every little tweak) whenever the user changes something. On page load, read from the URL fragment using window.location.hash and then sharing is just a matter of copying the URL, which could be done entirely in browser chrome, and/or via a "share" button you provide.

      These might help:

      https://www.jvt.me/posts/2019/08/01/node-parse-url-fragment/

      https://stackoverflow.com/a/66416539

      • catapart 2 years ago

        Great recommendation for such simple state! The portability of that is just perfect!

      • matteason 2 years ago

        This is exactly what I do on https://www.matteason.co.uk/scotbeats/ actually - any settings change is reflected in the URL and read back on load. When I implement sharing of individual mixes it'll probably look a lot like this

    • catapart 2 years ago

      I feel your pain. I'm building my own local-first, no-nonsense app and need to solve the same problem. I've got proof of concepts for both a no-account server syncing scheme (app generates key, you manually enter that key in whichever instance you want to share the data with) and a web-rtc based p2p sync.

      But I will say that I have a need to sync data, which is why I'm putting effort into getting that syncing working (as well as compressed and encrypted). I really doubt you would need something robust for this type of thing. I'd, personally, be perfectly happy to get a json "export" of your local storage values that I could just "import" into a new instance of the app. I'll email it to myself. No need to complicate it with automation and all of the baggage that comes along with accounts.

      If nothing else, a manual import/export is a fully-featured first implementation that can be iterated into something more robust.

      • matteason 2 years ago

        This is a good point. I like the safety of being able to have my own local copy of my data so json export/import would be a good first step

    • jamesbooker83 2 years ago

      You could generate some sort of hash of the selected options, encode it with something that’s short and human readable and then share that on the screen?

      Something easy for a human to transfer like honey-chair-balcony or something. Store the settings in the backend against this identifier and then you can retrieve it later? So you still need a backend but no need for accounts

charles_f 2 years ago

I love it!

I hate that most of these apps are subscription based for no good reason. This is so clean and nice...

One thing that would be awesome would be an option to preload and cache the noises. I regularly use white noise machines in offline situations (planes, remote camp ground), offline mode would make it the ultimate machine!

  • matteason 2 years ago

    Great suggestion. I'm testing a PWA version at the moment (https://test.ambiph.one) and PWAs do allow offline caching of resources but I'm not sure if I'll bump up against any cache size limits. I seem to remember reading that Safari is particularly stingy unfortunately.

    • charles_f 2 years ago

      Awesome! Maybe a toggle to select those you want to preload?

      • matteason 2 years ago

        Yeah, once I've implemented saved mixes prioritising those sounds would be good too

    • iyifr 2 years ago

      This would be so sick!

  • jen729w 2 years ago

    > I hate that most of these apps are subscription based for no good reason.

    The developer earning a living?

    • corytheboyd 2 years ago

      If there are continued costs associated with running the service, sure, I’ll pay a subscription if it’s good enough. A subscription for static content is a complete and total grift. Such content should be a one-time payment, which I will happily pay if it’s good enough

      • jen729w 2 years ago

        > A subscription for static content is a complete and total grift.

        You're here so I'll charitably assume you've managed a web server ever.

        There is no such thing as 'static'.

        • atoav 2 years ago

          Yes there is. And I am the admin of multiple webservers. What you are right about is that the content being static does not mean the work load is zero

        • charles_f 2 years ago

          If you're building a mobile app with a few noises, then it's static. You might get updates to the OS API once in a while, but there's no ongoing work. I'm fine giving you a fixed fee, as we've always done until everybody became crazy about subscriptions.

      • matteason 2 years ago

        I have considered adding a subscription tier called Ambiphone Minus which gets you absolutely nothing extra and may even take features away

        • charles_f 2 years ago

          I think I would do a donation if I use it

    • AlexeyBelov 2 years ago

      I have side projects as well but I'm pretty sure most developers have a day job. I don't earn anything from my side projects and don't want to. I'm afraid money would "change the equation" and might damage the user experience and awaken the low-key greed in me.

Modified3019 2 years ago

Neat.

If you are looking for additional things to add, those with tinnitus are likely to have suggestions.

I had a scare with tinnitus several weeks ago, where it suddenly became very apparent for a few days before subsiding to a point where I don’t notice it unless I specifically listen for it. This had me desperately searching for noise generators so I could get to sleep.

“Grey” and “pink” noise, and some kinds of cricket noise seemed to be most suitable for masking my type (which is very similar to the high pitch sound an old analog tv makes when it’s on). Heavy rain is also good, but it’s hard to find something that is suitable because most have some additional water splashing and gurgling, which triggers my misophonia.

  • matteason 2 years ago

    I have actually had some lovely feedback from people who have said it's helped with their tinnitus (amongst them, unexpectedly, X-Press 2 of 90s dance music fame, as well as lots of other DJs)

    It's definitely going to vary from person to person so if anyone else has any suggestions of the types of noise that might help them I'm all ears. I'm also thinking of adding more controls to individual sounds so you might be able to control, for example, the exact pitch of the 'bass rumble' sound, which may help people zero in on the frequency that helps mask their tinnitus

nonrandomstring 2 years ago

Seems the title is a little modest.

There is a white noise generator, which "cat /dev/urandom | /dev/audio" or a couple of lines of C code will accomplish. With just a few controls you can tailor the spectrum easily.

Then there is an "ambient music generator" which you can knock together in a few hours with Csound, Supercollider, Pd, Chuck/Faust and the like.

Then there's an "ambient music application" which in addition to inbuilt generators works with with online libraries of generators, seeds, patterns, sample loops, and a package/element manager for getting and adding "songs". Last time I built one of those it was a few weeks of effort.

Then there's getting all that to run on smartphone, on multiple platforms, getting around all the quirks, permissions and general madness that is phone dev ecosystem.

Well done on that last point. Seems the last of these is what the author has created and I kinda think it deserves a better name than "white noise generator".

I didn't realise there is still quite a culture of "noise generators" for people wanting to sleep, read or meditate.

  • matteason 2 years ago

    That's really kind, thank you. It's definitely been a slog getting it working consistently across every browser/device combo so I'm glad that effort's paid off.

    On the music point - at the moment it's just using looped versions of some (great) free tracks I've found, but I'm experimenting with generative music at the moment, including using environmental stimuli (mic, light level, accelerometer etc) to trigger changes in the music and bring in live samples from your surroundings. Early days but it's been fun to experiment with.

    • nonrandomstring 2 years ago

      You're definitely doing the fun stuff, good luck with it.

  • gardenhedge 2 years ago

    What phone dev ecosystem are you talking about?

  • aitchnyu 2 years ago

    Reminds me of the good ol days we could pipe /dev/mem to /dev/dsp for our white noise needs. When I investigated inconsistent sounds by piping to terminal, I saw plain text at times.

Teleoflexuous 2 years ago

I've been working on white noise app for a bit, but with a slightly different focus. While it's maintaining the same core points (limited bullshit, hopefully clear interface, sound staying on with phone screen being off) it addresses problem I constantly found myself having with every app: if I want to switch anything, I have to go back to the webpage/app and there goes some of my focus. Link: https://stimulantnoi.se/

So I made an app focused (hehe.) on ease of switching between noise intensity. There's a long explanation why it's important if you want one (https://incentiveassemblage.substack.com/p/why-is-nobody-ser...), but if you're the kind of nerd who knows about 'flow state' and 'Yerkes-Dodson law', you pretty much got everything covered. The core point is: if intensity of your main activity is changing, your background noise should too, so that you maintain the same total level of arousal. Most likely double so for ADD people.

My current solution is to use media buttons (forward/backward) to control intensity. It took much more work than you'd expect to get media interface to do this without breaking currently playing sounds. In general anything that isn't 'Play this sound' works much worse than one would anticipate with how prevalent media is on the internet - I see ambiphone does the same thing with playing sounds separately, but you saved yourself from managing media interface, so I can't quite tell how much pain exactly you have experienced with this.

  • matteason 2 years ago

    That's really interesting, I'll check yours out.

    Yeah it has been painful. It took a lot of trial and error to get it working consistently across browsers, from absolute basics like getting gapless looping audio working consistently across browsers to maintaining playback while the screen's off to iOS treating background audio differently in PWAs vs Safari. I've managed to get it in a fairly hack-free state now but I am definitely worried about browsers shifting underneath me and breaking things in the future. Best of luck with your app too!

idk1 2 years ago

This is great! I've bookmarked it on my phone.

I'm really curious where do you get the base sounds from? For example where are the coffee shop or different rain sounds from.

The one that I'd love to know about is the music section, I listen to a lot of the ambiant stuff on apple music and spotify, where do you get your ambiant track from? I always have to search "spa music" and see what I like from the results.

Acutally one last one, how on earth did you get a shipping forcast? Haha. Is that one track or like a chain of random ones?

Thanks again! I'm going to use this a lot.

  • matteason 2 years ago

    Thanks! There's a credits link in the footer which lists out all the authors of the sounds (mostly from freesound.org and the Free Music Archive under CC-BY or CC0 licenses). For the music I dig through stuff tagged ambient. I'd like to expand the music selection a lot more, and maybe have something radio-y too

    The binaural beats I made for someone who asked for them in these comments and the shipping forecast is one track of me reading a made-up (but structurally accurate, I think) forecast in my best Radio 4 voice :)

    • idk1 2 years ago

      O cool. And wow! That Radio 4 voice one is so good I thought it was real. Really great job on this mate, I love it.

ahmedfromtunis 2 years ago

I have been using Atmosphere for years now.

Its main advantage is that it's an app (at least on Android) and that it works perfectly even when offline.

It has a wide variety of sounds to mix and match, as well as an option to save favorite combinations for quick access.

amar0c 2 years ago

Found similar thing other day [0] but thing is.. If this is not an App it's not usable. People tend to listen this while resting (in bed for example) so makes no sense have this in browser. For example [0] stops playing when screen is off/locked

[0] https://moodist.app

  • amar0c 2 years ago

    OK to reply to myself, after testing it, this one does work while phone screen is off so this is usable. Thanks

    • matteason 2 years ago

      Yeah, it's actually surprisingly tricky to get sound to persist with the screen off, especially on iOS, but I managed it in the end.

      I'm testing a PWA version at the moment too so it'll be installable to your home screen - the test version at https://test.ambiph.one is PWA-enabled if anyone would like to try it out

      • amar0c 2 years ago

        Yeah, this is even better. Maybe add 'reset' button that will reset all sounds to "not selected".

fowl2 2 years ago

Would be really nice if there was some sort of intermediate state / loading indicator, as there a bit of a delay when clicking each option and it's a little unsettling trying to work out what's not working.

  • matteason 2 years ago

    There is but it only shows after about a second so that it doesn't flash up unnecessarily if the sound loads quickly

fallinditch 2 years ago

This is great, nicely done. I like the inclusion of the shipping forecast, it would awesome to include forecasts read by Kathy Clugston and Zeb Soanes. IMO these 2 presenters elevated the shipping forecast to an art form, their enunciation is beautiful. For examples:

Kathy Clugston: https://youtu.be/PJQJ61abfR0

Zeb Soanes: https://youtu.be/_qt6pECdxg8

cubefox 2 years ago

This is great! (One thing I noticed is that at the default volume, the "heavy rain" is much louder than the "thunder". It would arguably be more realistic if they were similar in volume.)

  • matteason 2 years ago

    Good point, I'll get this cleaned up

themanmaran 2 years ago

I turned them all on at once and had a slightly out of body experience.

  • matteason 2 years ago

    My 10 year old daughter did this when I asked her to test it, it's surprisingly not as awful as I thought it would be

  • Minor49er 2 years ago

    I turned several on at once, turned them off, and noticed that one of the Radio sounds will now play in addition to anything else that is currently playing

DreamGen 2 years ago

Very clean! By the way, I find the volume sliders a bit tricky to use, as it's way too easy to accidentally toggle the sound instead of just moving the slider.

  • matteason 2 years ago

    Oh this is great feedback, thanks. I'll look at putting a deadzone around the volume slider so it's harder to mix them up

abroadwin 2 years ago

The ticking clock being an actual clock is a nice touch.

  • matteason 2 years ago

    Thanks, you're the first to spot that!

matteason 2 years ago

One thing I forgot to mention - I'm going to start sending out email updates soon so if anyone would like to keep up to date on new features and sounds please fill in this form: https://forms.gle/D1BxTx21QUHdpBp17 (put any old nonsense in the feedback field if you don't have any feedback)

whycome 2 years ago

Wow this is beautifully done for mobile. Gorgeous design/brand. Brilliantly simple UX. Well done. Best site I've seen all year.

  • matteason 2 years ago

    Thank you! I'm glad you like the design, I wasn't sure how it would go down

spacec0wb0y 2 years ago

Love this, really well designed. I like how you can combine sounds and customise volumes. You should add a manifest.json and make it a PWA so people can add to their homescreen with a customised app icon. Ideal for an app like this i’d say.

I have it saved and will use it again.

Also… whatever way I’ve configured it, it sounds like a boards of Canada track :)

  • matteason 2 years ago

    This is actually in testing at the moment! I'd love to hear any feedback you have if you fancy testing it out, it's installable from https://test.ambiph.one

    • spacec0wb0y 2 years ago

      Nice, yep it’s working well now for me on iOS, i added it via chrome, can see the new icon and it’s searchable among my apps.

scns 2 years ago

If you want to block out distractions, without damaging your ability to perceive high frequencies, use brown noise.

rrr_oh_man 2 years ago

Wow, amazing! I absolutely LOVE the gamma waves. Best I've heard, ever. Immediate relaxation. Thank you for all the hard work!

Support this guy, people: https://ko-fi.com/matteason

  • matteason 2 years ago

    Thank you! And in case anyone is suspicious I promise this isn't my alt :)

    Glad the gamma worked for you. I'd never really used binaural beats before but there seem to be a lot of things claiming to be binaural beats (especially on YouTube) that are actually just relaxing music? So I made them from scratch to make sure they're accurate

    • rrr_oh_man 2 years ago

      That’s exactly why I like your implementation of binaurals so much: no nonsense

wdfx 2 years ago

This is very nicely presented. I wasn't expecting to activate multiple sounds and mix them to my liking.

Currently listening to Strong Wind 5% + Fire 10% + PCIII 8% + Wind Chimes 1% + Heartbeat 1% + Clock Ticking 5% + Printer 2% + Morse Code 0.5% + Numbers Station 5%

  • wdfx 2 years ago

    And now for a feature request: LFO control the mix.

    I'm starting to find that my mix is noticeably repetitive after a few minutes. I would like the app to automatically bring in and out other selected sounds over a period of time to reduce the repetition.

    However, I know this flies in the face of simplicity, I don't know how you'd go about adding that in a way that's easy to use? Perhaps you add some "timers" and link them to sounds, such that each "timer" fades in/out over some preset periods (1/5/10/15 minutes ?)

    • matteason 2 years ago

      Good suggestion. It's on the plan to add more control over individual channels (things like positioning in 3D space, high-pass/low-pass, reverb etc) so a 'drift' mode would fit nicely in there

chopete3 2 years ago

Beautiful interface.

I played Kirk Osamayo- Realization to test it and it put me into a 5 minutes of refreshing nap.

  • matteason 2 years ago

    You're welcome or I'm sorry, depending on where you are

halfdaft 2 years ago

This is the best version of this kind of thing, thanks! I like how a sound fades in over a second or two when you enable it, it might be nice if it also faded out when you disable it. Especially for when you're sound 'DJing' to find the right mix.

  • matteason 2 years ago

    Thank you! I had wanted to do that but it's marginally trickier than fading in - I agree it would be a much nicer experience than a harsh cut-off though, I'll look into it

    • halfdaft 2 years ago

      I had guessed it might be something like this, and that of course you'd have wanted this! Will definitely use this lots, thanks again

NickC25 2 years ago

Cool! I put the ScotRail Beats on for a good 30 minutes, no complaints here. Great job.

yodon 2 years ago

Nice! Any chance of adding binaural beats? (I'm pretty sure some other "binaural" apps I've tried are actually playing both tones into both ears, which isn't actually what binaural is about)

  • matteason 2 years ago

    I'm adding some now, just for you. Give me an hour or two. (They'll be properly made, pure tones hard panned left and right)

  • matteason 2 years ago

    OK, they're there. There's a new 'Binaural beats' section near the bottom.

    • yodon 2 years ago

      Nice, with icons, and everything!

      And they're definitely binaural, because the beats go away when just listening with one ear at a time (unlike some other supposedly binaural apps)

      • matteason 2 years ago

        Yep - all generated manually in Adobe Audition just now so they're properly done

poulpy123 2 years ago

It's very nice. I'm surprised at the inclusion of some of sounds that I consider irritating though. It never occurred to me that some people could find them relaxing or helping to improve concentration

t09i209ba893 2 years ago

This is quite cool, would you be open to making the source available? I'm afraid of such things disappearing in future years/decades and always prefer to be able to host a private mirror.

zdwolfe 2 years ago

This is perfect. I've tried many noise apps in the past and I'll be using this for a long time I'm sure.

Feature request: Deep-links so I can share or bookmark a 'preset'.

  • matteason 2 years ago

    Coming very soon alongside saved mixes!

L_226 2 years ago

Nice, I actually heard you speak about it on the podcast last weekend and have been using it the past few days! Happy to see you've added binaural beats :)

MollyRealized 2 years ago

> I wanted to make something beautiful and easy-to-use, without logins or ads or in-app purchases or any of the other stuff a lot of them have.

mynoise.net

busfahrer 2 years ago

Despite the unappealing name, I've found brown noise the best noise to study with.

Also, didn't expect to see number stations pop up in there, nice surprise.

nullandvoid 2 years ago

Great collection of sounds for a release!

Couple of suggestions I'd need before using properly:

- Reset button

- Save to URL so I can quickly reload with same presets

  • matteason 2 years ago

    Thanks! Both in the works now and nearly ready to go

KenArrari 2 years ago

Thanks I've wanted something like this for a long time.

No idea why all of them are subscriptions or have tons of ads and such.

artagnon 2 years ago

Very slick interface with a nice selection of sounds! I would definitely use this if only it could connect to my Sonos.

  • matteason 2 years ago

    I'll look into the Sonos API. The problem I've found with other casting/streaming APIs (Google Cast in particular) is that it expects a single URL to stream from, whereas Ambiphone is just loading individual sound files and playing them simultaneously on your device. It should work fine over Bluetooth but I appreciate that's not the best experience with Sonos and other smart speakers

    • artagnon 2 years ago

      Oh no! I think we’re out of luck if my reading of [1] is right. Sonos API only supports streaming from a single URL.

      [1]: https://docs.sonos.com/docs/streaming-basics

      • matteason 2 years ago

        It's not out of the question at all, I just need to figure out how to combine the sounds server-side and stream them out. On the plus side it should then be pretty simple to make work across different smart speakers, I'm just not sure how complex/expensive it would be to get set up

jimbobimbo 2 years ago

This is really good! Thank you for sharing!

bravura 2 years ago

If you have police scanner audio, then you should definitely include archival NASA radio recordings as another option.

  • matteason 2 years ago

    On it! The Apollo 11 audio is all on archive.org [0] so I'll get some samples from that added

    https://archive.org/details/Apollo11Audio

    • tgv 2 years ago

      There are also air traffic recordings. Those are very lengthy streams.

      Nice work, BTW.

      • matteason 2 years ago

        Offhand do you know what the copyright status of ATC recordings is? The Apollo recordings are public domain because they're US government works

        • SushiHippie 2 years ago

          https://www.liveatc.net/legal/

          (liveatc.net seems to be the most well-known website for live atc audio)

          It sounds like they just don't want you to create an app for livestreaming contents of liveatc.net and that they allegedly own all rights to the content.

          Maybe you could contact them, and ask if you could use some recordings.

Nux 2 years ago

I play a very lengthy white noise mp3 in VLC for my (baby) needs. Just works in all situations.

sidkris 2 years ago

Really good. Love the clean design. Would be nice if you upgrade it to a PWA

maxiwer 2 years ago

That's the best app on terms of combining ambient sounds! Well done!

stevenking86 2 years ago

The fact that we can put these things over top of each other is awesome.

mattgreenrocks 2 years ago

Love it! Need to try it for my next work session.

What'd you make it with?

  • matteason 2 years ago

    Thanks! It's built in Vue 3, UI is all built from scratch.

    The sounds are FLAC files, which is the only compressed format which loops seamlessly across all browsers. Sound files are hosted in an S3 bucket, which is behind Cloudflare (free) to minimise S3 egress costs, so thankfully it doesn't cost much to run at all.

    The sounds are all permissively licensed and mainly sourced from freesound.org and freemusicarchive.org - I'm hugely grateful to everyone who shared such high-quality sounds and music for free. There's a list of credits at https://ambiph.one/acknowledgements

Aerbil313 2 years ago

iPhones have a background noise feature now, even if with not as much options this has.

entropie 2 years ago

This is really cool.

Can we maybe have apollo mission chatter?

  • matteason 2 years ago

    Yes great idea!

    Coincidentally I'm also building a live ISS tracker which embeds NASA's live camera stream [0]. Sometimes I have Ambiphone and the ISS tracker running at the same time and it's nice when the ISS chatter pops up, so I think the Apollo recordings would work really well.

    [0] https://www.youtube.com/watch?v=P9C25Un7xaM

ddgflorida 2 years ago

I like the UI and the ease of use.

WarOnPrivacy 2 years ago

Me:Tinnitus. Site:I like it. Rain does the job.

  • matteason 2 years ago

    Ha, I'm building up a nice little following of tinnitus-havers. Glad it works for you!

    • WarOnPrivacy 2 years ago

      You now have the worlds worst collection. Congrats on owning that.

webwanderings 2 years ago

Winner. Anything no-nonsense, now a days in this world, is a winner! Thank you!

asplake 2 years ago

Please tell me that ‘ambiphone’ rhymes with ‘antiphone’ as my music teacher said it, rhyming also with ‘catastrophe’ or ‘Penelope’

  • matteason 2 years ago

    Ha! I've always said am-BEE-fone but am-BIH-fon-EE is now the official alternative pronounciation

rngname22 2 years ago
  • dgrcode 2 years ago

    Was going to mention this site. One nice thing it has that could be useful for this app is to have the ability to save a preset and load it in the future. I found it quite useful in mynoise.net

    • matteason 2 years ago

      This is in development at the moment and very close to being launched - watch this space

99catmaster 2 years ago

Pretty cool, I personally prefer the sound selections on Forest, though.