Exemplo n.º 1
0
 public static void SetReverbProp(REVERBTYPE type, FMOD.REVERB_PROPERTIES prop)
 {
     REVERB[(int)type].AirAbsorptionHF   = prop.AirAbsorptionHF;
     REVERB[(int)type].DecayHFRatio      = prop.DecayHFRatio;
     REVERB[(int)type].DecayLFRatio      = prop.DecayLFRatio;
     REVERB[(int)type].DecayTime         = prop.DecayTime;
     REVERB[(int)type].Density           = prop.Density;
     REVERB[(int)type].Diffusion         = prop.Diffusion;
     REVERB[(int)type].EchoDepth         = prop.EchoDepth;
     REVERB[(int)type].EchoTime          = prop.EchoTime;
     REVERB[(int)type].EnvDiffusion      = prop.EnvDiffusion;
     REVERB[(int)type].Environment       = prop.Environment;
     REVERB[(int)type].EnvSize           = prop.EnvSize;
     REVERB[(int)type].Flags             = prop.Flags;
     REVERB[(int)type].HFReference       = prop.HFReference;
     REVERB[(int)type].Instance          = prop.Instance;
     REVERB[(int)type].LFReference       = prop.LFReference;
     REVERB[(int)type].ModulationDepth   = prop.ModulationDepth;
     REVERB[(int)type].ModulationTime    = prop.ModulationTime;
     REVERB[(int)type].Reflections       = prop.Reflections;
     REVERB[(int)type].ReflectionsDelay  = prop.ReflectionsDelay;
     REVERB[(int)type].ReflectionsPan    = prop.ReflectionsPan;
     REVERB[(int)type].Reverb            = prop.Reverb;
     REVERB[(int)type].ReverbDelay       = prop.ReverbDelay;
     REVERB[(int)type].ReverbPan         = prop.ReverbPan;
     REVERB[(int)type].Room              = prop.Room;
     REVERB[(int)type].RoomHF            = prop.RoomHF;
     REVERB[(int)type].RoomLF            = prop.RoomLF;
     REVERB[(int)type].RoomRolloffFactor = prop.RoomRolloffFactor;
 }
Exemplo n.º 2
0
        public FMOD.Reverb3D CreateReverb(FMOD.REVERB_PROPERTIES props, Vector3 location, float maxDist, float minDist)
        {
            FMOD.Reverb3D reverb;
            FMOD.RESULT   res = soundSystem.createReverb3D(out reverb);
            if (res == FMOD.RESULT.OK)
            {
                res = reverb.setProperties(ref props);
                if (res == FMOD.RESULT.OK)
                {
                    FMOD.VECTOR pos = new FMOD.VECTOR();
                    pos.x = location.X;
                    pos.y = location.Y;
                    pos.z = location.Z;

                    res = reverb.set3DAttributes(ref pos, minDist, maxDist);
                    if (res == FMOD.RESULT.OK)
                    {
                        return(reverb);
                    }
                    else
                    {
                        throw new Exceptions.LoadFailException(FMOD.Error.String(res));
                    }
                }
                else
                {
                    throw new Exceptions.LoadFailException(FMOD.Error.String(res));
                }
            }
            else
            {
                throw new Exceptions.LoadFailException(FMOD.Error.String(res));
            }
        }
Exemplo n.º 3
0
 public static void GetreverbProp(REVERBTYPE type, ref FMOD.REVERB_PROPERTIES prop)
 {
     prop.AirAbsorptionHF   = REVERB[(int)type].AirAbsorptionHF;
     prop.DecayHFRatio      = REVERB[(int)type].DecayHFRatio;
     prop.DecayLFRatio      = REVERB[(int)type].DecayLFRatio;
     prop.DecayTime         = REVERB[(int)type].DecayTime;
     prop.Density           = REVERB[(int)type].Density;
     prop.Diffusion         = REVERB[(int)type].Diffusion;
     prop.EchoDepth         = REVERB[(int)type].EchoDepth;
     prop.EchoTime          = REVERB[(int)type].EchoTime;
     prop.EnvDiffusion      = REVERB[(int)type].EnvDiffusion;
     prop.Environment       = REVERB[(int)type].Environment;
     prop.EnvSize           = REVERB[(int)type].EnvSize;
     prop.Flags             = REVERB[(int)type].Flags;
     prop.HFReference       = REVERB[(int)type].HFReference;
     prop.Instance          = REVERB[(int)type].Instance;
     prop.LFReference       = REVERB[(int)type].LFReference;
     prop.ModulationDepth   = REVERB[(int)type].ModulationDepth;
     prop.ModulationTime    = REVERB[(int)type].ModulationTime;
     prop.Reflections       = REVERB[(int)type].Reflections;
     prop.ReflectionsDelay  = REVERB[(int)type].ReflectionsDelay;
     prop.ReflectionsPan    = REVERB[(int)type].ReflectionsPan;
     prop.Reverb            = REVERB[(int)type].Reverb;
     prop.ReverbDelay       = REVERB[(int)type].ReverbDelay;
     prop.ReverbPan         = REVERB[(int)type].ReverbPan;
     prop.Room              = REVERB[(int)type].Room;
     prop.RoomHF            = REVERB[(int)type].RoomHF;
     prop.RoomLF            = REVERB[(int)type].RoomLF;
     prop.RoomRolloffFactor = REVERB[(int)type].RoomRolloffFactor;
 }
