0
0

Hey FMOD Dev team,

I’ve run across a bug with FmodEx and ASIO. I use an M-Audio 1010LT which I can have 8 outputs from. I’ve used ASIO with version 4.02.01 and had no problems. I updated to 4.06.06 and now I have a problem. I know it s a big version change but if aint broke don’t fix it right? Now I wanted to move to the new version and came across this problem.

Problem is, when old version used I can output 8 separate channels with 8 distinct files playing. M-Audio control panel shows output on all channels.

On new version I do the same function calls but of course different module and dll and now I cannot hear the files played for channels 7 and 8. Channels 1-6 work fine just the last two don’t. I thought maybe it was something in my code until I replaced the fmodex module with an archived one and used the fmodex DLL for that module and then I got sound on channels 7 and 8 without changing any of my application code.

Can anyone verify this problem too?

Thanks,
Scott

  • You must to post comments
0
0

Now I’m in the work, but tomorrow i’ll see if bring my code for ASIO (not have inet in my house ๐Ÿ˜• ) and post it. Works well for me with ASIO4ALL adn onboard 5.1 soundcard.

  • You must to post comments
0
0

This is INIT routine. For the outputtype I use integers with an function that convert it on outputFmodType, just ignore it.
The thing mos important: ASIO is ever RAW!
And for that works the speakermode of windows must be equal or greater to the one than it wants to assign to ASIO. For example: with "stereo speakers" configuration in control panel you only to be able to use both first channels (1-2) because almost all sound drivers uses rear and center y subwoofer outputs for "line input" and "microphone" inputs, then this channels not work for output.

[code:1p5l3s11]public FMOD.RESULT System_init(int output, int driver)
{
pResult = FMOD.Factory.System_Create(ref pSystem);
if (pResult != FMOD.RESULT.OK) return pResult;

        pResult = pSystem.setOutput(OutputFmodType(output));
        if (pResult != FMOD.RESULT.OK) return pResult;

        pResult = pSystem.setDriver(driver);
        if (pResult != FMOD.RESULT.OK) return pResult;

        if (output == 2) //if ASIO
    SpeakerMode = FMOD_SPEAKERMODE_RAW;
        pSpeakerMode = SpeakerMode;

        pResult = pSystem.setSpeakerMode(pSpeakerMode);
        if (pResult != FMOD.RESULT.OK) return pResult;


        //Channels 7.1 = 8, RAW = 16
        if (output == 2) //if ASIO
        {
            //RAW SpeakerMode
            pResult = pSystem.setSoftwareFormat(48000, FMOD.SOUND_FORMAT.PCM16, 16, 0, FMOD.DSP_RESAMPLER.LINEAR);
            if (pResult != FMOD.RESULT.OK) return pResult;
        }
        pResult = pSystem.init(4, FMOD.INITFLAG.STREAM_FROM_UPDATE, (IntPtr)null);
        return pResult;
    }[/code:1p5l3s11]

then select the speaker:

[code:1p5l3s11]//volume:
level1[0] = 0.85F; // 85% left;
level1[1] = 0;
level2[0] = 0;
level2[1] = 0.85F; // 85% right;

FMOD.SPEAKER[] spk = new FMOD.SPEAKER[2];
//FMOD.SPEAKER[0] = you selected spk
//FMOD.SPEAKER[1] = you selected spk
        pResult = pChannel.setSpeakerLevels(spk[0], level1, 2);
        if (pResult != FMOD.RESULT.OK)
            return pResult;
        pResult = pChannel.setSpeakerLevels(spk[1], level2, 2);
        return pResult;[/code:1p5l3s11]

Hope this help!

  • You must to post comments
0
0

Anyone able to do this test or even check out FMOD source to see? I’m not sure how widely used 8 channel ASIO is used by FMOD community but would be nice to figure this out as I do.

Thanks

  • You must to post comments
0
0

Are you using FMOD_SPEAKERMODE_RAW for this?

  • You must to post comments
0
0

Thanks for your reply. Below is my init function. I’m using FMOD_SPEAKERMODE_7POINT1.

[code:3fodg10z]
Dim result As FMOD_RESULT
Dim Version As Long
Dim lngNum As Long

result = FMOD_System_Create(myASIOSystem)

If result <> FMOD_OK Then
AddGlobalMessage "There was an error creating ASIO system!"
Exit Sub
End If

result = FMOD_System_SetSpeakerMode(myASIOSystem, FMOD_SPEAKERMODE_7POINT1)

If result <> FMOD_OK Then
AddGlobalMessage "There was an error setting speaker mode!"
Exit Sub
End If

result = FMOD_System_SetOutput(myASIOSystem, FMOD_OUTPUTTYPE_ASIO)

