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

Related tags

Miscellaneous 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.

Issues
  • Support last.fm scrobbling

    Support last.fm scrobbling

    It would be awesome if this supported scrobbling to last.fm! There aren't a lot of great ways to listen to RP and scrobble the played tracks.

    opened by lfranchi 3
  • 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
  • better behavior around suspend / hibernate

    better behavior around suspend / hibernate

    Probably we should do this by using IORegisterForSystemPower

    enhancement 
    opened by ilTofa 2
  • 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
  • Update MainMenu.xib

    Update MainMenu.xib

    Makes volume changes much smoother.

    opened by cgommel 1
  • Better Airplay support

    Better Airplay support

    As per cgommel request.

    enhancement 
    opened by ilTofa 1
  • Volume slider in system menu

    Volume slider in system menu

    enhancement 
    opened by ilTofa 1
  • opt-out of piwik

    opt-out of piwik

    in preferences.

    enhancement 
    opened by ilTofa 1
  • Status menu item should be configurable as black & white.

    Status menu item should be configurable as black & white.

    "Default" icon must be in color (for the RP branding). An options should be made in settings to have a B&W status menu icon.

    enhancement 
    opened by ilTofa 1
  • Applescript support

    Applescript support

    Would love to see Applescript support so I can use Alfred to start/stop Radio Paradise.

    opened by lorin 1
  • 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
  • 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
📱The official Wikipedia iOS app.

Wikipedia iOS The official Wikipedia iOS app. License: MIT License Source repo: https://github.com/wikimedia/wikipedia-ios Planning (bugs & features):

Wikimedia 2.4k Nov 27, 2021
WordPress for iOS - Official repository

WordPress for iOS Build Instructions Please refer to the sections below for more detailed information. The instructions assume the work is performed f

WordPress Mobile 3.2k Nov 28, 2021
The official OS X client to the Radio Paradise web radio.

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

Giacomo Tufano 16 Jul 28, 2020
Matomo Mobile 2 App - The official Git repository! Liberating Web Analytics on the go!

Matomo Mobile 2 - matomo.org Description Matomo (formerly Piwik) is a downloadable, open source (GPL licensed) real time web analytics software progra

Matomo Analytics 85 Oct 6, 2021
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 609 Nov 8, 2021
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 473 Nov 3, 2021
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 330 Nov 24, 2021
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.6k Nov 1, 2021
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 329 Oct 28, 2021
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 137 Nov 19, 2021
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 137 Oct 24, 2021
socket.io-client-swift - Socket.IO-client for iOS/macOS.

Socket.IO-Client-Swift Socket.IO-client for iOS/OS X. Example import SocketIO let manager = SocketManager(socketURL: URL(string: "http://localhost:80

Socket.IO 4.6k Nov 26, 2021
Exposure notification client application / Application client de notification d'exposition

La version française suit. COVID Alert Mobile App Available for iOS and Android: Pour iOS et Android: Adapted from https://github.com/CovidShield/mobi

Canadian Digital Service – Service numérique canadien 886 Nov 10, 2021
iCook's official tvOS app

iCook tvOS App A tvOS app that plays iCook TV videos. Quick Start Run the following commands to install dependencies: make bootstrap Production Setup

Polydice, Inc. 64 Aug 6, 2021
Go Flashcards for iOS and WatchOS - Official repository

Go Flashcards for iOS and WatchOS Go Flashcards for iOS and WatchOS is an application that allows users to create stacks of flashcards and review them

Roy 51 Nov 10, 2021
Source code of the official F8 app of 2017, powered by React Native and other Facebook open source projects.

F8 App 2017 This is the entire source code of the official F8 app of 2017, available on Google Play and the App Store. How We Build It We've created a

Facebook Samples 14k Nov 25, 2021
The official app for the OpenStack Summit

OpenStack Foundation Summit App The official app for the OpenStack Summit. (iTunes) Supports iOS, watchOS and tvOS. Setup Fetch Carthage dependencies.

The OpenStack Foundation Mobile Labs 34 Dec 31, 2019
Dungeon Crawl: Stone Soup official repository

Dungeon Crawl Stone Soup Dungeon Crawl Stone Soup is a game of dungeon exploration, combat and magic, involving characters of diverse skills, worshipp

Cliffs Dover 29 Jan 27, 2021
The official Swift style guide for raywenderlich.com.

The Official raywenderlich.com Swift Style Guide. Updated for Swift 5 This style guide is different from others you may see, because the focus is cent

raywenderlich 11.8k Nov 20, 2021
LinkedIn's Official Swift Style Guide

Swift Style Guide Make sure to read Apple's API Design Guidelines. Specifics from these guidelines + additional remarks are mentioned below. This guid

LinkedIn 1.3k Nov 25, 2021
this demo use arkit 2.0, realize multiplayer play together! The project refers to the official demo!

ARMultiuser This sample app demonstrates a simple shared AR experience for two or more iOS 12 devices. Before exploring the code, try building and run

null 24 Oct 21, 2021
Czech Republic official iOS app for Covid19 contract tracking. It's the only app in Czechia authorized to use Exposure Notifications API from Apple/Google.

Read our FAQ: Czech, English eRouška (rouška = face mask in Czech) helps to fight against COVID-19. eRouška uses Bluetooth to scan the area around the

COVID19CZ 100 Nov 1, 2021
Official repository for the iOS version of the immuni application

Immuni iOS Documentation | Contributing Table of contents Context Installation Backend services UI testing Checking the build Contributing Contributor

Immuni - Commissario straordinario per l'emergenza Covid-19 556 Nov 17, 2021
SwissCovid is the official contact tracing app of Switzerland.

SwissCovid for iOS DP^3T Exposure Notification App for Switzerland ???? DP^3T The Decentralised Privacy-Preserving Proximity Tracing (DP-3T) project i

DP^3T 152 Nov 15, 2021
WordPress for iOS - Official repository

WordPress for iOS Build Instructions Please refer to the sections below for more detailed information. The instructions assume the work is performed f

WordPress Mobile 3.2k Nov 24, 2021
📱The official Wikipedia iOS app.

Wikipedia iOS The official Wikipedia iOS app. License: MIT License Source repo: https://github.com/wikimedia/wikipedia-ios Planning (bugs & features):

Wikimedia 2.4k Nov 12, 2021
VLC for iOS and tvOS official mirror

This is the official mirror repository of VLC for iOS and tvOS application. You can find the official repository here. It's currently written in Objec

VideoLAN 668 Nov 22, 2021
LinkedIn's Official Swift Style Guide

Swift Style Guide Make sure to read Apple's API Design Guidelines. Specifics from these guidelines + additional remarks are mentioned below. This guid

LinkedIn 1.3k Nov 15, 2021
The official Swift style guide for raywenderlich.com.

The Official raywenderlich.com Swift Style Guide. Updated for Swift 5 This style guide is different from others you may see, because the focus is cent

raywenderlich 11.8k Nov 14, 2021