Audiophile middleware for Windows





What is PcmStreamer?

PcmStreamer is a middleware app that resides between virtual audio card and audio hardware and performs as high quality audio stream tweaker or ensures that the audio stream is bitperfect.

PcmStreamer streams the audio to the audio device (for instance to an ASIO DAC) or to an AoIP device (Raspberry PI 3 or Odroid C2).

All Audio goes through PcmStreamer, including games, web pages and video and of course audio from audio player apps like Roon, JRiver or Foobar2000.

PcmStreamer can also be used for implementing room correction with Room EQ Wizard and correct balance and timing of speakers and other handy features.

There are also several choices for high quality dithering and upsampling.

Features

The PC has a control software that can be used to control the stream output.

Main features:

  • Channel volume, timing and balance.
  • High quality upsampling with 4 different resamplers. (ASIO mode only supports Secret Rabbit Code upsampling)
  • High quality dithering and noise shaping with 6 different methods.
  • EQ that can be used for instance for room correction:
    • 8 filters per channel
    • Supports importing filters from REW
  • Insanely high quality convolution engine for alternative room correction method.
  • Bit perfect -mode where everything that changes the data is turned off keeping everything untouched at bit level.
  • Large, easy-to-use volume slider for changing volume fast.
  • Supports high resolution audio and changes the input sample rate automatically when the source stream changes.

Requirements


  • Virtual Audio Card installed. PcmStreamer supports automatic samplerate detection with VB-Audio Hifi Cable and Virtual Audio Cable (VAC).
  • For Audio over IP: either Raspberry PI 3 or Odroid C2
  • For local Audio playback: ASIO support (supported by audio driver or via Asio4All driver)

Download

Latest version:

Install update on top of older version. If you uninstall old version, you will lose all settings and eq/convolver banks!

  • Link to Odroid C2 image (only needed for Audio over IP): Download
  • Link to Raspberry PI 3 image (only needed for Audio over IP): Download
  • Link to Raspberry PI 4 image (only needed for Audio over IP): Download
  • Link to interfaces.new (only needed for Audio over IP): Download

See Change log


Troubleshooting

If you are having problems after updating to new version, first things to do are:

  1. Click "Reset settings to defaults" in the PcmStreamer Control app.
  2. Check that analyzer is showing output (the VU meters and the graph is animating). If not, reboot the PC too.
  3. Check that the IP of the PcmStreamer device is working, by pinging it. Try rebooting the device.
  4. Still not working, contact me for support.

License

PcmStreamer's binary release is released under MIT License. At this point in time there is no source release.

Contact

If you have questions or suggestions, you can send me email at

elviz 'at' koti 'dot' soon 'dot' fi

You can also contact me through IRC channel

#pcmstreamer at IRCnet

Donate

If you like what i am doing here and would like to show your appreciation in form of donation, you can click on the button below and send me 10.00€ through PayPal.

How to install?

First, you need to determine if you want to use PcmStreamer

  • Just with your USB DAC: Follow sections A and A2
  • With Audio over IP support, DAC connected to a Raspberry Pi 3 or to an Odroid C2: Follow sections A and B.


A1) Installing the PcmStreamer Software.

1) First you need to install a virtual audio driver. Virtual audio driver defines an audio end point where software such as PcmStreamer can connect to and listen to. PcmStreamer supports automatic samplerate detection with VB-Audio Hifi Cable and Virtual Audio Cable (VAC). VB-Audio driver is recommended, since it is used for all the testing. Installation should be very straightforward.

2) Second you need to install the PcmStreamer software. That should be straightforward as well.

3) First time running the PcmStreamer, open the settings panel and set the "audio input device" as the one you just installed in phase 1. You might need to restart the PcmStreamer once.

4) Set the virtual audio device as the default output device in the Windows audio.

If you are going to use the Audio over IP feature, jump to section B1.


A2) setting up the output for local audio device.

1) Set the output type to "ASIO" from top left corner of the PcmStreamer Control (set to "Audio over IP" by default). Click on the button and a pulldown menu opens where you can change the output type. PcmStreamer restarts itself to the changed output type.

2) Set the output device to the ASIO device you have as audio output device. If you don't have native ASIO support in the driver. You need to download and install asio4all and set it up to output audio to your non-ASIO audio device. (At some point WASAPI output will be supported.)

3) Set the buffer size to a suitable value. First try the 2048, its easiest for the processor, but it has the highest latency.

Thats it. You should now hear audio. If not, contact me.


B1) Setting up the Odroid C2/Raspberry PI 3

Requirements:

- Raspberry PI 3 or Odroid C2 mini computer.

- 16GB SD card

- USB memory card for changing the device IP


Device preparation

1) Download the PcmStreamer image file for your Raspberry PI 3/Odroid C2 from the download section above.

2) Download image writing tool (Etcher).

3) Write the image file into the SD Card.

4) Put the SD Card into the device.

5) Connect the audio device to the first USB port.

6) Connect the LAN cable.

7) Power on the device.


Note! PcmStreamer uses static IP and if you don't like the default IP you need to change the IP.

Default IPs for the devices

Raspberry PI 3: 192.168.137.20

Odroid C2: 192.168.137.50


Changing the device IP

The IP is changed by providing a file called "interfaces.new" in a USB drive root directory.

Here is an example of the contents of the "interfaces.new" file:

------start interfaces.new-------

source /etc/network/interfaces.d/*
# wired adapter #1auto eth0allow-hotplug eth0iface eth0 inet static address 192.168.137.50 netmask 255.255.255.0 gateway 192.168.137.1 broadcast 192.168.137.255 dns-nameservers 8.8.8.8 8.8.4.4
# Local loopbackauto loiface lo inet loopback

------end interfaces.new-------

1) Copy/paste text above and modify it for your purposes.

2) Set the "address" to the IP you want for the device.

3) Leave the netmask unchanged.

4) Set the gateway to the address of your router or PC (straight connection) and change the broadcast address accordingly.

5) Then save it into a text file called "interfaces.new" in an USB drive root directory.


6) Power on the device and wait for 30 seconds for the device finnish booting.

7) Unplug the network cable and the USB audio device.

8) plug the USB drive to the device and wait for 30 seconds for the changes to become effective.

9) Unplug the USB drive. The IP should be now changed.

10) Plug the network cable. The device should be now ready to use.


Note! Try to ping the device to check if the IP has changed. Sometimes reboot for the device is needed. Sometimes router of PC needs to be rebooted as well.


11) Write the IP into the PcmStreamer Control "Audio over IP" address field and click "Connect".

Everything should work now!