Here is why ASIO in PortAudio won't work for us.
Read the first paragraph on the last page under ASIOHost: The Free Version.
Right explains a lot, I was told long ago full ASIO support required paying the license fees which all the folks doing DAW's do, and apparently
ARTA does. OTOH there are USB devices that do 24/96 via their regular drivers, it just takes careful testing of each combination. I keep running into this, you need to dump the binary data and examine it, no applications ever post a warning that you are not getting what you think you are.
EDIT - AFIAK ASIO has outrun any patent protection so reverse engineering is fair game at this point.
Last edited:
The Steinberg ASIO licensing agreement can be found here: https://www.amanero.com/oscaudio812/Steinberg ASIO Licensing Agreement.pdf
At the bottom of page 2, it says there are no fees to use the technology.
Where there may be a problem is a conflict between GPL and Steinberg licensing:
https://forum.juce.com/t/gpl-and-asio/9035
At the bottom of page 2, it says there are no fees to use the technology.
Where there may be a problem is a conflict between GPL and Steinberg licensing:
https://forum.juce.com/t/gpl-and-asio/9035
Last edited:
The Steinberg ASIO licensing agreement can be found here: https://www.amanero.com/oscaudio812/Steinberg ASIO Licensing Agreement.pdf
At the bottom of page 2, it says there are no fees to use the technology.
There's a real conflict to sort out, both linked texts are very clear as to what they state. IME folks doing open source software take the low road to avoid conflict when they could probably do whatever they want with no repercussions.
Last edited:
OTOH there are USB devices that do 24/96 via their regular drivers, it just takes careful testing of each combination. I keep running into this, you need to dump the binary data and examine it, no applications ever post a warning that you are not getting what you think you are.
USB Audio Class 1 (UAC1) supports sample rates to 96K using adaptive and async interfaces . Windows natively supports this. But Windows does not natively support UAC2 with the higher sample rates etc. That's where some of the 96K limitation starts. Windows audio spec also doesn't support 176K or anything higher than 192K. Most vendors look at that spec (AC '97 and subsequent specs) and provide as little as needed. You can implement USB UAC1 adequate to Windows using Full Speed (12 Mbps) USB. Anything more really requires high speed and gets more costly. Today either XMOS or CMedia have simple solutions to get on the air and driver solutions to support them. Still costly compared to prices and margins in the PC market.
There's a real conflict to sort out, both linked texts are very clear as to what they state. IME folks doing open source software take the low road to avoid conflict when they could probably do whatever they want with no repercussions.
Audacity offers instructions for compiling Audacity with ASIO. Seems like a lot of hassle but its possible.
Audacity offers instructions for compiling Audacity with ASIO. Seems like a lot of hassle but its possible.
David posted that the free ASIO does not support 24 bits so why bother.
The Steinberg ASIO licensing agreement can be found here: https://www.amanero.com/oscaudio812/Steinberg ASIO Licensing Agreement.pdf
At the bottom of page 2, it says there are no fees to use the technology.
Where there may be a problem is a conflict between GPL and Steinberg licensing:
https://forum.juce.com/t/gpl-and-asio/9035
The main purpose of the license is to minimize or illuminate legal liability of Steinberg.
I can't see Steinberg giving license to an uninsured individual. A corporation by law must have liability insurance. If the SW caused damage to someones system or loss of revenue because of failure and me and you being uninsured, a person or corp could go after Steinberg's insurance instead.
I have read from third party that the license is mostly about liability. Steinberg has made a ton of money off ASIO in free advertising.
Scott you gave me an idea when you mentioned running a convertor on serial com USB CDC.
Better yet is to use WINUSB services in USB vendor mode, USB high speed.
I've got a 200MHz microchip micro on dev board here that supports USB high speed.
I'm going to set it up and do some bandwidth tests. If the BW is suitable then I will use this with a convertor and bypass win audio altogether. I might be ably to use PortAudio jack to connect a buffer back to win audio on the win side. Then all the win apps will work.
I was looking at the code for PYaudio, It's half a page long. Nothing to it.
Should be a interesting experiment.
Better yet is to use WINUSB services in USB vendor mode, USB high speed.
I've got a 200MHz microchip micro on dev board here that supports USB high speed.
I'm going to set it up and do some bandwidth tests. If the BW is suitable then I will use this with a convertor and bypass win audio altogether. I might be ably to use PortAudio jack to connect a buffer back to win audio on the win side. Then all the win apps will work.
I was looking at the code for PYaudio, It's half a page long. Nothing to it.
Should be a interesting experiment.
A corporation by law must have liability insurance.
In California? I don't think so.
https://www.sba.gov/managing-business/running-business/insurance/business-insurance
Actually, I know of of one company that won't do business with companies carrying less than $4 million liability insurance, and they need to see proof of that insurance before they will order even a 10 cent item from said company. Only the largest vendors carry so much insurance, so many vendors are excluded, including many corporations.
Last edited:
To achieve maximum speed with USB, its important to limit each USB hub port to one device. In many computers, some USB hub ports are loaded with miscellaneous internal devices on the motherboard. Those same ports may also be shared with external USB device connectors. To help out, there are utilities to look at USB port usage, such as this one from Nirsoft: View any installed/connected USB device on your system
Sometimes, the only way to figure out what hub port is connected to what external connector, is to plug in a device and watch a USB monitor program to see what changes. By such means, it is possible to map external ports to particular hub ports.
I vaguely seem to recall one time having to use a whole dedicated USB hub in a computer to keep up with a very fast USB device. Since I had two such external devices to connect to that one computer, I had to install a PCI USB expander board to accommodate the 2nd fast USB device, even though there were still some unused external USB connectors built in to the computer. The remaining built in connectors were all shared with internal devices which slowed down the maximum remaining throughput for their corresponding hubs.
Sometimes, the only way to figure out what hub port is connected to what external connector, is to plug in a device and watch a USB monitor program to see what changes. By such means, it is possible to map external ports to particular hub ports.
I vaguely seem to recall one time having to use a whole dedicated USB hub in a computer to keep up with a very fast USB device. Since I had two such external devices to connect to that one computer, I had to install a PCI USB expander board to accommodate the 2nd fast USB device, even though there were still some unused external USB connectors built in to the computer. The remaining built in connectors were all shared with internal devices which slowed down the maximum remaining throughput for their corresponding hubs.
Last edited:
Actually, now that I think about it a little more, there has to be one hub port per connected device. I don't think ports can be shared, only hubs. But hubs do, again, as I recall, have throughput limits, much of which can but used up by a single device connected to one port. Therefore, one hub per high speed device may be needed. Sorry for any confusion.
Just to fill in the original story, the high speed USB devices I was connecting were DVI frame grabbers to USB2. Because DVI is so much faster than USB2, the data was compressed, and only delta-data could be maintained in real time (small changes to what was being displayed on the DVI device). Even using those methods, it took a dedicated USB2 hub per frame grabber to prevent errors.
Just to fill in the original story, the high speed USB devices I was connecting were DVI frame grabbers to USB2. Because DVI is so much faster than USB2, the data was compressed, and only delta-data could be maintained in real time (small changes to what was being displayed on the DVI device). Even using those methods, it took a dedicated USB2 hub per frame grabber to prevent errors.
Last edited:
Trick #1 lower the level. I find -15 dBFS to -20 dBFS gets the best results.
Trick #2 get as much hum out of the card as you can. The balanced to differential helps a lot. The hum and noises dominate the distortion readings
Trick #3 waste a lot of time f'ing around with it. Even the host PC makes a difference if the supplies are poor or the noise level is really high. The three cards you tried I have not. The Asus Xonar DX is the first Asus and that only because of the low profile.
The pro cards tend to be better executed for whatever reason. Probably because they will get flack from users faster.
Man, you are even more right than I originally thought... It took me two nights of tweaking the best card I had around (M-Audio Audiophile 192) to get the best out of it. This card has balanced in/out, so I had to use balanced to single ended cables for calibration. Measurement is taken in full differential mode. Original op amps (the ubiquitous SOIC 5532, 11pcs) were all replaced with LM4562.
0.00015% THD (-116dB) and 0.0035% (-90Db) THD+N both @1022.43 Hz and 48KHz sampling rate and 131072 FFT. I selected this odd frequency because it matches the best TwinT I was able to put together (-87dB attenuation), using C0G 100nF sorted and 0.1% metal film resistors, not used here), also wanted to see other artifacts which are at even frequencies. Cursor is on the 3rd harmonic.
You can see the 1KHz multiple artifacts, originating/radiated from the USB 1mS frame rate (much attenuated, due to the balanced I/O) which seems to be unavoidable on this PC (got these artifacts on all sound cards I tried, PCI, PCIe, USB). Only placing the USB card 2 meters away from the PC makes these artifacts vanish in the noise floor. The rest of the grass (at -135dB) over the noise floor (-143dB), I don't know, all I can tell it's not related to the mains frequency. Since their amplitude depends on the input signal amplitude, they could be some intermodulation products, but I'm speculating.
One to another, not to bad for a 10 quid old card salvaged from junk (I think it was well over a ton when new and current). Other than the Asus Essence STX (which sorely misses balanced I/O, though) "they don't build like this anymore", at least not in the same price range. The Asus Essence STX gets the second prize (-108dB THD -82dB THD+N also after replacing the JRC op amps with LM4562 DIPs), everything else (USB cards) are an order of magnitude worse.
Last comment, to my surprise, although the M-audio ASIO drivers have a horrible reputation (and the 64 bit version for the Audiophile 192, in particular) it worked for me like a charm with Arta in Windows 10. Asus ASIO drivers are excellent, while the Creative ASIO drivers are indeed a nightmare in terms of stability and usability.
Attachments
I asked an expert about some of the issues that have cropped up
to see if he could shed some illumination on the subject.
Here was his reply:
"Ya' know, we use various electronic systems (amplifiers, filters, A/D
converters, test equipment, etc.) to perform various signal processing
functions. But inside those hardware systems all manner of subtle,
interacting, and mildly nonlinear effects are taking place. It's difficult
to explain the behavior of complicated electronic systems when you're
measuring very small-amplitude signals. That's because our measuring
devices are not perfect, not "ideal."
I wish those guys Good Luck."
Cheers,
to see if he could shed some illumination on the subject.
Here was his reply:
"Ya' know, we use various electronic systems (amplifiers, filters, A/D
converters, test equipment, etc.) to perform various signal processing
functions. But inside those hardware systems all manner of subtle,
interacting, and mildly nonlinear effects are taking place. It's difficult
to explain the behavior of complicated electronic systems when you're
measuring very small-amplitude signals. That's because our measuring
devices are not perfect, not "ideal."
I wish those guys Good Luck."
Cheers,
If moving the USB card away from the PC reduced the interference it may not be from USB. I'm not sure what would cause mid-band interference. Power line stuff (except X10) is all above 50 KHz and up to 30 MHz. Switching supplies the same. Video in the days of LCD's is different in interference but less of it and its all above 32 KHz.
is there a spinning disk in the box (grasping at straws)? The other possible cause is the HPET https://en.wikipedia.org/wiki/High_Precision_Event_Timer something else to loose sleep over but be helpless to do anytjhing about. A third remote possibility is the sound card buffers, usually 2 circular buffers in ram to isolate the audio stream from the latency in data sources and destinations and something that audiophiles refuse to believe in. . .
I think a lot of the complaints about ASIO execution is in the DAW software implementation. its easier to point at a sound card than admit you didn't get it right. Of course, getting 32 channels to work is lots harder than 2 or 4.
It is so time consuming to verify the existence of not much. The next dB will take almost as long.
is there a spinning disk in the box (grasping at straws)? The other possible cause is the HPET https://en.wikipedia.org/wiki/High_Precision_Event_Timer something else to loose sleep over but be helpless to do anytjhing about. A third remote possibility is the sound card buffers, usually 2 circular buffers in ram to isolate the audio stream from the latency in data sources and destinations and something that audiophiles refuse to believe in. . .
I think a lot of the complaints about ASIO execution is in the DAW software implementation. its easier to point at a sound card than admit you didn't get it right. Of course, getting 32 channels to work is lots harder than 2 or 4.
It is so time consuming to verify the existence of not much. The next dB will take almost as long.
0.00015% THD (-116dB) and 0.0035% (-90Db) THD+N both @1022.43 Hz and 48KHz sampling rate and 131072 FFT. I selected this odd frequency because it matches the best TwinT I was able to put together (-87dB attenuation), using C0G 100nF sorted and 0.1% metal film resistors, not used here), also wanted to see other artifacts which are at even frequencies. Cursor is on the 3rd harmonic.
. The rest of the grass (at -135dB) over the noise floor (-143dB),
.
Not going to be able to measure david's generator, yet.
-RNM
Not going to be able to measure david's generator, yet.
-RNM
To avoid confusion, did you fix the scaling on those figures after David himself pointed out the 20dB (IIRC) discrepancy with the Shibasoku output? Waly is measuring a sound card BTW with its own noise and artifacts. Back of the envelope, a passive notch at an impedance level of 1k and in an noise BW of 1Hz should be able to resolve -150dB at the 2nd harmonic but not with 30dB of clearance from the noise floor. There are no Maxwell's demons.
Last edited:
If moving the USB card away from the PC reduced the interference it may not be from USB.
Double checked, this one is, and it is radiated. It happens only on this stand alone PC, which has a cheap no name PCI-USB 4 port extension card, doesn't happen on a laptop with an USB sound card attached, away from the offending PC. I tried and pulled the USB extension card from the PC and the 1KHz hash goes away, THD+N goes down to .0006% (-104dB).
To avoid confusion, did you fix the scaling on those figures after David himself pointed out the 20dB (IIRC) discrepancy with the Shibasoku output? Waly is measuring a sound card BTW with its own noise and artifacts. Back of the envelope, a passive notch at an impedance level of 1k and in an noise BW of 1Hz should be able to resolve -150dB at the 2nd harmonic but not with 30dB of clearance from the noise floor. There are no Maxwell's demons.
guess you weren't paying close attention.
-150 wont get to it either. Need -160 noise floor.
THx-Richard
To avoid confusion, did you fix the scaling on those figures after David himself pointed out the 20dB (IIRC) discrepancy with the Shibasoku output? Waly is measuring a sound card BTW with its own noise and artifacts. Back of the envelope, a passive notch at an impedance level of 1k and in an noise BW of 1Hz should be able to resolve -150dB at the 2nd harmonic but not with 30dB of clearance from the noise floor. There are no Maxwell's demons.
My woraround is high resolution FFT's. The real noise floor is an issue and it seems soundcards are not going to get there in terms of THD+N. Current SOTA SNR/Dynamic range on sound cards seems to be around 122 dB or so. With a good preamp on the output of a passive notch you can get a much lower noise floor but I'm not sure how low. The notch's input impedance needs to be taken into consideration. If it matches the source at the null and increases on either side you get an additional 6 dB of gain on the harmonics over the fundamental, which could lead to incorrect conclusions.
If a source is 600 Ohms what values would get a decent passive notch (bridged T, twin t or Hall?). Its a worthwhile experiment.
- Home
- Design & Build
- Equipment & Tools
- Low-distortion Audio-range Oscillator