24 May '13 - 02:04 *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
 
  Home Help Search Login Register  
  Show Posts
Pages: [1]
1  Developments / BASS / Re: Intercepting a 'wave' stream and modifying it before output..? on: 8 May '12 - 17:12
Thanks Ian. At first glance, wanting to apply live software processing to the Wave stream doesn't seem all that outlandish a thing to want to do. As I say, it is possible on the Creative Audigy, but only because of the open source Kx driver. The 'problem' all seems to boil down to the way the record and play sliders are configured in the Windows mixer applet i.e. record slider comes after the playback slider, for some strange non-intuitive reason (that has confused me many times over the years, I think!).

I have no experience of virtal sound cards, but I have a feeling that it isn't necessarily as good as using a real sound card, as it is not completely obvious that its sample clock would be locked to that of the card doing the playback. I would envisage that BASS would be configured to use the Virtual sound card as the recording source, and the real sound card as the playback destination. Record and playback sample clocks would not be linked. If so, the playback buffer would empty or fill up over time, as the sample clocks drifted. By using the sound card for both the Wave destination and for playback, the sample clocks are perfectly locked. Or there may be tricks that get around this..?

 
ReplyReply Reply with quoteQuote
2  Developments / BASS / Relationship between BASS and sound card's mixer applet on: 6 May '12 - 11:31
When I list a sound card's inputs and outputs in BASS, and when I set BASS to use a particular input or output and set its volume level, how is this related to the mixer applet that can be called up from Windows' control panel?

Does BASS follow the mixer's fader level, or is it meant to be independent of it? Is there a way to force independence from the applet fader level?
ReplyReply Reply with quoteQuote
3  Developments / BASS / Intercepting a 'wave' stream and modifying it before output..? on: 5 May '12 - 10:36
My question concerns the way sound cards (and their drivers) internally route signals by default.

I would like to be able to use any standard standard audio application like Audacity, VLC media player or an internet streaming service, as a source of audio and read the stream into my own software in real time. I would like to process it using my own algorithms, then send the output to multiple analogue output channels in real time. (Many sound cards these days are capable of producing 5.1 or 7.1 i.e. up to 8 discrete channels). BASS appears to have all the tools available for me to do this.

The thing that worries me is that the standard mode of operation of sound cards I have used, is for a 'wave' source signal to be automatically routed to two of the analogue outputs by default. This certainly is the case for the Creative Audigy 2 ZS that I have been experimenting with. It is only because of the open source Kx driver project that I have been able to disable this routing, allowing my application to read the wave stream and send a processed version to six independent outputs. For audio quality reasons, if I upgrade to the Creative X-Fi range, for example, can I be sure I will be able to do the same thing?

Or is there something in BASS that can always work around this problem?



ReplyReply Reply with quoteQuote
4  Developments / BASS / Re: Can I modify an internet audio stream and listen to it on the same sound card? on: 8 Apr '12 - 09:24
Here's what I've found so far:

In the ASIO device listing using BASS_ASIO_GetDeviceInfo, I get two possible devices:
0: Device:Creative ASIO Driver:C:\WINDOWS\SYSTEM32\CTASIO.DLL
1: Device:SB Audigy 2 ZS ASIO 24/96 [DCC0] Driver:C:\WINDOWS\SYSTEM32\CTASIO.DLL

If I select the former, I apparently have up 22 inputs and 20 outputs available, and with the latter 6 and 8. This link decribes how they are mapped in the former case: http://forums.creative.com/showthread.php?t=279862

It's not entirely clear to me whether I can achieve what I want to with this system. From the link above (and assuming that all channel numbers are +1 from how they are enumerated in BASS):

• ASIO inputs 3 and 4 (Mix Pre EQ) This records a simple downmix of all audio coming out of the sound card, without EAX effects, regardless of what speaker mode you are in. (This isn’t a physical input);
!! My NOTE: (this functions as "What U Hear")

• ASIO inputs 5 and 6 are "Mix (Post EQ Front L/R)", and this, too, isn’t a physical input. Using compatible software, this allows the signal to be fed via the onboard Creative DSP Spatializer and main EQ, making it possible to record a "virtual" 6.1 mix for playback over a two-channel headphone or loudspeaker system. What happens is that the DSP Spatializer processes the individual surround components in a way that recreates the illusion of 6.1 surround-sound from a two-speaker system. Very neat! What’s more, you can hear the effect when replayed over any two-speaker system or headphones, and so, if you use this effect on one of your own tracks, anyone can play it back using regular stereo playback equipment. Note, however, that, if you’re in 6.1 speaker mode and record this output, no signal will be output from the rear, centre or subwoofer channels. What you hear will be the virtual surround-sound coming from a single stereo output. If you want to hear these elements separately, choose "Mix (Pre EQ)";

