Computer Audio Asylum

cPlay - the open source high-end audio player using ASIO

198.54.202.234


[ Follow Ups ] [ Post Followup ] Thread: [ Display  Email  Next ] [ Computer Audio Asylum ]

This Post Has Been Edited by the Author

cPlay

The open source high-end audio player using ASIO

May 2008

cPlay delivers high quality audio playback using ASIO (version 2.0). Playback is achieved using any ASIO compatible soundcard. cPlay is a minimalist audio player using the latest high quality SRC upsampler (Best Sinc SNR 145.68db or 121.33db). cPlay’s design offers state-of-the-art ASIO-only playback and caters for touch screen users. Installation, setup and use is easy. cPlay has been built in c/c++ and operates on Windows XP SP2 Professional (32 bit).

FEATURES

  1. Upsampling is sourced from LibSampleRate (version 0.1.3) under GNU GPL license. This is SRC (Secret Rabbit Code) and supersedes the version as used in foobar2000. Best Sinc converter now offers a SNR of 145.68db or 121.33db (versus 97db). Upsampling can be bypassed.

  2. Supports Steinberg’s excellent ASIO 2.0 and is backward compatible to prior ASIO versions (as required by ASIO drivers).

  3. Offers high quality 64 bit double precision digital volume control (in 0.5db steps). This can be bypassed.

  4. Playback is achieved through .cue or .wav (16 or 24bit) files. cPlay loads entire .wav into RAM before starting. Playback is done directly from cPlay’s internal buffer which can support files up to 1GB. Sufficient available RAM is required. Cue playback requires .cue files as created by EAC (single or multi file standard).

  5. Ensures efficient CPU resource utilization allowing for low specification processors or high levels of upsampling. This means CPU’s can be underclocked / undervolted.

  6. Supports up to 8 ASIO soundcards with each having up to 100 output channels.

  7. Advanced optimizations are applied (if available from ASIO driver) during playback.

  8. Best results achieved when using cMP (i.e. cMP˛). This allows for low level Windows optimizations. Use cMP release 1.0 final or later – this allows for bypassing RAM load in cMP (set RAM Load in cMP Settings to No) otherwise wav file is RAM loaded twice. cPlay allows for both svchost and lsass to be suspended during playback thus reducing the Windows footprint. Only exception is EMU’s ASIO driver which requires both (svchost and lsass) to be operational. Set cMP’s ‘Optimize’ setting to ‘Critical’.

  9. Full remote control is achieved with cMP: offering volume control, track navigation, next/previous and stop/eject via (wireless) mouse.

USER MANUAL

Main

Main screen offers essentials only. Large buttons and fonts makes for excellent touch screen friendliness and operating from a distance. cPlay's desktop icon is used for initial setup and playback. Alternatively, play audio as follows:

  1. Select .cue or .wav file from File Explorer (double-click on .cue starts cPlay)
  2. Select 'Open With' (right-click on file to be played)
  3. Select cicsPlay

Playing audio with RealTime priority:

  1. Select .cue or .wav file from File Explorer
  2. Select 'Open With' (right-click on file to be played)
  3. Locate and select 'cicsPlay.bat' where cPlay was installed (default is 'c:\program files\cics Play'). Note: If you did NOT use the default install folder, edit cicsPlay.bat and correct the path. Hint: use command 'dir *.* /x' to identify folder's DOS shortname.




RAM load takes ~15 seconds for a typical CD. Using RAID 0 and /or high throughput HDDs will yield faster RAM load times.

Settings

Bottom left button in main screen brings up cPlay’s settings. ASIO settings button below depends on ASIO driver – Juli@ has no effect whilst RME, EMU and ASIO4ALL gives access to ASIO control panel of driver. cPlay offers 2 channel output mapping only (this is a deliberate design choice).




For changes to take effect, a restart is required. ASIO changes (from cPlay or external) will cause cPlay to stop (and a restart is required). This is an important safety measure.

When changing rates (e.g. 96 to 44.1), some ASIO soundcards will re-map its channels – cPlay tries to detect this (depending on ASIO driver) and informs you to reset left & right channels. Why? Soundcards using the ADAT interface use channel multiplexing (i.e. 96k gives 2x48k...) hence channels change with rate.

