A bare bones framework for audio DSP on a PC

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Hello, I did the required changes in the VC++2010 code, however there is still an error generated by the compiler. See attached .jpg.

Problem seems to be somewhere in :
for (a = 0; name = BASS_RecordGetInputName(a); a++)
{
float vol;
int s = BASS_RecordGetInput(a, &vol);
printf("%d: %s \n", a, name);
}
 

Attachments

  • error line 146.jpg
    error line 146.jpg
    279.1 KB · Views: 211
Last edited:
Hello, I did the required changes in the VC++2010 code, however there is still an error generated by the compiler. See attached .jpg.

Problem seems to be somewhere in :
for (a = 0; name = BASS_RecordGetInputName(a); a++)
{
float vol;
int s = BASS_RecordGetInput(a, &vol);
printf("%d: %s \n", a, name);
}

Hello Steph

I lifted that bit of code straight from one of the supplied BASS examples. It gives me a warning with Codeblocks, but not an error.

I think the solution is to add a (char *) cast in front of BASS_RecordGetInputName - this seems to get rid of the warning for me.

Hope that sorts it for you.

Edit: what sound card will you be using?
 
Last edited:
What sound card will you be using?
Here is the setup I'm using.
This is a notebook computer having the Realtek HD Audio on the mainboard. On such mainboard there are only two outputs (left and right) wired to the external world.

I'm using VAC as virtual sound card driver, collecting the audio that's coming from Winamp (Virtual Cable 1). This is done by instructing Winamp to use the WaveOut modality, with Virtual Cable 1 defined as peripheral where to send the audio.

I'm using ASIO4ALL v2 as Universal ASIO Driver For WDM Audio.

In the ASIO4ALL control panel, I instruct ASIO4ALL to only consider as audio input stream, the audio that's coming from Virtual Cable 1.

In the ASIO4ALL control panel, I instruct ASIO4ALL to only consider as audio output stream, the audio that needs to be sent to the Realtek HD Audio output.

Within Synthmaker, for dealing with ASIO instead of the standard Windows Direct Sound, all you need to do is to select the "ASIO in" module from the toolbox. Drag and drop it on the Synthmaker design sheet. Click on the blue label for activating it. It may not activate until you have placed the "ASIO out" module also. You thus need to select the "ASIO out" module from the toolbox. Drag and drop it on the design sheet. Click the inner label under the "ASIO in" name. When this is done, both the ASIO in and the ASIO out modules inner labels should turn blue (instead of staying gray). The ASIO4ALL status bar should come alive, meaning that Synthmaker said to ASIO4ALL that there is some audio to deal with.

I was expecting to see Virtual Cable 1 delivering two audio streams consisting on the left audio and the right audio (Virtual Cable 1 1, Virtual Cable 1 2), but in reality wiewd from Synthmaker there is a Virtual Cable 1 3 showing also. Don't know if this relates to the lapotop motherboard mike input.

Regaring the ASIO out module, we have HD output 1, HD output 2, ... HD output 8. But as said above, only the two first ones are really there, in hardware, on my laptop motherboard.

The attached VAC+ASIO4ALL.osm does a Linkwitz-Riley delay-compensated crossover (1981 AES Los Angeles Convention).

When you have Winamp, Synthmaker, VAC and ASIO4ALL installed and configured, all you need to do is to double click the VAC+ASIO4ALL.osm file.

When doing so, Synthmaker opens and displays the design sheet. It reads the Virtual Cable 1 1 mono audio channel, then splits it in highpass (HD output 1) and lowpass (HD output 2). On my laptop, lowpass goes to the left speaker, and highpass goes to the right speaker. The "delay" cursor enables to manually control the delay, for exactly matching the lowpass group delay. The "bass" control allows controlling the bass volume, like reducing it for better hearing the audio effect on the highpass when modifying the delay. Clearly there is an optimal value for the delay, and this is precisely what makes the interest of the the Linkwitz-Riley delay-compensated crossover. Using some optimal delay, you can hear the highpass slope increasing. Due to its subtractive structure, the Linkwitz-Riley delay-compensated crossover provides a perfect reconstructed phase. When using a Bessel lowpass instead of a Butterworth lowpass, the relative phase shifts (between lowpass and highpass) in the transition band get very small. In 1999, Berchin theorized such delay-compensated arrangement using different lowpass filters as kernel, including digital lowpass filters that are not realizable using analog, and he provided an optimization avoiding ringing/preshoot and possibly relative phase shifts too. Kind of perfect crossover would you say!

When you have Winamp, Synthmaker, VAC and ASIO4ALL installed and configured, all you need to do is to double click VAC+ASIO4ALL.osm, and the winamp sound should get split the way described above. If you hear no sound you need to check the Winamp and ASIO4ALL configuration, and restart Winamp and Synthmaker. If after checking this you still get no sound, or perhaps a sound that's not processed by Synthmaker, you need to re-instantiate the ASIO in and ASIO out modules, offering your system a chance to properly set the the whole processing instead of re-using someone else's parameters. Delete the ASIO in and ASIO out modules on the Synthmaker design sheet. Save the current .osm under another name. Quit Synthmaker. Reload the .osm (the one without the ASIO in and ASIO out modules). Drag and drop the ASIO in and ASIO out modules on the sheet, the way they used to be. You lost the corresponding wires. Connect the wires the way they used to be. Activate the ASIO modules (click the inner label under the name). Both ASIO in and ASIO out inner labels sould now turn blue. The ASIO4ALL status bar should come alive, meaning that Synthmaker said to ASIO4ALL that there is some audio to deal with. This way your audio system got completely rebuid. After restarting winamp, the sound should get properly processed.

This is the way I checked that my computer had ASIO working, using the motherboard HD Audio.

If the sound gets periodically disturbed by some noise, it means you are running VAC unregistered.
 

Attachments

  • VAC+ASIO4ALL.zip
    11.7 KB · Views: 42
  • VAC+ASIO4ALL Synthmaker schematic with VAC showing.jpg
    VAC+ASIO4ALL Synthmaker schematic with VAC showing.jpg
    223.4 KB · Views: 267
  • VAC+ASIO4ALL Winamp as source.jpg
    VAC+ASIO4ALL Winamp as source.jpg
    282 KB · Views: 201
  • VAC+ASIO4ALL Synthmaker schematic and ASIO4ALL configuration.jpg
    VAC+ASIO4ALL Synthmaker schematic and ASIO4ALL configuration.jpg
    269.9 KB · Views: 246
  • VAC+ASIO4ALL Synthmaker schematic with ASIO ports showing.jpg
    VAC+ASIO4ALL Synthmaker schematic with ASIO ports showing.jpg
    248.6 KB · Views: 177
Last edited:
for (a = 0; name = (char*)BASS_RecordGetInputName(a); a++)

Casting should fix it as CopperTop explained already. It has to do with how strictly the compiler converts types. I'm sure it's adjustable in the compile options somewhere. I was able to compile in MSVC Express 2010 after applying the 2 casting fixes CopperTop suggested.
 
Thanks for your help; I have now the bare bones framework compiling OK, both in CodeBlocks and in Microsoft Visual C++2010 Express.

However they both compile fine, they behave differently when in run mode.

The CodeBlocks app generates the prompts and the reports on the console, on a correct way. This way we get the device list. In the task bar, we see some ASIO activity created by the app. For some reason, on my computer no sound gets generated. The cause may be ASIO4ALL, as I am trying to use the PC motherboard Realtek HD Audio with ASIO4ALL. Instead of using an external sound card having its own ASIO driver.

The Microsoft Visual C++2010 Express app doesn't run properly what's regarding the reports on the console. We don't get the device list. In the task bar, we see no ASIO activity created by the app. And there is no sound generated.
 
Last edited:
A few pictures when compiling on Microsoft Visual C++2010 Express
 

Attachments

  • 3 - MSVC++ no ASIO4ALL activity.jpg
    3 - MSVC++ no ASIO4ALL activity.jpg
    22.1 KB · Views: 51
  • 2 - MSVC++ running but no sound.jpg
    2 - MSVC++ running but no sound.jpg
    63.9 KB · Views: 51
  • 1 - MSVC++ build OK.jpg
    1 - MSVC++ build OK.jpg
    52.5 KB · Views: 55
  • 0 - MSVC++ how to include bass.h and bassasio.h.jpg
    0 - MSVC++ how to include bass.h and bassasio.h.jpg
    272.6 KB · Views: 40
A few pictures when compiling on CodeBlocks
 

Attachments

  • 0 - CB how to include bass.h and bassasio.h.jpg
    0 - CB how to include bass.h and bassasio.h.jpg
    229.2 KB · Views: 50
  • 1 - CB warnings at build.jpg
    1 - CB warnings at build.jpg
    114.3 KB · Views: 39
  • 2 - CB running but no sound.jpg
    2 - CB running but no sound.jpg
    94.9 KB · Views: 48
  • 3 - CB ASIO4ALL activity when running.jpg
    3 - CB ASIO4ALL activity when running.jpg
    49.2 KB · Views: 50
  • CopperTop.zip
    330.6 KB · Views: 35
I have problems with CM6206-based External USB Sound Cards operating under ASIO4ALL. I fail to individually access the 6 or 8 channels.

The CM6206 chip is a modernized version of the CM106 chip.
The Trust SC-5500P 5.1 External USB Sound Card has a CM106 inside.

On my WinXP SP3 computer, I have installed :

- a CM106-based Trust SC-5500P 5.1 External USB Sound Card
- a CM6206-based Sweex 7.1 External USB Sound Card
- a CM6206-based 5.1 External USB Sound Card "China import".

All three sound cards come with nearly the same setup utility for Windows. Of course those setup utilities are not involving ASIO4ALL. After rebooting the computer one should see a new icon in the Windows task bar, if there is a USB sound card plugged in. This gives access to a Windows utility enabling to decide how many output channels must be in use and enabling to identify the audio outputs individually (first tab), and a volume controller/mixer (second tab). For the three different sound cards (Trust, Sweex, China import), all channels are there, without crosstalk. Looks thus encouraging, of course this is management under WDM, not under ASIO4ALL.

Let's now see how it works under ASIO4ALL.

In the Windows System Control panel, I de-activated the onboard Realtek HD Audio sound hardware. This way ASIO4ALL should not mess with the motherboard Realtek HD Audio harware.

Of course I have ASIO4ALL installed.

I then installed ASIOSigGen (free utility easy to find on the web).
Sending a 60 second -12 dB white noise, selectively to channels 1/2, 3/4, 5/6 or 7/8.

This is where it gets interesting.
ASIOSigGen results are perfect using the CM106-based sound card (Trust SC-5500P).
ASIOSigGen results are a mess using the CM6206-based sound cards (Sweex and China import). When sending to 1/2, all outputs gets energized. When sending to 7/8, not only 7/8 gets energized, but 5/6 also.

I did a few channnel 1/2, 3/4, 5/6 and 7/8 tests using Synthmaker and ASIO4ALL.
The results are the same as above. The tests run fine on the CM106, and run messy on the CM6206 (channel 1/2 energizes all channels, as example).

I did a test using the CopperTop CodeBlocks code, hoping the CM106 would work. Unfortunately the CM106 remains muted. The CM6206 also remains muted.

Do you know some multichannel External USB Sound Cards operating under ASIO, not ASIO4ALL? Delivered with a good ASIO driver? Which one would you recommend?

P.S.
In the CM106 Windows utility, a huge mishap occurs regarding the line-input as soon as the volume wheel gets hit (second tab - mixer). Turning the volume wheel, there is some weird internal mixing occurring inside the CM106, kind of analog loopback, taking the line-input (left and right), copying it to output 1/2 (front left and front right).
The only way I found for getting rid of the loopback, is pull out the USB plug, then plug it in.
The CM6206 situation is worse. The infamous loopback is always there, even before you turn the volume wheel in the mixer tab.
I have the impression that my computer gets crazy about all those USB sound cards. Later on, I'll try with another computer, and see if such loopback shows.

A few attached .jpg
 

Attachments

  • 9 - CB with CM106 (Windows utility - mixer).jpg
    9 - CB with CM106 (Windows utility - mixer).jpg
    88.4 KB · Views: 142
  • 8 - CB with CM106 (Windows utility - identify channels).jpg
    8 - CB with CM106 (Windows utility - identify channels).jpg
    91.4 KB · Views: 97
  • 7 - CB with CM106.jpg
    7 - CB with CM106.jpg
    92 KB · Views: 86
  • 6 - CB with CM106 with ASIOSigGen (taskbar and ASIO).jpg
    6 - CB with CM106 with ASIOSigGen (taskbar and ASIO).jpg
    64.1 KB · Views: 121
  • 5 - CB with CM106 test with ASIOSigGen.jpg
    5 - CB with CM106 test with ASIOSigGen.jpg
    87.8 KB · Views: 68
Last edited:
I like the idea of the ASIO signal generator. Unfortunately I have very little experience with USB sound cards, except for a little TI-based board I had, that sent damagingly-loud thumps to the speakers whenever unplugged, or the PC powered down.

For what it is worth, my advice would be to buy a secondhand Dell GX520 minitower (near silent) with Windows XP for literally 40 euros including P&P off eBay, and a Creative X-Fi card (not 'Xtreme Audio' which is not a true X-Fi card) for about the same price. Then, when that setup is working, upgrade to the better sound card etc.
 
My understanding is that USB 1.1 supports only 2 channels of audio.
"Multichannel" USB1.1 devices send 2 channels(L&R) over the wire, then a processor inside the box does a Surround sound conversion and you magically get 5.1 channels.

So if you want to use USB you need a USB 2.0 device which can support multichannel audio (or Firewire). Those devices are much more expensive and require custom drivers so they are not exactly plug and play. Fortunately the custom drivers usually include multichannel ASIO support.

I suspect that the ASIO4ALL driver just shows multiple channels but has no way of sending data to them.
 
cm6206 supports 8 simultaneous 48/16 channels which is still within USB 1.1 capacity. This is what a cheap cm6206-based usb card with 8 channels (6 analog plus 2 spdif) reports about its capabilities in linux:

Code:
pavel@nahore:~$ cat /proc/asound/card3/stream0
USB Sound Device at usb-0000:00:10.2-1, full speed : USB Audio

Playback:
  Status: Running
    Interface = 1
    Altset = 1
    URBs = 3 [ 8 8 8 ]
    Packet Size = 784
    Momentary freq = 48000 Hz (0x30.0000)
  Interface 1
    Altset 1
    Format: S16_LE
    Channels: 8
    Endpoint: 6 OUT (ADAPTIVE)
    Rates: 44100, 48000
  Interface 1
    Altset 2
    Format: S16_LE
    Channels: 2
    Endpoint: 6 OUT (ADAPTIVE)
    Rates: 44100, 48000
  Interface 1
    Altset 3
    Format: S16_LE
    Channels: 4
    Endpoint: 6 OUT (ADAPTIVE)
    Rates: 44100, 48000
  Interface 1
    Altset 4
    Format: S16_LE
    Channels: 6
    Endpoint: 6 OUT (ADAPTIVE)
    Rates: 44100, 48000
  Interface 1
    Altset 5
    Format: S16_LE
    Channels: 2
    Endpoint: 6 OUT (ADAPTIVE)
    Rates: 96000

Capture:
  Status: Running
    Interface = 2
    Altset = 1
    URBs = 8 [ 1 1 1 1 1 1 1 1 ]
    Packet Size = 200
    Momentary freq = 48000 Hz (0x30.0000)
  Interface 2
    Altset 1
    Format: S16_LE
    Channels: 2
    Endpoint: 5 IN (ASYNC)
    Rates: 44100, 48000

IMO the windows driver just does not choose the requested altset (alternate setting) of the card.
 
Hello, thanks for helping me clarifying the situation with Realtek HD Audio (motherboard sound), CM106-based multichannel USB Sound Cards, and CM6206-based multichannel USB Sound Cards. Before using them with CopperTop bare bones framework, I checked their behavior when coupled to ASIO4ALL. The first test is to use ASIOSinGen. A more flexible test is to design and run a little Synthmaker template.

REALTEK HD Audio (motherboard sound system)

Need to install the Realtek High Definition Audio driver. Need to activate the Realtek High Definition Audio in the System Control Panel. Nothing special here. If Winamp plays and outputs sound, it means all this got properly done when you installed WinXP.

Synthmaker « test all outputs.osm » and ASIO4ALL, on a laptop computer :
cursor 1 is the left speaker
cursor 2 is the right speaker
cursor 3 sends sound to left and right speakers
cursor 5, 6, 7, 8 send some muted sound to the left and right speakers too


CM106-based TRUST SC-5500p USB Multichannel 5.1 Audio

DO NOT install the driver that’s supplied with the 5.1 adapter. Windows already has the USB Audio driver installed. You can check this by playing a song using Winamp. If there is sound on the FRONT port, it means WinXP has the USB Audio driver installed and activated. As Winamp only can output 2 channels, the REAR and SUB/CEN ports remain muted.

Synthmaker « test all outputs.osm » and ASIO4ALL :
FRONT = cursor 1 / cursor 2
REAR = cursor 5 / cursor 6
SUB/CEN = cursor 3 / cursor 4


CM6206-based SWEEX USB Multichannel 7.1 Audio

DO NOT install the driver that’s supplied with the 7.1 adapter. Windows already has the USB Audio driver installed. You can check this by playing a song using Winamp. If there is sound on the FRONT port, it means WinXP has the USB Audio driver installed and activated. As Winamp only can output 2 channels, the SURROUND, CENTER/BASS and BACK ports remain muted.

Synthmaker « test all outputs.osm » and ASIO4ALL :
FRONT = cursor 1 / cursor 2
SURROUND = cursor 7 / cursor 8
CENTER/BASS = cursor 3 / cursor 4
BACK = cursor 5 / cursor 6


CM6206-based « China import » Multichannel 5.1 Audio

Playing a song with Winamp : NO SOUND if the specific 5.1 driver doesn’t get installed. After having installed the specific 5.1 driver : Winamp plays. In a strange way. FRONT OUT = REAR OUT = CEN / BASS OUT = Left and Right.

Synthmaker « test all outputs.osm » and ASIO4ALL :
FRONT OUT= cursor 1 / cursor 2
REAR OUT= cursor 1 / cursor 2 + cursor 7 / cursor 8
CEN / BASS OUT = cursor 1 / cursor 2 + cursor 3 / cursor 4
This is problematic. The "China import" hardware only can output 4 independent channels, not 6 channels.

WARNING : if the specific 5.1 driver is installed, the CM6206 SWEEX USB Multichannel 7.1 Audio will be affected, and will behave as bad as the CM6206 « China Import ». The CM106 TRUST SC-5500p will remain unaffected.

Question : as both the Sweex 7.1 and the China import are basing on a single CM6206 chip without external EEPROM, how can they behave differently?
 

Attachments

  • ASIOSigGen.jpg
    ASIOSigGen.jpg
    123.8 KB · Views: 216
  • test all outputs.jpg
    test all outputs.jpg
    283.8 KB · Views: 210
  • test all outputs.zip
    116.2 KB · Views: 49
Last edited:
Just for the fun, here is a trivial mono 2-way crossover made using Synthmaker. The signal source is an "Additive Osc" provided by Synthmaker. By changing the delay, you change the highpass slope. There is an optimum around the value of 10. You can hear this if you reduce the Bass amplitude.

This is working nice on my laptop using:
- the onboard Realtek High Definition Audio
- the CM106-based Trust SC-5500p 5.1 USB Audio
- the CM6206-based Sweex 7.1 USB Audio
all driven by ASIO4ALL.

Giving this, I guess the CooperTop bare bones framework should work now. Well, no luck, I can't get it working. There is no sound coming out.

The problem may be in the way the devices get presented and selected in console mode. It would be handy to have the ASIO4ALL control panel opening while specifying the devices in console mode. It would be reassuring to see the user choices being confirmed by the ASIO4ALL control panel changing accordingly.

At the moment, if there are two or more devices able to run under ASIO4ALL (like HD Audio and USB Audio), the CooperTop framework only detects one of the two.

I have a question about
BOOL BASS_ASIO_ControlPanel();

By adding one line in the source code
BASS_ASIO_ControlPanel();
are we supposed to have the ASIO control panel opening ?

In CopperTop console mode, it would be nice to have a possibility for halting the streams, enabling to modify settings in the ASIO control panel, then enable the streams again.

What's the situation if relying on ASIO4ALL ? Is it fundamentally different from running a dedicated ASIO driver written for a specific hardware?

Any reply welcome.
 

Attachments

  • mono 2-way LVDC XO.jpg
    mono 2-way LVDC XO.jpg
    277 KB · Views: 227
  • Realtek HD Audio.jpg
    Realtek HD Audio.jpg
    83.5 KB · Views: 221
  • mono 2-way LVDC XO.zip
    169 KB · Views: 40
Last edited:
Thanks for the advice. I just added the instruction. Now I have the ASIO control panel opening like you did. My ASIO control panel is ASIO4ALL.

I introduced a few printf ("xx\n"); lines in the code, for monitoring if on my side, the execution is reaching the latest main() stage which is : while (1) { Sleep (500); } return 1; }.

Actually it is not.

See the screen hardcopy.
You can see three interesting facts :
1 - the CPU usage is high (symbol on the WinXP taskbar)
2 - ASIO is on pause (symbol on the WinXP taskbar)
3 - the application only completes stages AB instead of ABCD

Which means that the callbacks don't work. This is the issue.

I'm putting the CodeBlocks project on a .zip
Can you please check if the project is running fine on your side?

Strange also, each time I reboot the computer, when running the CopperTop stuff, I have AVG antivirus popping up telling me there is a security thread. To AVG, I tell "keep it" instead of "putting in quarantaine". Could it be there is a pointer or something related, going weird? How to check this?

Steph
 

Attachments

  • CopperTop.zip
    495.7 KB · Views: 47
  • 1 - warnings at build.jpg
    1 - warnings at build.jpg
    114.3 KB · Views: 75
  • 2 - security warning after entering the recording device ID.jpg
    2 - security warning after entering the recording device ID.jpg
    255 KB · Views: 63
  • 3 - high CPU usage - ASIO on pause - only completes AB stages.jpg
    3 - high CPU usage - ASIO on pause - only completes AB stages.jpg
    144.9 KB · Views: 89
Hello Steph

With your main.cpp placed in my Codeblocks project and renamed as main.c, everything works fine after compilation: I select the source and destination when prompted, the ASIO panel pops up and waits for me to press 'OK', then the console displays A B C D, and music starts coming out of the headphones. CPU usage as displayed in Windows Task manager is about 1%.

If I run your pre-compiled .exe file (having moved it into the same folder as bass.dll because presumably I haven't got the paths set up properly), I get the same as you: the code only gets as far as A B, and the CPU usage is high.

I enclose my compiled version of your source to try.
 

Attachments

  • Coppertop's version.zip
    12.4 KB · Views: 47
Last edited:
I also took your complete project and ran it. I got errors at first because the libraries were in a different location, but once I had added BASS.lib and BASS_ASSIO.lib in the linker options I hit F9 to build and run, and everything was fine. I got the same 7 warnings as you, and everything worked OK.

The only difference seems to be that I'm using BASS 2.4.8.0 and you're on 2.4.9.0 (although I was probably just running with the 2.4.9.0 .dll in your project).

This must be a simple problem to solve! I think I may create another project that contains all the libraries and source files with relative paths rather than relying on absolute paths then post the complete project for you to try.

Edit: here's the self-contained project using relative paths I think. In theory, you shouldn't need to have BASS installed on your system to load, compile and run this project. It seems to work fine for me.
 

Attachments

  • CopperTop self contained project.zip
    505 KB · Views: 54
Last edited:
It works for me, if placed after BASS_ASIO_Init(). Using Creative Audigy card with Kx drivers that I happen to have in this particular PC
Need to be careful about the Creative Audigy hardware and Kx drivers.
In your Kx ASIO control panel it reads "Device : SB0243"

I went on kX Project -- FAQ (Frequently asked questions). It reads :

Question:
Which soundcards can I use with the kX driver?

Answer:
Currently, kX-compatible soundcards include all EMU10k1 and EMU10k2-based PC soundcards manufactured by Creative Technology Ltd. and/or E-mu Systems Inc., including:
The E-mu Audio Production Studio (APS) card
The motherboard models of 10k1 cards (M002, M003 and others)
PCI256 (CT4890, CT4891 and CT4893) and PCI512 (CT4820 and SB0150) including OEM model (CT4790)
The original Live! (CT4620) and Live! Value cards (CT4670)
The Live! X-Gamer, Live! MP3+, Live! Player 1024, Live! Platinum cards (CT4760) and value cards (CT4780)
The Live! X-Gamer 5.1, Live! MP3+ 5.1, Live! Player 5.1, Live! Platinum 5.1, Live! Digital Entertainment 5.1 cards (SB0060, SB0100, SB0102, SB0220, SB0222, SB0103 and SB0105) and Value 5.1 (SB0101)
The generic and custom OEM Live cards (CT4830, CT4831, CT4832, CT4850, CT4870, CT4871 and CT4872)
The Audigy series, including the Audigy MP3+, X-Gamer, Platinum and OEM cards (CT0070, CT0072, SB0090 and SB0092).
The Audigy 2 series, including Gamer, Platinum, Platinum eX and OEM cards (SB0242, SB0244, SB0320, SB0240, SB0240P, SB0280).
The Audigy 2 ZS series, including Audigy 2 ZS Gamer, Platinum and OEM cards (SB0350).
The Audigy 2 ZS Platinum Pro is not fully supported yet. There are issues with the line in ADC.

24/96 support for the Audigy 2 and Audigy 2 ZS cards is under development.
Audigy 2 Value (SB0400), Audigy 2 ZS Notebook (SB0350) and Audigy 4 Pro (SB0380) cards are partially supported.
The Dell OEM SB Live! (SB020x) is not yet supported since it uses a custom version of the EMU10k1, whose details are unknown. Experimental support may be provided when more information about it becomes available.
Soundblaster Live! 5.1 cards (SB022x) are supported.
Soundblaster Live! 24 Bit and Audigy LS are incompatible with kX, since they do not use the 10kX chips.

Audigy2 ZS Notebook is supported, although some limitations apply.
E-mu E-DSP based PCI devices are supported (0404, 1212, 1820, ...).
Extigy is NOT supported and will not be supported.
X-Fi is NOT supported and will not be supported.


On Creative Labs website, the only remaining internal sound cards are :

Sound Blaster Audigy SE (PCI) (39,99 eur)
Sound Blaster X-Fi Xtreme Audio (PCI Express) (69.99 eur)
Sound Blaster X-Fi Titanium HD (PCI Express) (179.99 eur)

There is Creative Worldwide Support webpage showing the ID numbers for all Sound Blaster products.
The SB0243 (showing on your Kx ASIO driver control panel) is known as "Audigy 2", indeed supported by the Kx ASIO driver.
Unfortunately, from Creative Worldwide Support Audigy 2 webpage the situation about SB0243 is "The product you have selected has been classified as End of Service Life".

Therefore on top of running on Creative Audigy 2, it would be nice to have the bare bones framework also running on proletarian multichannel audio chips like Realtek HD Audio, C-Media CM106, and C-Media CM6206.

There may be another proletarian multichannel audio chip, quite interesting.
The Sound Blaster X-Fi Surround 5.1 Pro (USB) (54.99 eur) (identified as SB1095) features the following playback specification:
USB 2.0: Stereo 24-bit/96kHz or Surround 24-bit/96kHz
USB 1.1: Stereo 24-bit/96kHz or Surround 16-bit/48kHz
This is thus better than CM6206. What's the chip inside? A nice feature is the hardware volume potentiometer. Hope this works under ASIO4ALL.

P.S.
Thanks for your precious help.
Tomorrow I will be investigating the CodeBlocks compiler settings, BASS and BASSASIO versions, also the directory tree, for getting the bare bones framework reaching stages ABCD on my side. From what I understand, my idea of adding a code line for opening the ASIO driver control panel is dangerous, as some control panels, once open (like Kx ?) seem to pause ASIO, thus require the user to press the "OK" button for getting ASIO playing again. In ASIO4ALL there is no such "OK" button so I'm assuming that opening the ASIO4ALL control panel doesn't pause ASIO. Right?
 

Attachments

  • Creative Sound Blaster X-Fi Surround 5.1 Pro USB.jpg
    Creative Sound Blaster X-Fi Surround 5.1 Pro USB.jpg
    31.1 KB · Views: 114
Last edited:
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.