A few months ago I was pointed to J River Media Center as a potential fix for an audio issue I was having. I had changed my connection from my Media PC to my old Panasonic Receiver from using an SP/DIF to using individual analogue phono connections for each of the 5.1 channels. Whilst this allowed me to play the high sample rate audio files I wanted to try without any down-sampling it had a huge disadvantage in that it bypassed all of my receivers processing including its bass management. As my front speakers are small units not capable of producing very low frequencies this is something I rely on to pass the low frequencies to the Sub-Woofer. Without it everything was really lacking bass depth.
Enter J River Media Center (I’ll call it JRMC for convenience.) JRMC is a media player built from the ground up to have great audio. It supports bypassing the Windows Mixer and talking directly to the Sound Driver using a vast array of technologies including ASIO and WASAPI (there is a really good explanation of all these as part of J RIver’s comprehensive Wiki / FAQ http://wiki.jriver.com/index.php/Audio_Output_Modes) and is capable of Bit Perfect output.
It also has built in a very impressive array of high quality Digital Signal Processing – obviously using these is not going to give Bit Perfect sound but some are so advantageous as to make that a non argument in my mind. For me the Room Correction option that allows me to adjust the relative delays and volumes of the speakers precisely and. yes, also allows me to set that all important Sub-Woofer cross-over is just brilliant. One thing to note here even when I switched back to using SP/DIF I found myself turning off my receivers Bass Management and using JRMC’s instead as it is far more precise. In fact JRMC can do virtually anything a good receiver can do so if you had a good Power-Amp your PC could become your Receiver and Pre-Amp.
One reason this article has taken a while to come out is that I have done extensive double blind testing to prove that the immense improvement in Audio Quality I was hearing using J River wasn’t just down to placebo effect of it being something new. That testing has shown that I , and others, can clearly hear and identify when JRMC is being used to play back music as opposed to Windows Media Player, Windows Media Center or even VLC. That is all double blind testing can prove but subjectively we also all agreed that JRMC sounded not just different but better.
I would be remiss not to mention that JRMC does a lot more than just audio. Much like Windows Media Player or ITunes it offers full media library management including music, video and pictures.
Its Video support is definitely worth mentioning – using its own Red October technology JRMC takes all the fuss out of media playback by automatically downloading an managing codecs for you http://wiki.jriver.com/index.php/Red_October
This means it can play back virtually any unprotected video file you can throw at it.
It goes one step beyond iTunes and Windows Media Player by also offering TV. This is somewhat limited at the moment, being in my opinion no where near as good as say Windows Media Center’s TV support, but JRMC’s TV Support can really only get better and I am certain it rapidly will. Indeed the whole of JRMC seems to continuously get better with new releases almost weekly often offering up features that have only been discussed in their excellent user forums a few days before.
One thing where JRMC already excels is in it’s playlist support. Quite simply the rules based Playlist generator is second to none. Combined with excellent meta-data handling this is the first product that has ever made it possible for me to generate a playlist of all my music with only music – no spoken word – no languages – no podcasts and to remove any duplicates. Very powerful stuff.
Another thing that JRMC has spot on is it’s DLNA support which is fantastic with great support for transcoding on the fly to allow virtually any source to play on any client – there are some limitations still and it is a shame that the DSP options do not yet work on DLNA streams.
This brings us on to what I consider JRMC’s killer feature – the support of Zones. Any audio output device can be a Zone including any DLNA device on your network. JRMC allows you to play a different playlist on any Zone or to link Zones and play the same play list on all of them. This latter works fantastically and can be used to produce synchronised multi-room output. This works best if you use a multi output card to feed your other rooms. Using DLNA devices introduces quite a bit of lag although JRMC does allow you to adjust the synchronisation between the zones.
This is really powerful stuff (see http://wiki.jriver.com/index.php/Zones) and almost allows you to do your own Sonos equivalent. Of course Sonos has always had one huge advantage over most competitors in its simplicity of control. JRMC can counter here too. J River’s excellent support of third party developers has led to a plethora of third party remote control apps for JRMC. You can get them for iPhone, iPad, Android and, to please TDLMobile’s Jason Coombes, even Windows Phone. The API has allowed these app developers to produce really slick applications which can fully control JRMC even down to what is playing on what zone. Recently most have also implemented the ability to stream to the device from JRiver. I’ll spotlight one of these – JRemote for the iPhone/iPad this is truly an app of beauty. Very similar in layout to Apple’s Remote app for iTunes but infinitely more powerful. It is incredibly responsive never lagging even with a ten thousand title collection.
With all these wonders (and they are wonders) you might be wondering why I still would want to use Windows Media Center (WMC). Is it because WMC has a 10 foot interface. Well truth be told JRMC has its own 10 Foot interface known as Theater View. Whilst not as pretty, to my eyes, as WMC this is pretty powerful and offers some really nice features like Artist Images being displayed as you play music. Where JRMC falls down at the moment is that it hasn’t had the same attention to detail on preventing screen burn-in (or to be more accurate in this day and age image retention) as WMC. As a plasma user with a set that is very susceptible to image retention this is a pretty big issue for me. Indeed it was this issue, and the fact I love the integration of MyMovies into WMC, that prevented me moving to JRMC as my main Home Theater PC interface.
Using WMC for music though simply fell flat after using JRMC and I had to find a solution. I also am a big Spotify user and I needed a way to play that using the JRMC playback engine as well (JRMC does natively support some internet audio sources including SHOUTcast and Last.Fm but not Spotify (at least not yet))
Fortunately JRMC does provide a rather fabulous feature known as WASPI Loopback. Basically this is a poor man’s virtual soundcard. To use this you need to open live://loopback as the source in a JRMC zone then anything played to the default windows sound card will also be played to the Sound card associated with the zone in JRMC using all of JRMC’s wonderful Room Correction etc.
Of course this could get messy if the device you were playing to in JRMC was the the same one windows has as default. Fortunately I have two sound cards in my setup – an Asus Xonar PCI card which is what I have connected to my receiver and an internal card which isn’t connected to anything at all. So what I currently do is to set the internal card as the Windows Default Soundcard but have a zone in JRMC point to my Xonar card. As long as I play live://loopback in JRMC on that zone all sounds played in windows be they from WMC or Spotify will be played to the internal card (which is of course silent) and then magically be played by JRMC out of the Xonar with proper bass management.
I’ve tweaked this setup a bit for convenience. I have a playlist with live://loopback in it which is the default for the Xonar zone and I also have JRMC run at start-up in its service mode which hides it in the system tray. I also have JRMC set to autoplay the last playlist on startup. This way when I reboot the Wasapi Loopback is always ready to go and makes Windows Media Center and Spotify sound simply great.
I really love the fact that JRMC have thought to include this feature – although they do still class it as experimental and I know are looking at improving it. One caveat on this setup – JRMC has another pretty wonderful feature which allows you to encode any source to DolbyDigital on the fly but unfortunately at the moment this does not work with the Waspi Loopback feature. I asked a question about this issue in J River’s Interact forums and got an almost immediate reply from Matt one of the developers – superb customer service.
I can reproduce it not working too well when it’s encoding to Dolby Digital for output.
For now, I think this is just a limitation of our loopback system.
With that said, I’m hoping to come back to loopback / line-in in the not too distant future and fix the rough edges like this and make the features easier to find and use.
All in all I’m hugely impressed with J River Media Center and when combined in this way with my preferred 10 foot interface this truly the best of all worlds.
It should be noted that this write up is based on J River Media Center version 17. www.Jriver.com The current price is $49.98 and in my mind is really worth it but no need to listen to my mind there is a free trial so you can test it out for yourself.
In the meantime I have no hesitation in awarding JRiver Media Center
{"id":null,"mode":"button","open_style":"in_place","currency_code":"GBP","currency_symbol":"\u00a3","currency_type":"decimal","blank_flag_url":"https:\/\/thedigitallifestyle.com\/w\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/thedigitallifestyle.com\/w\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":500,"top_media_type":"none","featured_image_url":false,"featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":true,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Leave a tip","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"TheDigitalLifestyle.com","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"TheDigitalLifestyle.com","form_subtitle":null,"currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thank you for being a supporter!","payment_confirmation_title":"TheDigitalLifestyle.com","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much would you like to tip?","initial":{"instruction_type":"normal","instruction_message":"How much would you like to tip? Choose any currency."},"empty":{"instruction_type":"error","instruction_message":"How much would you like to tip? Choose any currency."},"invalid_curency":{"instruction_type":"error","instruction_message":"Please choose a valid currency."}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"How often would you like to give this?"},"success":{"instruction_type":"success","instruction_message":"How often would you like to give this?"},"empty":{"instruction_type":"error","instruction_message":"How often would you like to give this?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}