Use Powershell to Play Random MP3s
Date: 27 November 2019
I’ve been playing with tools to help make my game streams easier. One of the things that I wanted to do was to play random MP3 from a directory. Here’s a little Powershell to get it done.
Here’s the powershell. Drop this in a file named play-random.ps1
.
param(
[Parameter(Mandatory=$true)]
[string]$directory,
[string]$mpg123="C:\Users\username\mpg123-1.25.13-static-x86-64\mpg123-1.25.13-static-x86-64\mpg123.exe"
)
Import-Module Microsoft.PowerShell.Management
$file = gci -Path "$directory\*.mp3" | Get-Random -Count 1
& $mpg123 $file
The first thing you need is mpg123. You can
install this anywhere but you need to know the path to
mpg123.exe
. You can use that to replace the path that is set in the
variable $mpg123
.
I have a directory named win
that contains a bunch of MP3s of movie
quotes that I play on the rare times I win a round of Apex
Legends. That’s passed to the -directory
argument.
powershell.exe -NoLogo -NonInteractive -WindowStyle Hidden -executionpolicy bypass -File play-random.ps1 -directory win
That’s great. Huzzah and stuff. Now, I’d like to be able to run this at the touch of a button. There are a number of ways to do that. I can create a hot key for each directory in OBS Studio but even better are tools like Up Deck or Mix It Up. The problem with both of those is they don’t play well with the arguments.
To get around that, I had to create a simple batch file for each directory, like so.
chdir "C:\Users\username\audio-clips\"
powershell.exe -NoLogo -NonInteractive -WindowStyle Hidden -executionpolicy bypass -File play-random.ps1 -directory win
Ooo, aaah. Now all that needs to be done is to configure a button that runs the batch file. Easy peasy lemon squeezy.