NHacker Next
  • new
  • past
  • show
  • ask
  • show
  • jobs
  • submit
Show HN: Jazz up your Python scripts with sound effects (github.com)
roywiggins 1302 days ago [-]
"No Copyright Infringement Intended" is a meaningless disclaimer. Either the music is public-domain or permissively licensed and you're fine, or it's not and you're probably not.

If I were you, I'd try and find something that is Creative Commons, CC0 is best (the most permissive CC license). And then you can say in your disclaimer that the audio is CC licensed, which is ideal.

joan_kode 1302 days ago [-]
It's obviously not supposed to be a disclaimer of any legal value, judging from the sentence immediately after your quote: "I might take down these tracks or add more depending on the number of lawsuits I get slapped with". I don't particularly condone this attitude, but at least it's pretty clear. Either you slap him with a lawsuit/DMCA and the tracks will be removed or you don't and they probably won't.
phantomshelby 1302 days ago [-]
Hey OP here, the tracks I used are taken from https://www.youtube.com/user/gamingsoundfx which is kinda a royalty-free stock audio library, I realise now that my statement that was funny when I wrote it might come back to haunt me dreams so I am gonna update it, Thanks for letting me know
skocznymroczny 1302 days ago [-]
I wouldn't describe it as 'royalty-free stock audio library'. It's obvious many sounds aren't free to use, be it rips from games or TV shows.
devenblake 1302 days ago [-]
The DMCA process with GitHub and most hosting sites is very straightforward and mostly automatic, I don't see why it would be a problem. With most older works it's nigh impossible to figure out who owns the copyright anyway.
shakna 1302 days ago [-]
> Either the music is public-domain or permissively licensed and you're fine, or it's not and you're probably not.

If only copyright were actually that simple. The music might be, and the performance not, or vice versa. Maybe the rights were assumed to be public domain, and then a company discovers the rights in their vault. Maybe the license is permissive, but one of the many people involved never agreed to it, and that means that it retroactively isn't licensed permissively.

All of the above have happened before.

jagged-chisel 1302 days ago [-]
Regardless of intent, infringement happens. Someone making the above statement seems to think “infringement” means “plagiarism.” Also, a DMCA takedown request isn’t “being slapped with a lawsuit.”

Using language that makes one amenable to takedown requests might be fine. But it’s no defense for infringing on others’ copyrights by posting their IP without a license.

OP, take parent comment’s advice and find some appropriately licensed music.

tapland 1302 days ago [-]
Made me remember the wild homemade sound effects on 90s shareware games
tubularhells 1302 days ago [-]
My dude this is a joke. You are too stiff, are you alright?
Bjartr 1302 days ago [-]
Which laws are okay to break for the sake of a joke and which aren't?
H8crilA 1302 days ago [-]
This is useful!

Imagine running a long ML training script. Hearing a sound in your speakers when it ends (successfuly or not) is something I considered implementing, non ironically, at my job. Never got around to doing it.

stonewareslord 1302 days ago [-]
On Mac or Linux, I run "tput bel" to the end of expextedly long-running commands. On Mac, the icon bounces and system makes a beep sound. On linux (i3/urxvt), the window and workspace turns red until I focus it.

You can usually also type it after the command has started and it’ll still work

uryga 1301 days ago [-]
i've always used

  python -c 'print("\a")'
without thinking too much about it, but yours is way nicer!
Resinderate 1302 days ago [-]
Do this sometimes on mac, simply with:

  long_running_command && say "That's all folks"
jedberg 1302 days ago [-]
My favorite cron of all time was:

    0 17 * * 1-5 say "You're gonna miss the train go now!!"
Which I put on my work computer. Since it came out of the speaker most of the time, not only did I not miss the train, but everyone else knew I had to go and respected that.
computronus 1302 days ago [-]
The built-in `afplay` shell command works for mp3s and for the stock aiff sounds under /System/Library/Sounds.

I use this after my long-running Maven builds to play either a happy sound if the build succeeds or a sad (mocking) sound if it fails, based on the value of $?.

lozf 1302 days ago [-]
Love the idea of checking the exit code! Seems I have some modifications to do.

On Linux there's usually `aplay` but you'll need play (sox) or mpv etc. to play lossy-compressed audio... a bunch of sounds can be found under /usr/share/sounds/ depending on what's installed.

`espeak-ng` doesn't have as good voices as `say`, but some `festival` ones come close, although these days I usually use Googles tts, and save the ones I use frequently.

gknoy 1302 days ago [-]
I do the same thing with a shell alias called `SUCCESS`:

  alias SUCCESS='echo -e '\''\n\nSUCCESS'\'' 
    && bash -c '\''mpv ~/bin/kazoo-fanfare.mp3 &'\'' 
    || echo FAILED' # or play sad trombone sound
  # (some escaping might not survive ...)
    
