Answered
0
0

I’m trying to convert a Unity AudioClip to an FMOD.Sound and I followed that post:
http://52.88.2.202/questions/question/load-an-audioclip-as-fmod-sound

I have a single FMODSystem object that I use to create various sounds and play them:

FMOD.RESULT result;
FMOD.Factory.System_Create(ref fmodSystem);
result = fmodSystem.init(4, FMOD.INITFLAG.NORMAL, System.IntPtr.Zero); 

And I have this method here for converting AudioClips into FMOD.Sounds:

private FMOD.Sound ConvertAudioClip(AudioClip clip){
    float[] samples = new float[clip.samples * clip.channels];
    clip.GetData(samples, 0);
    uint lenbytes = (uint)(clip.samples * clip.channels * sizeof(float));

    FMOD.CREATESOUNDEXINFO soundinfo = new FMOD.CREATESOUNDEXINFO();
    soundinfo.length = lenbytes;
    soundinfo.format = FMOD.SOUND_FORMAT.PCMFLOAT;
    soundinfo.defaultfrequency = clip.frequency;
    soundinfo.numchannels = clip.channels;

    FMOD.RESULT result;
    FMOD.Sound sound = new FMOD.Sound();
    result = fmodSystem.createSound("", FMOD.MODE.OPENUSER, ref soundinfo, ref sound);
    Debug.Log(result);
    System.IntPtr ptr1 = System.IntPtr.Zero, ptr2 = System.IntPtr.Zero;
    uint len1 = (uint)0, len2 = (uint)0;
    result = sound.@lock(0, lenbytes, ref ptr1, ref ptr2, ref len1, ref len2);
    Marshal.Copy(samples, 0, ptr1, (int)(len1 / sizeof(float)));
    if (len2 > 0)
    {
        Marshal.Copy(samples, (int)(len1 / sizeof(float)), ptr2, (int)(len2 / sizeof(float)));
    }
    result = sound.unlock(ptr1, ptr2, len1, len2);
    result = sound.setMode(FMOD.MODE.LOOP_NORMAL);
    return sound;
}

However, when I log the result from creating the sound I get an ERR_INVALID_PARAM error. What could be causing this ?

Thanks!

  • You must to post comments
Good Answer
2
0

We do not provide support for the Squaretangle wrapper. You could switch to our official Unity integration.

  • Mitko
    I understand. Thank you, I will switch to your official integration.
  • You must to post comments
-1
0

Have you modified the wrapper? Because that code you sent won’t compile.

Check to make sure that frequency and channels are greater than zero.

  • Mitko
    Thanks for the answer! I haven't modified the wrapper. I'm using SquareTangle's integration http://www.squaretangle.com/FMODUnity.html A debug of the frequency and channels (Debug.Log(clip.frequency + " " + clip.channels);) returns 48000 2 so they are not zero.
  • You must to post comments
Showing 2 results
Your Answer

Please first to submit.