Page 1 of 1

Recording with ASIO

PostPosted: Sat Apr 21, 2012 6:29 pm
by Glenn
It would be great if this could be implemented in WC. ASIO offers true 24 bit record capability, unlike MME or DS which can pass only the first 16 bits. The difference is audible as a more relaxed, analogue presentation with greater stage depth, and interestingly, lower subjective noise levels.

At the moment I'm using a freeware program that supports ASIO for recording, but I really miss WC's excellent recorder GUI.

PostPosted: Sun Apr 22, 2012 12:36 pm
by Derek
Hi Glenn

First, I don't think it's likely I'll be able to update the recording and playback interfaces. They took many months of work and I don't have the time or inclination to update them Sorry.

Wave Corrector doesn't actually use MME or DS. It uses the original WaveIn/WaveOut API. This, in theory allows the program to talk directly to the soundcard driver, so I'm a little surprised by your comments about 24-bit. So far as I'm aware all 24 bits per sample are passed between the soundcard and the program using WaveIn and Wave Out.

The situation is complicated with Vista and Windows7 because for these OS's the audio interfaces were completely rewritten and the WaveIn/WaveOut API is now only provided on a legacy basis. Si it's possible they've cut some corners in implementing this.

Can you expand a little on your comments and explain the background to your statement that only 16 bits per sample get passed from the soundcard.

all the best

PostPosted: Mon Apr 23, 2012 2:15 am
by Glenn
Hi Derek,

Most of my information is pieced together from different sources, and some of it is speculation. The 16 bit limit is mentioned on the ASIO page at Wikipedia, and repeated on the windows legacy audio page, also at Wikipedia.

The limitation is further hinted at in Audacity's bugs/known issues page. They don't call out MME/DS as the cause, but it uses these API to record. I came across a thread at the Vinyl Engine that discusses this very problem. The use of a hex editor to examine the files is explained, and that the files recorded at 24 bits in Audacity will have only zeros in the last 8 bits.

I used this knowledge to examine a file I recorded in WC when I was having problems connecting WC to the Juli@ s/pdif channels. Without a proper software connection, WC would record a blank file with the meter pegged somewhere just below -90 dB, even though it was set to record at 24 bits. I suspected this was a 16 bit channel as the SNR of a 24 bit file is around -140dB. I opened the recording in the hex editor, and found the first 16 bits were all zeros, with the last 8 containing what I believe is noise or dither of some kind. I'm assuming that if the recording was indeed through a 24 bit channel, that all 24 bits would contain zeros.

Does this make any sense?

The rest is subjective. Playback whilst editing in WC is noticeable poorer than what I heard through the line-out ports during the recording, which sounds like what could be truncation errors. It was the same when I was using the MAudio card, though at the time I was blaming the card.....I had no clue about any of this. Fortunately, it does not affect playback through an ASIO enabled player like cPlay or Foobar 2k.


PostPosted: Mon Apr 23, 2012 8:10 pm
by Derek
Thanks Glenn for the information. It throws some extra light on the problem.

There are some aspects of Wave Corrector behaviour that may have drawn you to an incorrect conclusion::( For display and auditioning purposes, Wave Corrector only uses 16-bit samples. In the case of a 24-bit file, it ignores the 8 least significant bits. This explains the -90 dB limit on the level meters and also why your auditioned audio wasn't as good as you expected it to be. However, this 16-bit limitation has no effect on the audio files produced by Wave Corrector. All filter calculations are done using 32-bit arithmetic and results saved as 16- or 24- bit depending on the sample depth of the file being processed.

Using a hex editor to examine a wave file is a very good way to check whether all the bits are being used. I can't explain the result you saw (8 non-zero bits per 24-bit sample) but I don't think your conclusion was correct..Note, dither would normally only affect the single least significant bit, and certainly not all 8 least significant bits.

I'll continue to investigate this further and let you know if I reach any firm conclusions.

all the best

PostPosted: Tue Apr 24, 2012 1:51 am
by Glenn
Thanks, Derek.

My impression gathered from all the sources I've encountered in the past while have led me to conclude that Microsoft hasn't handled audio very well prior to Vista with WASAPI. There are some who prefer it, but ASIO remains the equal at least, and is more universal, in my opinion.

I look forward to reading your conclusions.