The official OS X client to the Radio Paradise web radio.

Related tags

Audio rposx
Overview

Introduction

Radio Paradise is a unique blend of many styles and genres of music, carefully selected and mixed by two real human beings — enhanced by a dazzling photo slideshow, tied in thematically with the songs that are playing. There's nothing else that's quite like it.

The Application

This is an OS X client for Radio Paradise.

The app is currently published on the Mac App Store. If you only ned the executable, grab it from there.

The code

The code used to be almost the same of the iOS version and is based on AVPlayer, that manage all the audio play (both "standard" and PSD).

Program FLow

The main controller is RPWindowController. Code is hopefully easy to follow. There are 3 AVPlayer objects to manage the main stream and the PSD stream (PSD needs two object to manage the "PSD to PSD transition"), state transitions for the streams are managed via KVO.

Metadata about the played song are taken directly from radio paradise (not from the stream metadata, because AVPlayer do not supports that for network streams), a NSTimer handles the task (in -[metatadaHandler:timer]). Another NSTimer manages the load of the images for the HD stream (in -[loadNewImage:timer]). PSD play is triggered and managed here. The "return" from the PSD is also timer-triggered.

The management of UI state and stream start is via KVO.

The main controllers also tries to manage the fading between the main stream and the PSD streams. Unfortunately volume controls (and therefore the fading) don't work on main stream. This is a know limitation of AVPlayer (cfr. Apple's qa1716 ). The fading work on the PSD songs.

