Monday, July 4, 2016


Setting Up a Remote Music Listening Zone

I've had two remote listening zones for some time. I've owned a Denon AVR4306 for about 10 years and have used it's zone-2 bridge to two of the 7.1 channels to drive speakers in the living room and patio. I took the output of these channels into an old Adcom GFS-6 speaker switch which then switched the other zones on and off. I drove the Zone-2 of the Denon with an AppleTV usually AirPlaying but sometime using an iTunes direct which allows the AppleTV to play music from an iTunes acting as a media server. The goodness of this setup:
  • Convenient - I didn't need to purchase any new kit. I had wired speakers with a switch and the Denon has lots of power and is able to drive both at same time, though not at the limit.
  • Remote Control - I use an Apple TV (I'm now on version 4 and still very much love it) which I can control with an app on my phone or just airplay to it. I use an app called DeRemote which allowed me to remotely turn on the amp 

The Problem

The "problem" with this setup was precipitated by my upgrade to the Apple TV 4 which connects audio to the Denon via HDMI which is a known weakness of the 4306. The Apple TV 3 used a optical PCM connection for Audio. The failure of the 4306 is its inability to switch audio signals from the HDMI in to the zone-2 or zone-3 pre-amp outputs which means I could no longer pump the audio from the Apple TV through the side channel amps. Sadness. This took me an hour to diagnose and confirmation was found in the manual. It's just not supported. 

My temporary fix was to resurrect the old AppleTV 3 and assign it to another input on the amp, which worked but I was faced with the inability now to play from my Plex Server through the amp because I was relying on the Plex App which runs on the AppleTV 4. Lastly, I was bummed that the 4306 which is a great amp just cannot learn new tricks like handling DNLA, playing directly from Spotify, which I also don't expect Apple to support. I've recently switched over to Plex rather than using iTunes. iTunes was just not keeping up as a media server and Plex is a really good product. I run it on a FreeNAS server I setup and it's well worth the effort putting together.

What I really valued and wanted in my a new setup was to keep great remote control and add all of the new music sources I had like Spotify and DNLA while keeping the AirPlay. 

The New Setup

Given the fatal issue with the Denon pre-amps not being able to handle digital input other than optical PCM, this limited the utility of the Denon since not many media pucks handle optical out, so I started shopping around for a second amp that would handle RCA in which the Denon would handle as well, but the Denon didn't do auto-on so game on. I thought briefly about looking at HDMI out, but that raises the system price a bunch and you trade off quality of the amp for fancier inputs. And I found these other amps were integrated with pre-amps which made for large boxes, neither of which I wanted. What I wanted a really solid amp since that's what I had with the Denon and I was willing to forgo the digital inputs. What I found after a lot of browsing was the Audio Source 100VS. two RCA sources in plus auto-on. 

Next a media puck. There are many options here, but I wanted very specifically AirPlay, Spotify and DNLA which are the three input sources I have. There are still a bunch of choices ranging from $25-$100 or so, but I found a number of good videos and reviews for the Müzo Cobblestone. I liked that it was a Kickstarter project and the team making it is actively engaged with the community to make it better.

Thats it really. The cobblestone does a 3.5mm banana plug to stereo RCA into the Audio Source 100vs. Setting up the Cobblestone is a breeze. I have it wired into my Airport Extreme and it's connected via wifi as well. The Cobblestone app is easy to use and integrates with Spotify transparently. When I got the Cobblestone pugged in, it automatically phoned home and determined that there was new firmware. When I selected to install it, the device announced over the speakers that it was upgrading the firmware. Nice touch. After setting up the Cobblestone, I set the volume to max on the amp and set the volume on the Cobblestone app to about 50%. This is important, your phone is your volume control

To use my new system from the patio, I just need to grab the phone, select an audio source using Spotify, any AirPlay source or the Müso app (for me to play DNLA but Cobblestone is adding more sources continually). I do not worry about whether anything is switched on, the system is fully auto-on. No going to the Denon remote app to turn on the amp and switch on the zone-2 then hitting the Apple Remote app to get the AppleTV to wake up. I just start playing through the Cobblestone, the amp wakes up and I'm good to go. Smiles all around for less than $200 for both the AudioSource amp and the CobbleStone.


The Components for a Full System

Patio Speakers are Infinity Outrigger Jr outdoor speakers which are pretty good for $150. They easily fill the patio with sound and more importantly after 10+ years sitting outside full time, they still sound great and show no real signs of wearing. 

The Amp is the Audio Source 100VS.  Its only rated at 50w but it's really well put together kit, had A+B speakers, two inputs with one having priority and most importantly it has an auto-on feature. You leave the volume at full and plug your controllable source into it. Check out the review by Ken Rockwell (www.kenrockwell.com) I found his site checking out photographic equipment reviews and was impressed by the completeness of the review of the Audio Source amp. This thing is a beast and costs just $130

The Audio Source is the Müzo Cobblestone which started out as a Kickstarter campaign and is a really well thought out and really well supported product. At about $55 this is an awesome buy. It has iOS and Android support and handles Spotify, iHeartRadio (plus many more) and DNLA natively after being given handoff instructions from your phone. The handoff is a cool feature, if you lose WIFI or turn off the phone the Cobblestone keeps playing. What really put me over the top on the decision for the Müzo was the attention to the customers and keeping the product current. They have a Zendesk site where they take bug reports and talk about the new capabilities. They also have built in capability to upgrade firmware and the phone apps are reasonable, not great, but reasonable and that's still far ahead of the current Apple Remote app.



Sunday, November 6, 2011

Remote Control, AirPlay and Content Channels


I've been a fan of the AppleTV square hockey puck since I got it, but what's surpised me is how quickly Apple has improved the system and made it better. The Apple TV has great features by itself; movies, TV shows, internet radio, podcasts, iTunes integration, Netflix, Vimeo & YouTube. I would be completely satisfied with just these capabilities but there are three things that stand out for me that make me believe that Apple could enter the television market in a serious way.


1. Remote control is integrated into all of your other Apple devices. I use both my iPhone and iPad to control my AppleTv all the time, the integration with iTunes is especially fantastic. Sitting outside on the patio and want to queue up some new music? No Problem. Want to change the volume, go right ahead. It's integrated home entertainment automation for the masses. And it's really simple to use.


2. AirPlay, this is my personal favorite now. I have been airplaying audio for some time now, since it is amazingly great to be able to walk in the house listening to something on your phone and then just flip it over to your stereo, but now any app playing or displaying media can project it onto your media center. This is a fantastic ability, it transforms the way you view your content and content on the internet.  No longer is content confined to your mobile devices. Friend comes over with some cool new music or a video they recorded? AirPlay it. Some one send you a link to a video? AirPlay it. This level of integration is really impressive and what's important, completely adictive. I can't wait for more apps to integrate these capabilities and for more devices to be AirPlay compatible. 


3. My love of AirPlay aside,  Content Channels are where I really think Apple is going and what are what will get me to shell out real cash long term. AppleTV currently has subscriptions for the NBA, MLB and NHL. The Wall Street Journal doesn't cost, but it is a channeland I think it's not a long shot to think we might see others like HBO, Stars, ABC, NBC, CBS, FOX showing up in that list of providers. So let's all start thinking of channels as apps with monthly or seasonal subscriptions; available on all of our Apple devices, and now you have a competitive eco-system that will give the Cable and Satelite guys a run for there money. This could seriously disintermediate the cable industry and relegate it to the standing of bit provider. If Apple finds a way to live stream local TV too, they might not just be the next gen content provider, but the dominant one for a long time.

Wednesday, September 28, 2011

Converting seconds to a time value

Had to solve the convert seconds to a formatted string problem. It's been solved many times  before but I needed a slightly different formatting (as is usually the case for your company's app) so had to roll my own


Posted to a StackOverflow question too. You will see the first 3 lines of the function repeated in many solutions. ;)



seconds2time(0)  ->  "0s" 
seconds2time(59) -> "59s" 
seconds2time(60) -> "1:00" 
seconds2time(1000) -> "16:40" 
seconds2time(4000) -> "1:06:40"
function seconds2time (seconds) {
    var hours   = Math.floor(seconds / 3600);
    var minutes = Math.floor((seconds - (hours * 3600)) / 60);
    var seconds = seconds - (hours * 3600) - (minutes * 60);
    var time = "";

    if (hours != 0) {
      time = hours+":";
    }
    if (minutes != 0 || time !== "") {
      minutes = (minutes < 10 && time !== "") ? "0"+minutes : String(minutes);
      time += minutes+":";
    }
    if (time === "") {
      time = seconds+"s";
    }
    else {
      time += (seconds < 10) ? "0"+seconds : String(seconds);
    }
    return time;
}