cMP setting disables file browse button (to prevent indefinite waits in cMP˛).

Using AWE
Physical RAM allocation method is used (for WAV RAM LOAD). This advanced technique requires LOCK privilege setting! AWE stands for Address Windowing Extensions - allocation occurs directly (system available RAM drops immediately). Windows may NOT allocate all 'Available RAM' - in which case, cPlay reverts to standard approach

Diagnostics will show whether AWE was successful at RAM allocation. Process Explorer or Task Manager will not show RAM allocated to cPlay's working storage, instead you'll see the reduction in Available RAM.

Make sure you have LOCK privileges set on your computer. Windows will not offer all "Available RAM" for AWE - in which case cPlay reverts to standard allocation. Adding additional RAM will prevent this. AWE offers the potential to load up to 4GB of RAM - not tested.

How 2 set LOCK privilege
Perform these steps exactly:

  1. Start Menu > Run > enter "mmc" > OK button
  2. File > Add/Remove Snap-in > Add button
  3. Select "Group Policy Object Editor" > Add button
  4. Finish button
  5. Close button
  6. OK button
  7. Local Computer Policy > Computer Configuration > Windows Settings > Security Settings > Local Policies > select "User Rights Assignment"
  8. Double-click "Lock pages in memory"
  9. Add User or Group button
  10. Object Types... button
  11. check Groups > uncheck Built-in security principals & Users > OK button
  12. Enter "Administrators" under "Enter the object names to select" > OK button
  13. Apply button > OK button
  14. File > Save
  15. File > Exit
  16. Reboot

Lock privilege is now enabled. If this is not done, cPlay will fail on AWE and revert to standard RAM allocation.

SRC @145.68db SNR
cPlay can use the CPU intensive 145.68db SNR upsampler. Diagnostics will reflect 'SRC(0, [rate])' to show converter being used. A word of caution: do NOT attempt to use this on lightweight processors (anything less than E4xxx Core 2 Duo processor). A minimum of 2MB L2 cache is required. For example, the E2140 (1MB L2 cache) and Pentium 4 3GHz (1MB L2 cache) can only accomplish 44.1->48 - anything beyond this results in a locked/slow computer. There's a tradeoff here: more CPU power means more electrical inteference (and increased power consumption) thus reducing benefits of superior upsampling.

The E6300 (2MB L2 cache, 1.86GHz) processor just manages to cope with 192k upsampling with CPU load at ~93% (individual CPU core). There's no chance for undervolting / underclocking. cMP˛ using this setup operates with no CPU fan gives CPU temperatures of ~65 celcius - adaquate. In cMP˛, no dropouts occur when Optimize is set to Critical. Upsampling to 96k may allow for undervolting / underclocking. Intel's new E7200 (based on 45nm technology) is an excellent choice offering low power consumption and brutal performance. See here for more details.

Keyboard Actions

Diagnostics

Incredible detail is provided when diagnostics is activated. Also, when cPlay encounters an error, diagnostics is displayed – it’s always a good idea to scroll to the bottom for important messages.

Here’s the initial startup diagnostics using Juli@:




Both Player (cPlay) and Driver (Juli@) support ASIO version 2.0. Latency at ‘preferred buffer’ level matches output latency (48 samples), output ready & hardware optimizations are done. Any advantage of RME’s off-host processing is negated here. Juli@ passes with flying colors!

For RME HDSP9652:




Disappointing to see only support for ASIO 1.0 and actual output latency differs from preferred buffer latency - it’s worse than Juli@. Ideally, both output and buffer latencies should be the same. Output ready & hardware optimizations are done.

For EMU 1212M:




This soundcard offers poor latency of 2ms (at any sample rate), preferred buffer latency doesn’t match output latency and no hardware optimization supported. Note that if you have an EMU card installed, do NOT disable it (in device manager) as this causes instability (as drivers remain operational)!

GETTING STARTED

Download cPlay’s installer from sourceforge here (1.2MB). Installation and startup is straight forward.

If you don’t have an ASIO compatible soundcard, use ASIO4ALL. Note that ASIO4ALL does not support channel mapping (use default) and can only handle up to 48k sample rate.

Your feedback will help guide cPlay’s future development. Source code (4.1MB) is available via email.




Edits: 05/05/08   07/12/08

Follow Ups: