Sessions - 0x213F/jukebox-radio GitHub Wiki

Synopsis

A session is the main user interface of Jukebox Radio. It is where a user goes to listen to music.

Music services

Jukebox Radio allows users to listen to music from the following services. Additional music services can be found listed on the feature requests wiki page.

Spotify

In order to listen to music from Spotify:

  • The user must have a Spotify Premium account.
  • The user approve Jukebox Radio to access to their Spotify data and features.

Frequently asked questions

YouTube

There are no authentication requirements for YouTube.

Frequently asked questions

Manual upload

Users may manually upload audio files. Jukebox Radio securely stores and manages these files.

Frequently asked questions

Player

Definition

Default configuration

The session has a queue, which is initially empty. Tracks and collections (definition) may be added to the queue.

Since the queue is initially empty, nothing is initially playing when a session is loaded for the first time. When the first item is added to the queue, it is not automatically played. This behavior is intentional. This allows the user to prepare the queue before listening to it.

This next point may be confusing to those unfamiliar with the underlying code that powers Jukebox Radio. This is more of an important technical implementation detail for engineers to be mindful of. A session is initialized with a null queue item "now playing." This doesn't really mean much to the end user. The only thing this enables is the ability to "rewind" all the way to the beginning. Doing that would idle the player and require the user to click "next track" to resume playback.

Controls

Next track

Play the next track in the queue.

Previous track

Play the previous track in the queue.

Pause track

Pause the track currently playing in the session.

Play track

Play the track currently paused in the session.

Scan forward

Scan forward 10 seconds in the currently playing track.

Scan backwards

Scan backward 10 seconds in the currently playing track.

Queue management

Search

A user may search across all services to add music to the queue.

Markers

Definition

Users may create and delete markers at various positions in a track. For example, a user may decide to drop a marker at the start of a verse.

These markers are exposed both in the player and the feed when the track is playing in the user's session.

Markers persist outside of a queue instance. For example, consider the following:

  • User A queues up Track B.
  • User A creates Marker C on Track B.
  • User A listens to Track B
    • When User A is listening to Track B, Marker C is present.
  • A day later, User A queues up Track B.
    • When User A is listening to Track B, Marker C is present.

Intervals

Definition

Users may create and delete intervals in a queued track. These intervals reflect how the track will be played back. The interval types supported include:

  • Skipping an interval.

Intervals do not persist outside of its queue instance. For example, consider the following:

  • User A queues up Track B.
  • User A creates Interval D (skipped) on Track B.
  • User A listens to Track B
    • When User A is listening to Track B, Interval D (skipped) is skipped.
  • A day later, User A queues up Track B.
    • When User A is listening to Track B, Interval D (skipped) is not present. The full track is played.

Feature requests

Collection management

Consider a collection with 100 tracks. If you add that collection to your queue:

  • In Spotify it creates 100 queue items.
  • In Jukebox Radio it creates 1 queue item.

While managing the queue, collection queue items may be expanded and collapsed. When expanded, all of the tracks inside the collection are displayed. Individual tracks may be edited or deleted from the queue.

Feed

Definition

Text comments

The user may create text comments while music is playing or paused.

Historical text comments (relative to the currently playing track) will also be displayed.

Text comment modifications

The user may markup words in a text comment. They may add the following style:

  • Bold
  • Strikethrough
  • Italicize

Styles are applied after submitting the text comment. To apply the style, a user must select the text they want to markup. A tooltip will appear above the selected text with buttons allowing the user to choose what style to apply to their selection.

This feature was originally implemented using Rough Notation, but the feature has since been modified due to a lack of engineering resources.

Voice recordings

The user may create voice recordings while music is playing. The voice recording is also transcribed to text.

Historical voice recordings (relative to the currently playing track) will also be displayed.

Player updates

Relevant updates to the player will be shown in the feed. This is done to give the user context and clarity on the state of the player.

  • Markers encountered
  • Intervals encountered
  • The latest relevant action (e.g. the session is paused)

Recording - not yet implemented

This feature is selected for development. It has not yet been implemented due a shortage of engineering resources.

This feature is scheduled to be completed by the end of Q1 2021.

A session may be recorded. Saved sessions can be played back at a later time and shared publicly via a user's profile.

Django technical specifications

React technical specifications

Feature requests

Live streaming - not yet implemented

This feature is selected for development. It has not yet been implemented due a shortage of engineering resources.

Feature requests

Settings

Idle after queue

Default: False

This value signifies wether the playback should go idle after the currently playing queue item finishes.

The currently playing queue item is the highest level queue item. For example, consider the case where a collection (with 2 or greater tracks) is queued up and this setting value is True. Playback will go idle after the collection finishes, not after the first track of the collection finishes.

Speak voice recordings

Default: True

This value signifies wether the voice recordings should be spoken. When spoken, the playback volume dims to allow the voice recording to be heard.

When this value is False, the voice recording is not spoken. In lieu, the user may read the voice recording transcription.

Focus mode

Default: Off

This value signifies wether the feed should be put in focus mode.

In focus mode, the feed is completely empty. Both historical items and player updates are not displayed. Text comments and voice recordings which are newly created dissipate shortly after being recorded.

There is one small technical detail about focus mode. This value may not be changed if the active session is currently recording.