Author Topic: BASS_RecordGetInfo returns zero inputs  (Read 1634 times)

aybe

  • Posts: 145
BASS_RecordGetInfo returns zero inputs
« on: 9 Nov '10 - 01:33 »
I remember encountering this issue a while ago but did not fix it,
now as I wanted to use DirectSound, so BASS, it's coming back.

It happens in BASS, not BASSASIO, it works fine with ASIO

It's the Edirol UA-101 which has 12 inputs and 10 inputs,

Playback : It correctly detects the number of speakers (BASS_GetInfo)
Recording : Detects zero inputs or see below for any of the device (BASS_RecordGetInfo)

This device is presented like this in Windows :

  • UA-101 (1-2)
  • UA-101 (3-4)
  • UA-101 (5-6)
  • UA-101 (7-8)
  • UA-101 (9-10)
  • UA-101 (Mon)

Only the UA-101 (Mon) has 1 input, it's not even stereo !
All their SingleIn property are set to False.


I have tried everything,
  • On Windows, all the devices are set to 2 channels @ 44100,
    well it doesn't really matter because the internal card
    is set at 48Khz but is detected anyway.
  • Turned off the device
  • Changing the default device
  • Device reset

Here are some details as well

Code: [Select]

                string[] bassRecordGetInputNames = Bass.BASS_RecordGetInputNames();
                BASSInput bassRecordGetInput = Bass.BASS_RecordGetInput(0);
                BASSInput bassRecordGetInput1 = Bass.BASS_RecordGetInput(-1);
                BASSInputType bassRecordGetInputType = Bass.BASS_RecordGetInputType(0);
                BASSInputType bassRecordGetInputType1 = Bass.BASS_RecordGetInputType(-1);
                string bassRecordGetInputName = Bass.BASS_RecordGetInputName(0);
                string bassRecordGetInputName1 = Bass.BASS_RecordGetInputName(-1);

For a bad device :
  • string[0]
  • BASS_INPUT_NONE
  • BASS_INPUT_NONE
  • BASS_INPUT_TYPE_ERROR
  • BASS_INPUT_TYPE_UNDEF
  • null
  • ""

For the 1 input device (So UA-101 just like the previous)
- Just like the good one below

For a good device (Microphone (SoundMAX Integrated Digital HD Audio))
  • string[1]
  • BASS_INPUT_NONE
  • BASS_INPUT_NONE
  • BASS_INPUT_TYPE_DIGITAL | BASS_INPUT_TYPE_LINE
  • BASS_INPUT_TYPE_DIGITAL | BASS_INPUT_TYPE_LINE | BASS_INPUT_TYPE_SYNTH
  • "Master Volume"
  • "Master Volume"

BTW the RecordGetInput are always BASS_INPUT_NONE ...

Any ideas ?
 
Thanks  ;D ;D ;D


Ian @ un4seen

  • Administrator
  • Posts: 20433
Re: BASS_RecordGetInfo returns zero inputs
« Reply #1 on: 9 Nov '10 - 15:28 »
Please note the BASS_RecordGetInput/etc functions don't refer to the number of channels (mono/stereo/etc), but rather the available input sources (microphone/line-in/etc). At least, that is the case pre-Vista. Vista changed the way that a recording device's inputs are presented: each input is presented as a separate device, with each of them having a single "Master Volume" input/control. If you're not even seeing the "Master Volume", then perhaps that particular device doesn't have volume control; do you see "Level" controls in the Sound control panel?

Is it just that input detection that was causing confusion, or is recording not working either?

aybe

  • Posts: 145
Re: BASS_RecordGetInfo returns zero inputs
« Reply #2 on: 9 Nov '10 - 16:33 »
Ok you gave me some work today,
honnestly I haven't tried because I really needed and ASIO was fine.
I didn't grasp it first about input 'type'

I'll try to really record and tell you how it goes,

Thanks.

aybe

  • Posts: 145
Re: BASS_RecordGetInfo returns zero inputs
« Reply #3 on: 9 Nov '10 - 18:26 »
Okay, I can record ... but, here I know there are 2 chans, but on other PCs / Sound Cards ?

I just launch recording blindly and see if pointer is not 0 ?

Well, the thing is I was working on some wrapper that encompasses BASS devices,
focusing onto getting the actual details of the device.
Like you change the buffer but if you don't query infos again you wouldn't notice.
As time went on and classes written and debugging, I just started to see these discrepancies,
hence posting this thread ...
Well, I tend to trust what BASS returns and in my logic, I don't go further in the program
if the requirements are not met for this subject, when I see BASS_INPUT_TYPE_ERROR or BASS_INPUT_TYPE_UNDEF
I just think it's wise to not go further.

This all started out mainly because I'm tired of retyping the same things over and over,
and also, isolate most BASS code from the application by creating a 'Device Manager' library,
which hopefully if done right, will be usable on other projects, ultimately ending in for free in the web;
to share it but also enhance it.

While the API samples help a lot, they shouldn't be implemented that way in a real application,
but I guess this topic is a little out of the field where BASS plays.

I just learned it ain't easy as it sounds to code an audio control panel, apply changes, use multiple devices, etc,
like in a real application and you know, something that doesn't force you to restart the app. for audio changes.

Thank you  ;D
« Last Edit: 9 Nov '10 - 18:39 by aybe »