25 May '13 - 21:11 *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
 
   Home   Help Search Login Register  
Pages: [1]
  Reply  |  Print  
Author Topic: WinXP SP3 stereo sound -> VAC -> ASIO stereo -> BASS -> ASIO multichannel  (Read 536 times)
steph_tsf
Posts: 7


« on: 23 Jul '12 - 03:51 »
Reply with quoteQuote

hello, this is my first post on BASS. About two years ago I relied on VAC and Synthmaker for intercepting the WinXP stereo sound, for getting it processed by Synthmaker, transforming the WinXP stereo sound into a custom 6 channel sound.

Let me describe the context, avoiding misunderstandings.
This is not about playing a song from hardisk or internet streaming, decoding MP3 or OGG, adding DX8 effects, or recording sound on the hardisk.
This is about intercepting the WinXP stereo sound, make it appear as an unprocessed stereo ASIO stream, and get it processed in realtime on a sample by sample basis using the Basic language, on the fly.

Let me describe the application I did two years ago on Synthmaker, as clarification.
I installed VAC, defining a "Virtual Cable 1", then paid the VAC licence for avoiding the intermittent white noise added to the sound. I then configured the WinXP Sound control panel for playing the audio, not playing to the physical sound card, but playing to the "Virtual Cable 1" as defined by VAC. This way I managed to get the correspondent stereo ASIO stream entering Synthmaker. My little Synthmaker .osm managed to split the stereo sound the way I wanted using a few RBJ Cookbook IIRs. Thanks to the ASIO4ALL driver, I was able to get Synthmaker seeing the onboard Realtek HDaudio hardware as 6 ASIO channels out. This way I could physically output the 6 audio channels, out of the mainboard. I did another experiment using a CM6206-based USB attachment (Sweex 7.1 or Trust 5.1) as multichannel soundcard, also operating using ASIO4ALL, and it worked. The main reason I want to escape from Synthmaker are the difficulties I encountered when adding features like adding a out/in realtime FFT analyzer operating on synchronized ASIO streams. I never managed to get a proper buffer synchronization, and by the way, writing general control code is is quite irritating on Synthmaker (should check version 2 now).

Now guess what ? I'm ready to write my own audio DSP application in MS Visual Basic 2010, getting rid of Synthmaker and possibly getting rid of VAC also.

Question 1:
I guess I need BASS, BASSASIO and BASSNET. Right?

Question 2:
Do I still need VAC?

Question 3:
Is there some Visual Basic 2010 sample code available, showing how to setup the required callback (marshalling - delegates)?

Question 4:
Is it simpler to write my application using PureBasic (instead of MS Visual Basic 2010), not needing the BASSNET wrapper?
Is it simpler and/or safer to write my application using MS C++ or MS C# because of finer or faster control about particular data types I may need (pointers) or any other reason?
Is it simpler and/or safer to write my application using another C compiler escaping from .NET, not needing the BASSNET wrapper?

Question 5 :
In such signal chain, who is responsible for defining the final sampling frequency, the one that's used by the multichannel audio card?

Question 6 :
In such signal chain, who is executing the resampling that's needed when playing a 48 kHz video soundtrack, and/or when playing a MP3 coming from a CD rip, and/or when playing a lossless file coming from a 24bit 96kHz audiophile vinyle rip ?

Any advice welcome.
Logged
Ian @ un4seen
Administrator
Posts: 15276


« Reply #1 on: 23 Jul '12 - 16:58 »
Reply with quoteQuote

Question 1:
I guess I need BASS, BASSASIO and BASSNET. Right?

You would need BASSASIO, and possibly BASS, depending on whether you need any of its features, eg. decoding. BASSASIO doesn't require BASS itself. The requirement of BASS.Net would depend on whether you're using .Net.

Question 2:
Do I still need VAC?

Yes, I think so, unless you create your own virtual soundcard driver to replace it. BASS does not provide a virtual soundcard driver itself.

Question 3:
Is there some Visual Basic 2010 sample code available, showing how to setup the required callback (marshalling - delegates)?

The BASS.Net package does includes some examples, but also see the BASS.Net documentation for code snippets, eg. the BASS_ASIO_ChannelEnable and ASIOPROC documentation shows how to setup an ASIO callback.

Question 4:
Is it simpler to write my application using PureBasic (instead of MS Visual Basic 2010), not needing the BASSNET wrapper?
Is it simpler and/or safer to write my application using MS C++ or MS C# because of finer or faster control about particular data types I may need (pointers) or any other reason?
Is it simpler and/or safer to write my application using another C compiler escaping from .NET, not needing the BASSNET wrapper?

If you need to do some DSP, then it may be better for performance to implement that in native code (eg. C++) rather than .Net, but overall it's probably best to just stick with whatever you are most comfortable using.

Question 5 :
In such signal chain, who is responsible for defining the final sampling frequency, the one that's used by the multichannel audio card?

When using ASIO output, the ASIO device will determine at what rate you need to provide sample data (via an ASIOPROC callback). The rate is available from BASS_ASIO_GetRate and can be set via BASS_ASIO_SetRate.

Question 6 :
In such signal chain, who is executing the resampling that's needed when playing a 48 kHz video soundtrack, and/or when playing a MP3 coming from a CD rip, and/or when playing a lossless file coming from a 24bit 96kHz audiophile vinyle rip ?

BASSASIO can handle the resampling (see BASS_ASIO_ChannelSetRate) or you can use the BASSmix add-on to do it.
Logged
Pages: [1]
  Reply  |  Print  
 
Jump to:  

Powered by SMF 1.1.18 | SMF © 2013, Simple Machines