The application logs heavily when DLog() (defined in RadioParadise-Prefix.pch) is set to have output. Be aware to not distribute the application with logging on (it's really, really verbose).

The application requires OS X Yosemite (or later). It can be built for 10.7 (just remove the NSVisualEffectView from the overlay of the main windows and from the lyrics window in the main XIB file and filter the code for the animators and the notification).

Patches and improvements are always welcome.

Acknowledgements

This application uses code from:

STKeyChain by Buzz Andersen iRate by Nick Lockwood.

Included as submodules from my forks.

Comments
  • Use native

    Use native "Next Song" keys on OSX Keyboard

    The native OSX Keyboard media keys could be used like so:

    • When I press the "Next", "Play something different" is activated.
    • The client can be paused
    • Pressing the back button could jump back to the currently playing song of RP

    media

    See this StackOverflow article:

    I accomplished this in my own application by subclassing NSApplication (and setting the app's principal class to this subclass). It catches seek and play/pause keys and translates them to specific actions in my app delegate.

    Relevant lines:

    #import <IOKit/hidsystem/ev_keymap.h>
    
    - (void)sendEvent:(NSEvent *)event
    {
      // Catch media key events
      if ([event type] == NSSystemDefined && [event subtype] == 8)
      {
          int keyCode = (([event data1] & 0xFFFF0000) >> 16);
          int keyFlags = ([event data1] & 0x0000FFFF);
          int keyState = (((keyFlags & 0xFF00) >> 8)) == 0xA;
    
          // Process the media key event and return
          [self mediaKeyEvent:keyCode state:keyState];
          return;
      }
    
      // Continue on to super
      [super sendEvent:event];
    }
    
    - (void)mediaKeyEvent:(int)key state:(BOOL)state
    {
      switch (key)
      {
          // Play pressed
          case NX_KEYTYPE_PLAY:
              if (state == NO)
                  [(TSAppController *)[self delegate] togglePlayPause:self];
              break;
    
          // Rewind
          case NX_KEYTYPE_FAST:
              if (state == YES)
                  [(TSAppController *)[self delegate] seekForward:self];
              break;
    
          // Previous
          case NX_KEYTYPE_REWIND:
              if (state == YES)
                  [(TSAppController *)[self delegate] seekBack:self];
              break;
      }
    }
    
    opened by besi 3
  • Save / Restore Window States and Positions

    Save / Restore Window States and Positions

    As mentioned in Boris Zech's comment on the App Store there should be an automated storage of wndow states and positions that persists re-starts of the App.

    opened by cgommel 2
  • Clicking the song does not open Safari

    Clicking the song does not open Safari

    I've been using RP for quite a while and today when a song played that I liked I wanted to rate it, opening the song in Safari.app.

    But clicking a Song does no longer seem to open my browser.

    Version of RP: 2.0 (98)
    OSX 10.11.6
    
    opened by besi 1
  • Use

    Use "Template Images" for monochrome status bar icon

    I use the "Black & White System Menu Icon" option, which I like a lot. But I often use >1 monitor, and the inactive monitors grey out the icons. For this app, the icon becomes an opaque oval with a little tail for the bottom of the "P"

    rp-status-bar

    Instead, can you make the "RP" part of the logo completely transparent and set the image to be a "template image" so that it is still identifiable on the inactive monitors?

    opened by michaelblyons 0
  • Bluetooth command start/stop is ignored

    Bluetooth command start/stop is ignored

    Howdee folks,

    Looks like pausing the stream is not working when a bluetooth device sends the command. I have a wireless headset connected to my computer (Mac OS Mojave) and when I press pause then the app keeps playing. Spotify and other audio apps work fine and indeed pause the playback.

    Cheers,

    Danny

    opened by dannybloe 2
An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and more.

SpotifyClone An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and

null 104 Jan 7, 2023
Professional Radio Station App - now supports Swift 5 / Xcode 10!

Swift Radio Swift Radio is an open source radio station app with robust and professional features. This is a fully realized Radio App built entirely i

Matthew Fecher 2.7k Jan 7, 2023
Radio & Podcast Streaming App For WPRK

WPRK(iOS & iPadOS) Radio & Podcast Streaming App For WPRK, a licensed FCC broadcast station, The app allows users to connect to live music streams and

MwaiBanda 5 May 30, 2022
Radio Streams from all over the world. Free and Open.

RadioBrowserKit - The Swift SDK for Radio Browser Radio Streams from all over the world. Free and Open. RadioBrowserKit is a Swift package which lets

Frank Gregor 5 Oct 17, 2022
An original digital art work for macOS, iOS and web

WordClock WordClock versions of various vintages, for various platforms. https://www.simonheys.com/wordclock/ Downloads Currently avaiaible to downloa

Simon Heys 62 Dec 7, 2022
AudioPrism implements the `AnalyserNode` functionality defined in the Web Audio API.

AudioPrism AudioPrism implements the AnalyserNode functionality defined in the Web Audio API. https://webaudio.github.io/web-audio-api/#AnalyserNode U

Yu Ao 2 Dec 20, 2021
Dead-simple queue-oriented client for Spotify

Spotiqueue A terribly simple macOS app for keyboard-based, queue-oriented Spotify use. Many years ago i built a version which relied on a now-deprecat

paul 74 Dec 3, 2022
Swift Radio is an open source radio station app with robust and professional features.

Swift Radio Swift Radio is an open source radio station app with robust and professional features. This is a fully realized Radio App built entirely i

Ahmed AlOtaibi 0 Oct 13, 2021
An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and more.

SpotifyClone An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and

null 104 Jan 7, 2023
An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and more.

SpotifyClone An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and

Gabriel Denoni 11 Dec 27, 2021
The official iOS client library for api.video

api.video iOS client api.video is the video infrastructure for product builders.

api.video 8 Dec 2, 2022
Passepartout is a non-official, user-friendly OpenVPN® client for iOS and macOS.

Passepartout Passepartout is a non-official, user-friendly OpenVPN® client for iOS and macOS. Overview All profiles in one place Passepartout lets you

Passepartout 523 Dec 27, 2022
LTHRadioButton - A radio button with a pretty animation

LTHRadioButton Slightly inspired by Google's material radio button. The clip below has 3 sections: full speed, 25% and 10%, but after converting it to

Roland Leth 368 Dec 16, 2022
RadioGroup - The missing iOS radio buttons group.

RadioGroup The missing iOS radio buttons group. Usage let radioGroup = RadioGroup(titles: ["First Option Title", "Another Option Title", "Last"]) radi

Yonat Sharon 188 Dec 20, 2022
Professional Radio Station App - now supports Swift 5 / Xcode 10!

Swift Radio Swift Radio is an open source radio station app with robust and professional features. This is a fully realized Radio App built entirely i

Matthew Fecher 2.7k Jan 7, 2023
Radio & Podcast Streaming App For WPRK

WPRK(iOS & iPadOS) Radio & Podcast Streaming App For WPRK, a licensed FCC broadcast station, The app allows users to connect to live music streams and

MwaiBanda 5 May 30, 2022
Radio Streams from all over the world. Free and Open.

RadioBrowserKit - The Swift SDK for Radio Browser Radio Streams from all over the world. Free and Open. RadioBrowserKit is a Swift package which lets

Frank Gregor 5 Oct 17, 2022
A radio button with a pretty animation

LTHRadioButton Slightly inspired by Google's material radio button. The clip below has 3 sections: full speed, 25% and 10%, but after converting it to

Roland Leth 368 Dec 16, 2022
Spika is universal chat module with backend, web, ios and Android client.

Spika Spika is messenger module for Web/iOS/Android with backend. You can include messenger feature to your app or service with minimum code. For deta

Clover Studio 608 Dec 23, 2022
This generic SOAP client allows you to access web services using a your iOS app, Mac OS X app and AppleTV app.

This generic SOAP client allows you to access web services using a your iOS app, Mac OS X app and Apple TV app. With this Framework you can create iPh

Prioregroup.com 479 Nov 22, 2022