This page provides information and links for a couple of RISC OS audio applications I’ve produced for test/demo purposes. They are intended for use on machines like the ARMiniX or PandaRO based on new hardware like the PandaBoard which can support 88.2k and 96k sample rates for their audio output hardware and illustrate the use of improved methods for ‘upsampling’ and digital filtering. The two applications can be downloaded from the links below.
DRplayer. (22k zip). This will let you play 44.1k and 48k LPCM wave files on your ARMiniX using a selection of ‘upsampling’ methods. The result should be better sound quality with reduced levels of ultrasonic hash.
WAVUpsampler (15k). You can use this to generate x2 upsampled wave files from 44.1k and 48k wave source files. The result can then be played using the usual players like !PlaySound or !DigitalCD with the machine’s system sample rate set to the appropriate high value.
The above are versions 1.02, updated on 25th September 2013. These have some bugfixes and improvements over earlier versions. I also added the Causal filter for version 1.02. For obvious reasons these applications aren’t much use on older machines that can’t support the high sample rates!
The graph above illustrates the relative effects of the different forms of upsampling. In this case the plots show the result when the input was a 44.1k wave file of white noise. This means that the ideal output would have a flat (horizontal) response at about -52 dBFS for all frequencies up to 22kHz. Above 22kHz there should be no output at all!
The default method RO normally employs for such resampling is linear interpolation. This has two unwanted effects. It rolls away the high frequencies of the wanted audio, as if an amplifier with tone controls was being used with its ‘treble’ control wound down to muffle the sound slightly. It also produces a large amount of unwanted distortion (aliasing) components in the region above 22kHz which should not be present. Even if not directly audible, this unwanted ultrasonic contribution may upset following amplifiers, speakers, etc, so they don’t work as well as intended.
The sinc and Hamming (modified sinc) TDF (Transverse Digital Filter) processes give a flatter response in the wanted audio region below 22kHz and reduce the amount of unwanted ultrasonic distortion. The Causal filter has an impulse response with no ‘pre-ringing’ and is felt by some audio fans to be “more natural” than the other methods.
If you use !DRplayer or !WAVUpsampler you can try out the TDF processes and compare them with the basic linear interpolation. With the Hamming option this should give about the best results ever yet obtained from a RISC OS machine! But you can compare them for yourself and choose what you prefer.
I’ve included the source code so anyone who is interested can examine how this is done and experiment for themself. There is also a !Help file inside each application.