Example #1
0
        /// <summary>
        /// Check and fix any problem with hardware.
        /// </summary>
        private void CheckDriver()
        {
            //Get number of driver available
            int DriverNumber = 0;
            CheckError(m_System.getNumDrivers(ref DriverNumber));

            //Driver checking
            #region Solve hardware problems
            //If there's 0 driver, no sound
            if (DriverNumber <= 0) CheckError(m_System.setOutput(OUTPUTTYPE.NOSOUND));
            else {
                //Get driver capability
                int			MinFreq = 0, MaxFreq = 0;
                CAPS		Capability	= CAPS.NONE;
                SPEAKERMODE Speakermode = SPEAKERMODE.STEREO;
                CheckError(m_System.getDriverCaps(0, ref Capability, ref MinFreq, ref MaxFreq, ref Speakermode));

                //Set spearker mode according to the driver
                CheckError(m_System.setSpeakerMode(Speakermode));

                //Set buffer if not using hardware accceleration
                if ((Capability & CAPS.HARDWARE_EMULATED) == CAPS.HARDWARE_EMULATED)
                    CheckError(m_System.setDSPBufferSize(Global.EMULATED_BUFFERSIZE, Global.EMULATED_BUFFERCOUNT));

                //Get user driver data
                GUID			Guid = new GUID();
                StringBuilder	DriverName = new StringBuilder(Global.MAX_DRIVERNAME);
                CheckError(m_System.getDriverInfo(0, DriverName, Global.MAX_DRIVERNAME, ref  Guid));

                //If driver is sigmatel
                if (DriverName.Equals(new StringBuilder((Global.SIGMATEL_DRIVERNAME)))) {
                    //Fix crackling
                    CheckError(m_System.setSoftwareFormat(
                        Global.SIGMATEL_SAMPLERATE,
                        SOUND_FORMAT.PCMFLOAT,
                        0,
                        0,
                        DSP_RESAMPLER.LINEAR));
                }
            }
            #endregion
        }
Example #2
0
 private static extern RESULT FMOD_System_GetRecordDriverInfo(IntPtr system, int id, StringBuilder name, int namelen, ref GUID guid);
Example #3
0
 private static extern RESULT FMOD_System_GetRecordDriverInfoW(IntPtr system, int id, [MarshalAs(UnmanagedType.LPWStr)]StringBuilder name, int namelen, ref GUID guid);
Example #4
0
 public RESULT getRecordDriverInfo(int id, [MarshalAs(UnmanagedType.LPWStr)]StringBuilder name, int namelen, ref GUID guid)
 {
     //use multibyte version
     return FMOD_System_GetRecordDriverInfoW(systemraw, id, name, namelen, ref guid);
 }