I'm guessing that one of these two options might be what I want, but it's not clear to me whether I can also be generating audio on the surround channels at the same time.

A problem my intial experiments have shown up is that I don't get 'digital silence' when no stream is playing with either of these two options. Maybe the line in and mic inputs are also unavoidably 'in the mix' ..? Can I turn them off? I have also seen this when using lesser sound cards which, apparently only have an analogue mixer, but I thought that the Audigy 2 was all digital.
ReplyReply Reply with quoteQuote
5  Developments / BASS / Can I modify an internet audio stream and listen to it on the same sound card? on: 7 Apr '12 - 15:39
Hi. I'm seeking to do real time filtering of an incoming music stream (e.g. Spotify) before playing it to a pair of audio output channels, or maybe up to 6 output channels. This could allow me, for example, to perform real time EQ, or create an active crossover for multiple hi fi speaker drive units. I'd like to do it on a sample-by-sample basis, using my own filtering code, rather than BASS's inbuilt effects, streams etc.

I have an Audigy 2 ZS card that can, in theory, provide up to 8 output channels. I've experimented and found that I can generate individual sine waves on the 3 output sockets using BASS ASIO, by simply stuffing floats into the callback buffer in the callback routine. So far so good.

What I'm not at all sure about, is how to receive incoming data from the internet stream. I'm naively assuming I can receive the incoming audio on the Audigy's 'What-U-Hear' (digital) mixer input. Will the stereo data appear on the first couple of ASIO input channels I create, if the 'What-U-Hear' box is ticked on the Windows audio recording mixer? Or must I run a (non-ASIO?) call to set which input source I require?

I'm also assuming that Spotify (or any other program) will want to 'take over' the two main sound card outputs..? However, if I run a BASS ASIO program while Spotify is running, it doesn't tell me that any outputs are unavailable even though music is playing on the main stereo outputs (and all 8 can be joined successfully using BASS_ASIO_ChannelJoin). What mechanism, if any, 'maps' the channel numbers to the jack sockets on the back of the sound card?

I'm pretty sure I could do this with two sound cards (one for input, one for output), but they would have to be synchronised to the same sample clock, I think.

(A related question, what is the relationship between the BASS library and the BASS ASIO library? Will I need any non-ASIO BASS calls to make this scheme work?)

Has anyone else tried to do this sort of thing?

Many thanks for any help with this.
ReplyReply Reply with quoteQuote
6  Developments / BASS / Re: BASS_GetDeviceInfo: device 0 appears to be a real sound card not "no sound" on: 6 Apr '12 - 09:50
Sorry!

Just realised that I was calling BASS_GetRecordDeviceInfo, not BASS_GetDeviceInfo. I sat and stared at that code last night and never saw it.

Please ignore my previous post!
ReplyReply Reply with quoteQuote
7  Developments / BASS / BASS_GetDeviceInfo: device 0 appears to be a real sound card not "no sound" on: 6 Apr '12 - 01:18
The documentation for BASS_GetDeviceInfo says:

"Parameters
device   The device to use... 0 = no sound, 1 = first real output device. "

"Remarks
This function can be used to enumerate the available devices for a setup dialog. Device 0 is always the "no sound" device, so you should start at device 1 if you only want to list real output devices. "

But if I do the following:

// list audio devices
for (ii=0; ii < 10; ii++)
{
   BASS_RecordGetDeviceInfo(ii, &device_info);
   printf ("%d: Device:%s Driver:%s\n", ii, device_info.name, device_info.driver);
}

I get device 0 as my Audigy sound card, and device 1 as my PC's built in Soundmax chipset, and no other mention of the Audigy in the list. So if I "start at device 1" I will miss the Audigy completely.

The documentation for BASS_Init says:
"device   The device to use... -1 = default device, 0 = no sound, 1 = first real output device. BASS_GetDeviceInfo can be used to enumerate the available devices."

So if I explicitly want to use my Audigy card for playback (and not just rely on the default device assignment), what device number should I pass in to BASS_Init?

Thanks for any help you can give me.
ReplyReply Reply with quoteQuote
Pages: [1]
Powered by SMF 1.1.18 | SMF © 2013, Simple Machines