If result <> FMOD_OK Then
AddGlobalMessage "There was an error setting output to ASIO!"
Exit Sub
End If

result = FMOD_System_GetVersion(myASIOSystem, Version)

If result <> FMOD_OK Then
AddGlobalMessage "There was an error getting sound system version!"
Exit Sub
End If

If Version <> FMOD_VERSION Then
AddGlobalMessage "Error! You are using an old version of FMOD " & Hex$(Version) & ". " & _
"This program requires " & Hex$(FMOD_VERSION)
End If

result = FMOD_System_GetNumDrivers(myASIOSystem, lngNum)

If result <> FMOD_OK Then
AddGlobalMessage "There was an error getting number of drivers"
Exit Sub
End If

result = FMOD_System_SetDriver(myASIOSystem, lngASIODevice)

If result <> FMOD_OK Then
AddGlobalMessage "There was an error setting the driver to index: " & lngASIODevice
Exit Sub
End If

result = FMOD_System_Init(myASIOSystem, 32, FMOD_INIT_NORMAL, 0)
[/code:3fodg10z]

Thanks

  • You must to post comments
0
0

Bump…

Any comments on this? Would like to figure it out, have some explanation, have someone else try it out.

Thanks

  • You must to post comments
0
0

8 channels in asio most definitely doesnt mean ‘speakermode_7point1’ even remotely matches the mapping the asio device uses. you have to use speakermode_raw just as i said previously and map the speakers yourself. Asio does not adhere to speaker mapping standards.

  • You must to post comments
0
0

Thank you for your reply.

I am setting my speaker map myself. I assume this is what your thinking of speaker mapping?

[code:1adoyyia]
result = FMOD_Channel_SetSpeakerMix(lngChannel, 1, 0, 0, 0, 0, 0, 0, 0)
result = FMOD_Channel_SetSpeakerMix(lngChannel, 0, 1, 0, 0, 0, 0, 0, 0)
result = FMOD_Channel_SetSpeakerMix(lngChannel, 0, 0, 1, 0, 0, 0, 0, 0)
result = FMOD_Channel_SetSpeakerMix(lngChannel, 0, 0, 0, 1, 0, 0, 0, 0)
result = FMOD_Channel_SetSpeakerMix(lngChannel, 0, 0, 0, 0, 1, 0, 0, 0)
result = FMOD_Channel_SetSpeakerMix(lngChannel, 0, 0, 0, 0, 0, 1, 0, 0)
result = FMOD_Channel_SetSpeakerMix(lngChannel, 0, 0, 0, 0, 0, 0, 1, 0)
result = FMOD_Channel_SetSpeakerMix(lngChannel, 0, 0, 0, 0, 0, 0, 0, 1)
[/code:1adoyyia]

What the problem has been since the start is that I can use the EXACT same code I have in my functions and just change the FMOD modules and DLL files (version 4.06.06) I am using and I have the problem surface. The only difference then is the fmod versions of "4.02.01" and "4.06.06". How can I have successful results in one (4.02.01) and not in the other (4.06.06) with the same exact fmod calling functions but different fmod modules and dlls?

So with that said shouldn’t it take a bit of investigation on the differences in the FMOD versions?

Also, I did some research on the changes in ASIO since version 4.02.01 and the only thing I have noticed was ASIO recording was added and a couple bugs fixed. Not sure what else is related though.

Now in version 4.06.06 the set speaker mix calls work for the first "6" channels but not the last "2". So in a sense it is sorta working but it sort of isn’t. Hope that little piece helps you in your troubleshooting.

Basically I’m at the end of what I can do here on my end because I have proved that not touching my code and just changing fmod versions fixes the problem.

Thanks for reading my rant. I hope I can resolve this soon.

  • You must to post comments
0
0

:( Well I’m still having this problem.

I’ve used SPEAKERMODE_RAW and all my channel outputs come out output 1 and 2 stereo no matter what I set the speaker mix too. If I go back to SPEAKERMODE_7POINT1 I get the correct outputs 1-6 but again nothing on 7 or 8 output unless I revert back to the old version mentioned above and then I get outputs 1-8 working like expected.

How else can I explain this so someone understands what I’m saying? ๐Ÿ˜•

  • You must to post comments
0
0

I am facing exactly the same problem as is mentioned here. I need to control a number of ASIO channels independently and with the FMOD_SPEAKERMODE_RAW setting only two channels (stereo) can be controlled. FMOD_SPEAKERMODE_7POINT1 is a workaround but this way only 8 channels can be controlled.

Are there any plans to fix this problem?

  • You must to post comments
0
0

Hate to do it. Bump… :(

Would like any assistance please.

  • You must to post comments
Showing 11 results
Your Answer

Please first to submit.