Exemplo n.º 4
0
        public string GetAllKindsOfInformation()
        {
            StringBuilder sb = new StringBuilder();

            uint version = 0;

            FMODSystem.getVersion(ref version);
            sb.AppendLine("FMOD Version: " + version);

            float cpuDSP = 0, cpuStream = 0, cpuGeometry = 0, cpuUpdate = 0, cpuTotal = 0;

            ERRCHECK(FMODSystem.getCPUUsage(ref cpuDSP, ref cpuStream, ref cpuGeometry, ref cpuUpdate, ref cpuTotal));
            sb.AppendFormat("CPU usage: (dsp {0:0.000}%, stream {1:0.000}%, geometry {2:0.000}%, update {3:0.000}%, total {4:0.000}%) {5}", cpuDSP, cpuStream, cpuGeometry, cpuUpdate, cpuTotal, Environment.NewLine);
            FMOD.MEMORY_USAGE_DETAILS memoryUsageDetails = new FMOD.MEMORY_USAGE_DETAILS();
            uint memoryUsed = 0;

            ERRCHECK(FMODSystem.getMemoryInfo((uint)FMOD.MEMBITS.ALL, (uint)FMOD.EVENT_MEMBITS.ALL, ref memoryUsed, ref memoryUsageDetails));
            sb.AppendFormat("Memory usage: {0:0,0} B{1}", memoryUsed, Environment.NewLine);

            /* // Sound RAM is dedicated RAM that exists on some devices, not ours though.
             * int ramCurrentAllocated = 0, ramMaxAllocated = 0, ramTotal = 0;
             * ERRCHECK(FMODSystem.getSoundRAM(ref ramCurrentAllocated, ref ramMaxAllocated, ref ramTotal));
             * sb.AppendFormat("Sound RAM (current alloc., max alloc., total): ({0}, {1}, {2}){3}",
             *  ramCurrentAllocated, ramMaxAllocated, ramTotal, Environment.NewLine); */
            sb.AppendLine("");

            int nDrivers = 0;

            ERRCHECK(FMODSystem.getNumDrivers(ref nDrivers));

            /*  // Caps cannot be called while the system is up and running
             * FMOD.CAPS caps = new FMOD.CAPS();
             * int hardwareMinFrequency = 0, hardwareMaxFrequency = 0;
             * FMOD.SPEAKERMODE controlPanelSpeakerMode = new FMOD.SPEAKERMODE();
             * for (int i = 0; i < nDrivers; i++)
             * {
             *  ERRCHECK(FMODSystem.getDriverCaps(i, ref caps, ref hardwareMinFrequency, ref hardwareMaxFrequency, ref controlPanelSpeakerMode));
             *
             *  sb.AppendLine("Driver id: " + i);
             *  sb.AppendLine("Caps: " + caps.ToString());
             *  sb.AppendLine("Hardware minimum frequency: " + hardwareMinFrequency);
             *  sb.AppendLine("Hardware maximum frequency: " + hardwareMaxFrequency);
             *  sb.AppendLine("Control panel speaker mode: " + controlPanelSpeakerMode.ToString());
             * }*/

            int currentDriver = -0;

            ERRCHECK(FMODSystem.getDriver(ref currentDriver));
            sb.AppendLine("Current driver: " + currentDriver);
            StringBuilder driverName = new StringBuilder(200);

            FMOD.GUID driverGuid = new FMOD.GUID();
            for (int i = 0; i < nDrivers; i++)
            {
                ERRCHECK(FMODSystem.getDriverInfo(i, driverName, 200, ref driverGuid));

                sb.AppendLine("Driver id: " + i + (currentDriver == i ? " (Selected)" : ""));
                sb.AppendLine("Device name: " + driverName.ToString());
                sb.AppendFormat("Driver GUID: ({0}, {1}, {2}){3}", driverGuid.Data1, driverGuid.Data2, driverGuid.Data3, Environment.NewLine);
                if (i == 0)
                {
                    sb.AppendLine("Drivers caps: " + driverCaps.ToString());
                }
                sb.AppendLine("");
            }

            int numHardwareChannels2D = 0, numHardwareChannels3D = 0, numHardwareChannelsTotal = 0;

            ERRCHECK(FMODSystem.getHardwareChannels(ref numHardwareChannels2D, ref numHardwareChannels3D, ref numHardwareChannelsTotal));
            sb.AppendFormat("Hardware channels: {0} ({1} 2D + {2} 3D){3}", numHardwareChannelsTotal, numHardwareChannels2D, numHardwareChannels3D, Environment.NewLine);
            int numSoftwareChannels2D = 0, numSoftwareChannels3D = 0, numSoftwareChannelsTotal = 0;

            ERRCHECK(FMODSystem.getHardwareChannels(ref numSoftwareChannels2D, ref numSoftwareChannels3D, ref numSoftwareChannelsTotal));
            sb.AppendFormat("Software channels: {0} ({1} 2D + {2} 3D){3}", numSoftwareChannelsTotal, numSoftwareChannels2D, numSoftwareChannels3D, Environment.NewLine);
            FMOD.SPEAKERMODE speakerMode = new FMOD.SPEAKERMODE();
            FMODSystem.getSpeakerMode(ref speakerMode);
            sb.AppendLine("Speaker mode: " + speakerMode.ToString());
            sb.AppendLine("Active speakers: ");
            foreach (FMOD.SPEAKER speaker in Enum.GetValues(typeof(FMOD.SPEAKER)))
            {
                if (speaker == FMOD.SPEAKER.MAX || speaker == FMOD.SPEAKER.MONO || speaker == FMOD.SPEAKER.NULL ||
                    speaker == FMOD.SPEAKER.SBL || speaker == FMOD.SPEAKER.SBR)
                {
                    continue;
                }

                float x = 0, y = 0;
                bool  active = false;
                ERRCHECK(FMODSystem.get3DSpeakerPosition(speaker, ref x, ref y, ref active));
                if (active)
                {
                    sb.AppendFormat("  {0} ({1}, {2}) {3}", Enum.GetName(speaker.GetType(), speaker), x, y, Environment.NewLine);
                }
            }

            sb.AppendLine("");

            uint selectedOutputPlugin = 0;

            ERRCHECK(FMODSystem.getOutputByPlugin(ref selectedOutputPlugin));
            FMOD.OUTPUTTYPE outputType = new FMOD.OUTPUTTYPE();
            ERRCHECK(FMODSystem.getOutput(ref outputType));
            sb.AppendLine("Output type: " + outputType);
            int nOutputPlugins = 0;

            ERRCHECK(FMODSystem.getNumPlugins(FMOD.PLUGINTYPE.OUTPUT, ref nOutputPlugins));
            IntPtr outputPluginHandle = new IntPtr();

            ERRCHECK(FMODSystem.getOutputHandle(ref outputPluginHandle));
            sb.AppendLine("Output handle: " + outputPluginHandle.ToInt32());
            sb.AppendLine("Plugins: ");
            for (int i = 0; i < nOutputPlugins; i++)
            {
                uint pluginHandle = 0;
                ERRCHECK(FMODSystem.getPluginHandle(FMOD.PLUGINTYPE.OUTPUT, i, ref pluginHandle));
                StringBuilder   pluginName    = new StringBuilder(100);
                uint            pluginVersion = 0;
                FMOD.PLUGINTYPE pluginType    = FMOD.PLUGINTYPE.OUTPUT;
                ERRCHECK(FMODSystem.getPluginInfo(pluginHandle, ref pluginType, pluginName, 100, ref pluginVersion));

                sb.AppendFormat("{0}{1} ({2} {3}) {4}", selectedOutputPlugin == pluginHandle ? "* " : "  ", pluginName, pluginType.ToString(), pluginVersion, Environment.NewLine);
            }
            sb.AppendLine();

            sb.AppendLine("Reverb properties: ");
            FMOD.REVERB_PROPERTIES reverbProperties = new FMOD.REVERB_PROPERTIES();
            ERRCHECK(FMODSystem.getReverbProperties(ref reverbProperties));
            sb.Append(StringifyStructure <FMOD.REVERB_PROPERTIES>(reverbProperties, "  "));
            sb.AppendLine("");

            sb.AppendLine("Ambient Reverb properties: ");
            FMOD.REVERB_PROPERTIES reverbAmbientProperties = new FMOD.REVERB_PROPERTIES();
            ERRCHECK(FMODSystem.getReverbAmbientProperties(ref reverbAmbientProperties));
            sb.Append(StringifyStructure <FMOD.REVERB_PROPERTIES>(reverbAmbientProperties, "  "));
            sb.AppendLine("");

            // Returns non-initialised values for some reason
            sb.AppendLine("Advanced settings: ");
            FMOD.ADVANCEDSETTINGS advancedSettings = new FMOD.ADVANCEDSETTINGS();
            ERRCHECK(FMODSystem.getAdvancedSettings(ref advancedSettings));
            sb.Append(StringifyStructure <FMOD.ADVANCEDSETTINGS>(advancedSettings, "  "));
            sb.AppendLine("");

            return(sb.ToString());
        }