Repository navigation
Releases: veteranop/StudioFire
Release list
StudioFire v1.6.0
Added
- Now-playing file for the stream encoder (the song titles on the website).
StudioFire now writes the song that is on air into a plain text file every time
the track changes. Point it at the file your streaming encoder already watches
— for KDPI that is BUTT on the stream PC — and the website player starts showing
song titles with nothing else to set up. Configure it under Settings →
Streaming → Now-playing file; use the full network path
(\server\share\...) rather than a drive letter, and press Write the
current song now to test it without waiting for the next track. The live
monitor shows the last title written and flags a failed write. If the file
cannot be written the station keeps playing and the monitor says why — nothing
about this can affect the audio. Accented names are simplified (Björk appears
as "Bjork") because the streaming server garbles anything else. - SoundExchange royalty report. StudioFire can now build the monthly report a
station owes SoundExchange for its internet stream, from the records it already
keeps of what actually aired. Run it for a calendar month and it writes three
files: the report itself (service, artist, title, album, ISRC, label and
performances, in the order the regulation asks for them), a full track log —
every song with the exact time it started, kept as the evidence behind the
report — and a short warnings file listing anything it could not fill in.
Advertisements, station IDs, PSAs and underwriting are left out by design. Two
things it will never invent: it does not guess a song's ISRC or record label,
and it does not use "how many times it played" in place of "how many people
heard it" — the listener totals have to come from the streaming host.
Command:python -m services.core.sx_report --month 2026-09 --out reports. - Song titles can be published to the stream. StudioFire can send the
on-air artist and title to the streaming server as each track starts, so the
website player shows what is playing and the streaming host has a record of
what it carried. Off by default, and it needs the streaming host's admin
credentials before it can do anything; it never blocks or delays audio.
Accented names are simplified before they go out (Björk appears as
"Bjork") because the streaming server garbles anything else — a plain
spelling reads correctly, a mangled one does not. - Streaming settings and monitor (Settings → Streaming). A new section where
the target streaming address, the mount name and the stream host's
username/password are entered once, with a switch to turn the title sending on
or off. Below it, a live monitor answers the only question that matters:
what a listener actually sees. It shows the last title StudioFire sent and
whether it succeeded, what the streaming host reports, what a listener's player
receives, and how many people are listening right now — refreshed every few
seconds. A Send a test title button pushes one test through the same path a
real track uses, so "does it work?" is answered without waiting for a song
change. The password is write-only: it is never shown back on screen.
StudioFire v1.5.1
Added
- Help menu and a built-in manual. A new Help link in the top bar opens
the StudioFire Operator's Manual — a plain-English guide to running the
station: the On Air screen, playing music, spots and IDs, reports, settings,
and what to do if something looks wrong. It is built into the app, so it works
with no internet, and it is on every screen. - "What's new" inside Help. The manual's What's new section shows what
changed in the version you are running and the ones before it (newest first).
StudioFire v1.5.0
Added
- Library duplicate cleanup. Settings now links to a Duplicate cleanup
page. Press Find duplicates and StudioFire lists every song that appears
more than once in the music library, side by side, with its size and length.
Tick the copies you want to keep; everything you leave unticked is moved —
never deleted — into a_Duplicatesfolder inside your music library, with a
manifest so any file can be put straight back. Songs used by a playlist, a
show or a spot, or held in a station folder, are protected and never moved.
StudioFire v1.4.0
Added
- Shuffle button on the playlist editor. Open a playlist and press the new
Shuffle button to reorder it into a random mix, so a playlist no longer
plays in the exact same sequence every time. The new order is saved straight
back to the playlist's.lstfile, the same as any other change. - Shuffle button on the On Air screen. The playlist card on the On Air page
(the list of what's playing and what's next) now has its own Shuffle
button, so you can reshuffle the rotation right where you are watching it.
The current song keeps playing; everything coming up is shuffled and the new
order is saved to the playlist. The button is off while a show is on air. - Choose 12-hour (AM/PM) or 24-hour (military) time. Settings now has a
Clock & time format option. It changes every clock StudioFire shows — the
clock in the top bar, the On Air history, reports, the schedule calendar and
the show labels. It starts on 12-hour (AM/PM) and the operator can switch to
24-hour at any time.
StudioFire v1.3.3
Added
- Auto-start that keeps the station on air:
scripts\install-autostart.bat.
Run it as Administrator on the box and the station comes back by itself after a
power bump or a Windows restart, with the sound still working and nobody at the
keyboard. It turns on Windows autologon for the station account and creates two
scheduled tasks: one that startsstart-all.batshortly after that account logs
in, and a watchdog that checks every 5 minutes and restarts the stack if it stays
unhealthy twice in a row. Add-checkto see exactly what it would do without
changing anything;scripts\remove-autostart.batundoes it.
Changed
install-services.batnow refuses to run on a station. A Windows service runs
in session 0, which has no audio device: the engine starts, plays nothing, and the
old script still reported success whileservices.mscshowed the service Running.
It now stops and points you atinstall-autostart.batinstead. If you genuinely
want the services on a box that never makes sound, pass-i-understand-no-audio.DEPLOY.mdno longer recommends services as the production setup for a station —
seedocs/AUTOSTART-CONSENSUS.mdfor the evidence and the reasoning.
StudioFire v1.3.2
Changed
- Auto-start is now one .bat, and it doesn't leave the fiddly part to you.
scripts\install-services.bat(run as Administrator on the on-air PC) registers
the three services so they start at boot and restart themselves if they crash,
asks for the Windows account the station should run as, then starts them and
reports which ones came up. Add-checkto see exactly what it would do with no
changes at all. The Log On account matters because a Windows service session has
no drive letters, no user profile and no NAS credentials — run as LocalSystem and
the station comes back and finds no music. If Windows refuses the account or the
password the script says so instead of leaving you with services sitting Paused.
It also stops any console-mode stack first, so you can't end up with two engines
on one station.
StudioFire v1.3.1
Fixed
- Spots (legal IDs, PSAs, ads, jingles) that fired but never actually played.
A fired spot was correctly handed to the player, but a housekeeping pass could
briefly forget about it and then delete its ready-to-play copy from the local
cache before it reached the air — so the spot was silently skipped and the next
song/show played instead (seen on the KDPI on-air PC on 2026-09-29: rules fired
every hour but nothing aired). StudioFire now holds on to a just-queued spot or
cued track until the player confirms it, so it can't be dropped before it plays.
StudioFire v1.3.0
Added
- A "What's new / Change log" section in Settings. It shows the version your
station is running, what changed in it, and the versions before it (newest
first, older ones fold open) — so after an update you can see exactly what came
in without having to ask. Nothing to set up: it reads the change log that
already ships with StudioFire.
StudioFire v1.2.0
Fixed
- The station no longer needs a mapped drive (like
Z:) to find its music,
playlists, station IDs, PSAs or ads. A mapped drive only exists while
someone is logged in, so after a reboot or a Windows update the station could
come back up without it — and then the file browser showed onlyC:\, the
station folders in Settings read "does not exist", and scheduled items could
silently miss their windows (on 2026-09-29 a Windows-update reboot dropped the
drive on the KDPI on-air PC and the legal-ID, PSA and underwriter rules missed
every window for the rest of the afternoon). StudioFire now finds those files
through the music library's own address instead of the drive letter, so
playlists, shows, IDs and PSAs keep working whether the drive is mapped or not. - The file browser can now reach the music library even with no drive
mapped. At the top level the picker lists the library itself alongside the
local drives, so you can always browse to your music and your.lst
playlists. Opening a path that was saved with a drive letter (e.g.Z:\...)
also works when that drive isn't there any more. - Restarting or updating re-connects the drive automatically when the
station has aconfig\drive-map.bat— every way StudioFire starts or restarts
now runs it first (previously only the Windows-service path did). If the
mapping fails, the station still starts; playback is never held up by it.
StudioFire v1.1.0
Added (operator feedback from KDPI, 2026-09-25, TimeTrax #644)
These came from John after the first live show on the new system.
-
Songs crossfade. In the last 4 seconds of a song, the next song
starts underneath it and rises while the old one falls, with no gap and no
dip in the middle (an "equal-power" fade, so the overall loudness stays
steady all the way through). PSAs, ads and station IDs are never faded. One can start
over a song's fade-out, but it plays at full volume from start to finish,
and the song after it starts the moment it ends, at full volume.
Emergency filler is never faded either. Skip is still an instant cut, and
"Stop after current song" lets the song finish fully before it stops. The
crossfade length is set inconfig.jsonunderengine→crossfade_sec
(0 turns crossfading off, so items play back to back). -
Program Output meter (VU) at the top of the On Air page. Live left and
right levels of what the station is sending to the sound card, with
green/amber/red zones, peak-hold marks and a peak readout in dB. If the
station goes silent while on air for 8 seconds, the meter card turns red
and says so. The level is measured without changing the audio. If the meter
can't run, it says "Meter offline" and the music plays on normally. -
Redesigned Now Playing card: bigger title, a progress bar, the
playlist/show line, and the Stop, Skip and Stop-after buttons stacked on the
right. The card's edge is green while on air and grey when stopped. -
Search spots by name. Type in the new search box above Upcoming Spots
to find a spot by its name, schedule, or file/folder. -
Date next to the clock at the top of every page (e.g. "Fri, Sep 25").
-
Now Playing shows the playlist. The card now shows which playlist or
show is on air, how many songs are left, how much time is left, and roughly
when it will end. -
Song count and run time for playlists. The playlist page shows how many
songs it has and how long it plays, and each song shows its length. Songs
whose length isn't known yet are counted separately; their length fills in
automatically the first time they're readied for air. -
File browser on the playlist page. Open any folder the studio PC can
see (NAS included) and use + Add to add a song to the playlist or
▶ Next to play it right after the current song. There's also an
"Add all songs in this folder" button. It reopens the last folder you used.
Adding songs no longer reloads the page, so you can add several in a row. -
StudioFire can update itself from GitHub. Settings → Software
updates shows your version and whether a newer one has been published,
with its release notes, and a green ⬆ Update pill appears on the On
Air page when one is available. An admin presses Install update
(StudioFire never installs anything by itself). It backs up first,
restarts only what the update changed (most updates don't interrupt the
music at all), and if the new version doesn't start properly it puts the
old one back by itself. You can also run Update StudioFire from GitHub
from the Start menu.
Changed
- The On-Air schedule's "Up next" list is in true air order. Each entry
now starts with when it will actually air next (e.g. "▶ Tomorrow 6:00 AM").
Before, every one-time show was listed ahead of every repeating one, so a
daily 6 AM show could appear below something scheduled for next week. - Better on smaller monitors. The On-Air schedule and Upcoming Spots
lists wrap long names, and their buttons move under the text instead of
getting cut off. The Now Playing buttons shrink to fit, and the History/Log
column moves below the main area on screens narrower than 1440 pixels. The
clock no longer overlaps the menu. - Calendar names stay in their box. Long show names wrap inside the day
box instead of spilling into the next day or getting cut off. - After an update, the page picks up the new layout by itself. Before, the
browser could keep showing the old layout until you did a hard refresh.
Fixed
- Saving a playlist from StudioFire no longer blanks out the song lengths
stored in its .lst file. - A playlist containing a file name with an unusual character (e.g. "√")
no longer breaks when saved. The character used to be turned into "?", and
that song would then never play again. - A malformed length in a .lst file (e.g. "-2") no longer causes that line's
song to be skipped. - Playlists made on another computer now play on this one when a path alias
is set up (path_aliasesin config.json). Aliases used to apply only while
importing a playlist, so a rotation that was already saved could fail to
play and drop the station into emergency filler. - If the audio engine is stopped abruptly (e.g. Ctrl+C in its window), its
player no longer keeps running in the background and gets mixed up with the
next engine. - Recovery after the audio player crashes is faster: it no longer waits 2
seconds on a player that's already gone. - Closed a race in the web control room's feeder (P2) where an operator
cueing a song ("Play Next"), firing a station ID/ad, or editing the live
rotation at the same moment the system was pulling fresh songs from the NAS
could silently vanish: the cued item would be dropped from bookkeeping and
its just-copied local file deleted while it was still queued to play. The
song would just never air, with nothing showing an error. All feeder
bookkeeping is now serialized so this can't happen. A newly-cached file
also can't be deleted for at least 10 minutes no matter what, as a second
safety net. - A failed ad/station-ID insert (e.g. a brief network hiccup) no longer
silently gives up that spot's time slot — it now retries for up to 10
minutes before finally logging it as missed, so a real network blip
doesn't quietly cost a sponsor their ad play.
Changed
- The system now only queues a few songs ahead in the live player (was ~45
minutes' worth) — the 45-minute local cache is unchanged and still fully
protects against a NAS/network outage (the player's own emergency filler
reads straight from that cache), but now the on-air queue reflects reality
almost immediately instead of lagging up to 45 minutes behind edits.
Configurable viacore.feed_ahead_tracksin config.json (default 3).