It's an always too-loud and too-annoying "Tadaa!" style fanfare that is very clearly NOT my music, and I will very frequently use it in the context of `make test && SUCCESS` to monitor long-running test suites while I do other work.
joshvm 1302 days ago [-]
There is a very simple way to tell if an ML script has failed: the GPU fans turn off. No joke. Even with a water cooled machine, I know something has gone wrong if I come back in an hour and the rig is silent.
jcelerier 1302 days ago [-]
There's a whole research field about doing that actually.

Here's the reference book on the topic: https://sonification.de/handbook/ (PDF is on the right menu)

asah 1302 days ago [-]
Another super easy option: send a slack message on a private channel (one LOC) which turns into a combo desktop and cellphone notification, which you can disable during sleeping hours, flow into zapier/ifttt etc etc etc
encom 1302 days ago [-]
nicbou 1302 days ago [-]
I have an alias called "ding" that plays a sound. Add "; ding" to a command and you're set.
ketzo 1302 days ago [-]
Wow, I love that. Would you mind posting the full alias?
nicbou 1302 days ago [-]

    printf '\a'
or if you want to display a MacOS notification

    function alert {
        osascript -e 'display notification "'"$1"'"'
    }
this_machine 1298 days ago [-]
I liked this idea so I packaged 'ding' into something you can install[1].

[1] https://github.com/alexdelorenzo/onhold

1302 days ago [-]
vimax 1302 days ago [-]
Or for system monitoring. You could have different function play different sounds so the whole program sounds melodic in normal operation. If the melody is off or you hear discordant notes then you know something's up.
rattray 1302 days ago [-]
Agreed! I played the star wars opening track on the conclusion of a script I wasn't sure would terminate. Very exciting. But turned out to have been triggered on an unexpected error case :(
mac-chaffee 1302 days ago [-]
If you're using a cloud-based linux server, most of them have "mail":

    some_long_command | mail -s "Command finished" email@example.com
nl 1302 days ago [-]
I put 'say Data Prep phase 1 complete' in my training scripts.

It works pretty well, but can be annoying when it goes off in a Zoom call...

saboot 1302 days ago [-]
My personal approach is a shell script that calls the slack webhook api, so I get a slack message when my job finishes.
petargyurov 1302 days ago [-]
I like this. It doesn't take itself seriously and implementing it via decorators is a great choice. Might use it in some hobby scripts!
fredley 1302 days ago [-]
This will go great with my analogue terminal bell! https://news.ycombinator.com/item?id=24432930
phantomshelby 1302 days ago [-]
Looks super cool : ) always loved old school
mattgreenrocks 1302 days ago [-]
In the past, I’ve used the Mac’s text to speech capabilities to help debug async shell prompts. It’s hard to relate but using aural cues as clues to execution paths feels quite different from print-based debugging.
just-juan-post 1302 days ago [-]
Ok that's a seriously awesome idea. It's kinda like sonar: You know what's normal and then listen for the differences?

Could you explain in detail or perhaps make a youtube video?

jerf 1302 days ago [-]
Not the question you asked, but I bet you find this interesting: https://www.computerworld.com/article/2771333/the-history-of... , I'm referencing the part after "The best ping story".
canada_dry 1302 days ago [-]
Getting mp3 to play on linux via python for some reason has been a challenge, and I ended up using this abomination:

  subprocess.Popen(['cvlc','--play-and-exit','/home/me/music/trumpet.mp3'])  
Going to give your library a try!
thehappypm 1301 days ago [-]
This doesn't look like an abomination to me!
jedberg 1302 days ago [-]
FYI if you're on a Mac using a Virtualenv, you might need to do 'pip install pyobjc' to get the music to play.
mixmastamyk 1302 days ago [-]
Reminds me of a similar but slightly more direct module I wrote named boombox:

https://pypi.org/project/boombox/

byteface 1302 days ago [-]
great. now to add benny hill theme to all bulid scripts... https://www.youtube.com/watch?v=MK6TXMsvgQg
harveywi 1302 days ago [-]
Fezzik, do you hear that? That is the sound of ultimate suffering.
1302 days ago [-]
Fishysoup 1302 days ago [-]
I just discovered I've always wanted this.
griffinkelly 1302 days ago [-]
I have nightmares of the error sounds from Matlab, not sure if I need this in my python anytime soon.
monadic2 1302 days ago [-]
This is violence.
MalikNotah 1302 days ago [-]
Nice!
Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact
Rendered at 21:42:43 GMT+0000 (Coordinated Universal Time) with Vercel.