Friday, August 14, 2015

StationPlaylist Add-on Internals: Introduction and history

If you are a radio broadcaster, you might be accustomed to activities involved when producing a show. This may include playlist selection, scheduling break notes, responding to requests, monitoring listener count and encoding status and so on. To assist a broadcaster, a broadcast automation program is used, and one of the popular apps is called StationPlaylist Studio.
In this first installment of NVDA Add-on Internals: StationPlaylist Studio, we'll learn about what Studio is and how the NVDA add-on was born. You don't have to install or use the NVDA add-on to understand the ins and outs of this powerful add-on (using the add-on might help you better appreciate the depth of this material; for fuller experience, it is handy to have the add-on source code in front of you as you navigate this series). So let's get started by learning more about SPL Studio.
Introducing StationPlaylist Studio and the NVDA add-on
StationPlaylist Studio ( is a broadcast automation software that helps broadcasters schedule tracks, play jingles and more. It includes support for break notes, hourly playlist, track tagging and comes with tools to manage track playback such as setting track intros. In studio 5.00 and later, it includes its own stream encoder.
Is Studio accessible? Surprisingly, yes. It is possible to use Studio features without using screen reader scripts and add-ons. However, there are times when a broadcaster would use scripts, such as announcing status changes, monitoring track intros and endings, enhanced support for encoders and so on, and NVDA add-on for StationPlaylist Studio (usually referred to as SPL or just Studio) accomplishes this well.
Studio add-on: a history
In 2011, Geoff Shang, a seasoned blind broadcaster, started working on SPL Studio add-on. This early version (numbered 0.01) was developed to let NVDA announce various status changes such as automation toggle and so on. This initial version, co-developed by James Teh (one of the lead developers of NVDA screen reader) was considered a quick project, and further development ceased until 2013.
In 2013, I received several emails regarding NVDA's support for SPL Studio with a request for someone to write an add-on for it. As I was still new to add-on development then (this was after I developed Control Usage Assistant and GoldWave), I decided to take on this challenge in order to learn more Python and to practice what I learned in computer science labs at UC Riverside. I first downloaded the existing add-on (0.01) and installed Studio 5.01 on my computer to learn more about this program and to gather suggestions from SPL users. After little over a month of development and preview releases, I released Studio add-on 1.0 in January 2014.
Most of the early versions (1.x, 2.x, 3.x, released throughout 2014) were mostly quick projects that bridged the gap between NVDA and other screen readers (Brian Hartgen's JAWS scripts were my inspiration and have studied documentation for Jeff Bishop's Window-Eyes scripts). These early versions, supporting Studio 4.33 and later, were also used to fix bugs encountered by Studio users - for instance, a broadcaster posted  a YouTube video explaining how NVDA was not reading edit fields, which was fixed early on. Later releases (4.x, 5.x, released throughout 2015), further bridged the gap with other screen readers and introduced unique features (for instance, add-on 5.0 introduced a configuration dialog). As of time of writing (August 2015), add-on 6.0 is in development which adds new features (some of which will be discussed in this series).
Highlights of past major releases and subsequent maintenance releases include:
* 1.x: Initial release, added end of track alarm and other features.
* 2.x: Track Finder and better routines to recognize Studio versions.
* 3.x: first long term support (LTS) release, Cart Explorer, support for SAM Encoder and no need to stay on the encoder window during connection attempts. This was the last version to support Studio 4.33.
* 4.x: Library scan, support for SPL encoder and studio 5.10.
* 5.x: Track Dial, dedicated configuration dialog.
In the next few installments, you'll get a chance to see how the add-on works, design philosophy and how the add-on is being developed, with glimpses into the past and future. My hope is that this add-on internals series would be a valuable reference for users and developers - for users to see the inner workings of this add-on, and for developers to use this add-on as an example of how an add-on is planned, implemented, tested, released and maintained.
To download the add-on, go to
1. JAWS scripts for StationPlaylist Studio (Hartgen Consultancy):
2. Window-Eyes app for StationPlaylist (Jeff Bishop/AI Squared):

No comments:

Post a Comment