IEnumerator Start() { this.gameObjectName = this.gameObject.name; // setup the AudioSource var audiosrc = this.GetComponent <AudioSource>(); audiosrc.playOnAwake = false; audiosrc.Stop(); audiosrc.clip = null; /* * Create a System object and initialize. */ result = FMOD.Factory.System_Create(out system); ERRCHECK(result, "Factory.System_Create"); result = system.getVersion(out version); ERRCHECK(result, "system.getVersion"); if (version < FMOD.VERSION.number) { var msg = string.Format("FMOD lib version {0} doesn't match header version {1}", version, FMOD.VERSION.number); if (this.OnError != null) { this.OnError.Invoke(this.gameObjectName, msg); } throw new System.Exception(msg); } /* * System initialization */ result = system.init(100, FMOD.INITFLAGS.NORMAL, System.IntPtr.Zero); ERRCHECK(result, "system.init"); // wait for FMDO to catch up and pause - recordDrivers are not populated if called immediately [e.g. from Start] yield return(new WaitForSeconds(1f)); if (this.recordOnStart) { StartCoroutine(this.Record()); } this.ready = true; }
private void Form1_Load(object sender, System.EventArgs e) { uint version = 0; FMOD.RESULT result; int length; FMOD.CREATESOUNDEXINFO exinfo = new FMOD.CREATESOUNDEXINFO(); /* * Global Settings */ result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); Application.Exit(); } result = system.init(1, FMOD.INITFLAGS.NORMAL, (IntPtr)null); ERRCHECK(result); length = LoadFileIntoMemory("../../../../../examples/media/wave.mp3"); exinfo.cbsize = Marshal.SizeOf(exinfo); exinfo.length = (uint)length; result = system.createSound(audiodata, (FMOD.MODE.HARDWARE | FMOD.MODE.OPENMEMORY), ref exinfo, ref sound); ERRCHECK(result); }
private void RipNetStream_Load(object sender, System.EventArgs e) { uint version = 0; FMOD.RESULT result; /* * Create a System object and initialize. */ result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); Application.Exit(); } result = system.init(100, FMOD.INITFLAGS.NORMAL, (IntPtr)null); ERRCHECK(result); /* * Bump up the file buffer size a little bit for netstreams (to account for lag). Decode buffer is left at default. */ result = system.setStreamBufferSize(128 * 1024, FMOD.TIMEUNIT.RAWBYTES); ERRCHECK(result); result = system.attachFileSystem(opencallback, closecallback, readcallback, null); ERRCHECK(result); }
private void PlaySound_Load(object sender, System.EventArgs e) { uint version = 0; FMOD.RESULT result; /* * Create a System object and initialize. */ result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); Application.Exit(); } result = system.init(32, FMOD.INITFLAGS.NORMAL, (IntPtr)null); ERRCHECK(result); result = system.createSound("../../../../../examples/media/drumloop.wav", FMOD.MODE.HARDWARE, ref sound1); ERRCHECK(result); result = sound1.setMode(FMOD.MODE.LOOP_OFF); ERRCHECK(result); result = system.createSound("../../../../../examples/media/jaguar.wav", FMOD.MODE.SOFTWARE, ref sound2); ERRCHECK(result); result = system.createSound("../../../../../examples/media/swish.wav", FMOD.MODE.HARDWARE, ref sound3); ERRCHECK(result); }
public SoundLib() { if (system != null) { return; } FMOD.RESULT result = FMOD.Factory.System_Create(out system); if (ERRCHECK(result, "System_Create")) { return; } uint version; result = system.getVersion(out version); ERRCHECK(result, "system.getVersion"); if (version < FMOD.VERSION.number) { Report.ReportLog("Error! Old version of FMOD " + version.ToString("X") + " detected. This program requires " + FMOD.VERSION.number.ToString("X") + "."); system.close(); system.release(); system = null; return; } result = system.init(1, FMOD.INITFLAGS.NORMAL, (IntPtr)null); if (ERRCHECK(result, "system.init")) { system.close(); system.release(); system = null; return; } }
private void PlayStream_Load(object sender, System.EventArgs e) { uint version = 0; FMOD.RESULT result; /* * Global Settings */ result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); Application.Exit(); } result = system.init(1, FMOD.INITFLAGS.NORMAL, (IntPtr)null); ERRCHECK(result); result = system.createSound("../../../../../examples/media/wave.mp3", (FMOD.MODE._2D | FMOD.MODE.HARDWARE | FMOD.MODE.CREATESTREAM), ref sound); ERRCHECK(result); }
public Media() { uint version = 0; FMOD.RESULT result; /* * Create a System object and initialize. */ result = FMOD.Factory.System_Create(ref soundsystem); ERRCHECK(result); result = soundsystem.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); Application.Exit(); } result = soundsystem.init(32, FMOD.INITFLAGS.NORMAL, (IntPtr)null); ERRCHECK(result); LoadFromResource(); }
private void recordtodisk_Load(object sender, System.EventArgs e) { uint version = 0; FMOD.RESULT result; comboBoxOutput.Enabled = true; comboBoxRecord.Enabled = false; start.Enabled = false; /* * Create a System object and initialize. */ result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); Application.Exit(); } /* * Get output modes */ comboBoxOutput.Items.Add("DirectSound"); comboBoxOutput.Items.Add("Windows Multimedia WaveOut"); comboBoxOutput.Items.Add("ASIO"); }
/// <summary> /// Initialize The Audio Engine /// </summary> /// <param name="NbChannel">Set Number Of Maximum Channels To Use</param> public void Initialize() { RESULT result; result = Factory.System_Create(ref system); if (EngineError != null) { EngineError(result); } uint version = 0; result = system.getVersion(ref version); if (EngineError != null) { EngineError(result); } if (version < VERSION.number) { throw new ApplicationException("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + VERSION.number.ToString("X") + "."); } result = system.init(1, INITFLAG.NORMAL, (IntPtr)null); if (EngineError != null) { EngineError(result); } channelCallback = new CHANNEL_CALLBACK(OnEndMusic); }
private void Form1_Load(object sender, System.EventArgs e) { uint version = 0; FMOD.RESULT result; mBrushBlack = new SolidBrush(Color.Black); mBrushGreen = new SolidBrush(Color.Green); mBrushWhite = new SolidBrush(Color.White); /* * Create a System object and initialize. */ result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); Application.Exit(); } result = system.init(32, FMOD.INITFLAGS.NORMAL, (IntPtr)null); ERRCHECK(result); }
private void UserCreatedSound_Load(object sender, System.EventArgs e) { uint version = 0; FMOD.RESULT result; uint channels = 2, frequency = 44100; /* * Create a System object and initialize. */ result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); Application.Exit(); } result = system.init(32, FMOD.INITFLAGS.NORMAL, (IntPtr)null); ERRCHECK(result); createsoundexinfo.cbsize = Marshal.SizeOf(createsoundexinfo); createsoundexinfo.fileoffset = 0; createsoundexinfo.length = frequency * channels * 2 * 2; createsoundexinfo.numchannels = (int)channels; createsoundexinfo.defaultfrequency = (int)frequency; createsoundexinfo.format = FMOD.SOUND_FORMAT.PCM16; createsoundexinfo.pcmreadcallback = pcmreadcallback; createsoundexinfo.pcmsetposcallback = pcmsetposcallback; createsoundexinfo.dlsname = null; }
// ======================================================================================================================================== #region Unity lifecycle void Start() { this.gameObjectName = this.gameObject.name; result = FMOD.Factory.System_Create(out system); AudioStreamSupport.ERRCHECK(result, this.logLevel, this.gameObjectName, null, "FMOD.Factory.System_Create"); result = system.getVersion(out version); AudioStreamSupport.ERRCHECK(result, this.logLevel, this.gameObjectName, null, "system.getVersion"); if (version < FMOD.VERSION.number) { var msg = string.Format("FMOD lib version {0} doesn't match header version {1}", version, FMOD.VERSION.number); throw new System.Exception(msg); } int rate; FMOD.SPEAKERMODE sm; int sc; result = system.getSoftwareFormat(out rate, out sm, out sc); AudioStreamSupport.ERRCHECK(result, this.logLevel, this.gameObjectName, null, "system.getSoftwareFormat"); AudioStreamSupport.LOG(LogLevel.INFO, this.logLevel, this.gameObjectName, null, "FMOD samplerate: {0}, speaker mode: {1}, num. of raw speakers {2}", rate, sm, sc); // TODO: evaluate maxchannels result = system.init(32, FMOD.INITFLAGS.NORMAL, extradriverdata); AudioStreamSupport.ERRCHECK(result, this.logLevel, this.gameObjectName, null, "system.init"); this.SetOutput(this.outputDriverID); /* tags ERR_FILE_COULDNOTSEEK: * http://stackoverflow.com/questions/7154223/streaming-mp3-from-internet-with-fmod * http://www.fmod.org/docs/content/generated/FMOD_System_SetFileSystem.html */ // result = system.setFileSystem(null, null, null, null, null, null, -1); // ERRCHECK(result, "system.setFileSystem"); // Explicitly create the delegate object and assign it to a member so it doesn't get freed // by the garbage collected while it's being used this.pcmreadcallback = new FMOD.SOUND_PCMREADCALLBACK(PCMReadCallback); this.pcmsetposcallback = new FMOD.SOUND_PCMSETPOSCALLBACK(PCMSetPosCallback); this.elementSize = System.Runtime.InteropServices.Marshal.SizeOf(typeof(System.Int16)); // decodebuffersize samples worth of bytes will be called in read callback // createSound calls back, too this.pcmReadCallbackBuffer = new List <List <byte> >(); this.pcmReadCallbackBuffer.Add(new List <byte>()); this.pcmReadCallbackBuffer.Add(new List <byte>()); }
private void InitSoundEngine() { uint version = 0; FMOD.RESULT result; // Create a System object and initialize. result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { throw new Exception("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); } if (isPreListenSoundEngine) { system.setDriver(Big3.Hitbase.Configuration.Settings.Current.OutputDevicePreListen); } else { system.setDriver(Big3.Hitbase.Configuration.Settings.Current.OutputDevice); } switch (Big3.Hitbase.Configuration.Settings.Current.VirtualCDBufferSize) { case 0: system.setDSPBufferSize(100, 8); break; case 1: system.setDSPBufferSize(150, 8); break; case 2: system.setDSPBufferSize(200, 8); break; case 3: default: system.setDSPBufferSize(500, 8); break; } result = system.init(32, FMOD.INITFLAGS.NORMAL, (IntPtr)null); ERRCHECK(result); /* * Bump up the file buffer size a bit from the 16k default for CDDA, because it is a slower medium. */ result = system.setStreamBufferSize(64 * 1024, FMOD.TIMEUNIT.RAWBYTES); ERRCHECK(result); }
private void Form1_Load(object sender, System.EventArgs e) { uint version = 0; FMOD.RESULT result; /* * Create a System object and initialize. */ result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); Application.Exit(); } result = system.init(32, FMOD.INITFLAGS.NORMAL, (IntPtr)null); ERRCHECK(result); result = system.createSound("../../../../../examples/media/drumloop.wav", FMOD.MODE.SOFTWARE | FMOD.MODE.LOOP_NORMAL, ref sound); ERRCHECK(result); result = system.playSound(FMOD.CHANNELINDEX.FREE, sound, false, ref channel); ERRCHECK(result); /* * Create DSP unit */ cohar[] nameArray = new char[32]; dspname.ToCharArray().CopyTo(nameArray, 0); dspdesc.name = nameArray; dspdesc.channels = 0; dspdesc.read = dspreadcallback; result = system.createDSP(ref dspdesc, ref mydsp); ERRCHECK(result); result = system.addDSP(mydsp, ref dspconnectiontemp); ERRCHECK(result); result = mydsp.setActive(true); ERRCHECK(result); result = mydsp.setBypass(true); ERRCHECK(result); }
private void effects_Load(object sender, System.EventArgs e) { uint version = 0; FMOD.RESULT result; /* * Create a System object and initialize. */ result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); Application.Exit(); } result = system.init(32, FMOD.INITFLAGS.NORMAL, (IntPtr)null); ERRCHECK(result); result = system.createSound("../../../../../examples/media/drumloop.wav", FMOD.MODE.SOFTWARE, ref sound); ERRCHECK(result); result = system.playSound(FMOD.CHANNELINDEX.FREE, sound, false, ref channel); ERRCHECK(result); /* * Create some effects to play with. */ result = system.createDSPByType(FMOD.DSP_TYPE.LOWPASS, ref dsplowpass); ERRCHECK(result); result = system.createDSPByType(FMOD.DSP_TYPE.HIGHPASS, ref dsphighpass); ERRCHECK(result); result = system.createDSPByType(FMOD.DSP_TYPE.ECHO, ref dspecho); ERRCHECK(result); result = system.createDSPByType(FMOD.DSP_TYPE.FLANGE, ref dspflange); ERRCHECK(result); result = system.createDSPByType(FMOD.DSP_TYPE.DISTORTION, ref dspdistortion); ERRCHECK(result); result = system.createDSPByType(FMOD.DSP_TYPE.CHORUS, ref dspchorus); ERRCHECK(result); result = system.createDSPByType(FMOD.DSP_TYPE.PARAMEQ, ref dspparameq); ERRCHECK(result); }
public void Init(ISynchronizeInvoke newInvoker) { if (!Settings.Default.AudioEngineAvail) { InitErrorCheck(FMOD.RESULT.ERR_OFF_MANUALLY); return; } uint version = 0; /* Create a System object and initialize */ if (!InitErrorCheck(FMOD.Factory.System_Create(ref system))) { return; } if (!InitErrorCheck(system.getVersion(ref version))) { return; } if (version < FMOD.VERSION.number) { InitErrorCheck(FMOD.RESULT.ERR_VERSION); return; } if (!InitErrorCheck(system.init(32, FMOD.INITFLAG.NORMAL, (IntPtr)null))) { return; } isInitialized = true; invoker = newInvoker; music = new Music(system, invoker); sound = new Sound(system, invoker); timer.Start(); music.MusicEnd += new MusicEndEventHandler(music_MusicEnd); InfoLog.WriteInfo("Audio initialized successfully", EPrefix.AudioEngine); }
private void cdda_Load(object sender, System.EventArgs e) { uint version = 0; FMOD.RESULT result; play.Enabled = false; pause.Enabled = false; nextTrack.Enabled = false; /* * Create a System object and initialize. */ result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); Application.Exit(); } result = system.init(1, FMOD.INITFLAGS.NORMAL, (IntPtr)null); ERRCHECK(result); /* * Bump up the file buffer size a bit from the 16k default for CDDA, because it is a slower medium. */ result = system.setStreamBufferSize(64 * 1024, FMOD.TIMEUNIT.RAWBYTES); ERRCHECK(result); /* * Get all drive letter and put in combo box */ drives = Environment.GetLogicalDrives(); for (int count = 0; count < drives.Length; count++) { comboBox.Items.Add(drives[count].Remove(2, 1)); } }
public FModSounds() { Instance = this; FMOD.RESULT result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); uint version = 0; result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { System.Diagnostics.Trace.TraceError("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); } result = system.init(32, FMOD.INITFLAGS.NORMAL, (System.IntPtr)null); ERRCHECK(result); system.createChannelGroup("channelGroup", ref channelGroup); }
private bool InitAudioEngine() { uint version = 0; FMOD.RESULT result; try { result = FMOD.Factory.System_Create(ref _fmodEngine); if (ERRCHECK(result)) { return(false); } } catch (DllNotFoundException) { errResult = FMOD.RESULT.ERR_PLUGIN_MISSING; errMsg = "fmodex.dll not found"; return(false); } result = _fmodEngine.getVersion(ref version); if (ERRCHECK(result)) { return(false); } if (version < FMOD.VERSION.number) { errMsg += "You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."; return(false); } // init the FMOD engine result = _fmodEngine.init(32, FMOD.INITFLAGS.NORMAL, (IntPtr)null); if (ERRCHECK(result)) { return(false); } return(true); }
// private List<Sound> m_SFXList; /// <summary> /// Class constructor. /// </summary> public SoundManager() { //Empties variable m_System = null; m_BGM = null; m_BGMChannel = null; //Create FMOD system CheckError(Factory.System_Create(ref m_System)); //Check version uint Version = 0; CheckError(m_System.getVersion(ref Version)); if (Version < VERSION.number) { throw new System.Exception(Global.FMODVERSION_ERROR); } //Check driver CheckDriver(); }
public FmodAudio() { uint version = 0; FMOD.RESULT result; result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { throw new Exception("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); } //result = system.init(40, FMOD.INITFLAG.NORMAL| FMOD.INITFLAG._3D_RIGHTHANDED, (IntPtr)null); result = system.init(40, FMOD.INITFLAG.NORMAL, (IntPtr)null); ERRCHECK(result); result = system.set3DSettings(1, 1, 10); ERRCHECK(result); }
private void MultiSpeakerOutput_Load(object sender, System.EventArgs e) { uint version = 0; FMOD.RESULT result; /* * Create a System object and initialize. */ result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); Application.Exit(); } /* * Choose the highest mode possible. * If the user doesn't have 7.1 speakers, then only the speakers they have will be audible. */ system.setSpeakerMode(FMOD.SPEAKERMODE._7POINT1); ERRCHECK(result); result = system.init(32, FMOD.INITFLAGS.NORMAL, (IntPtr)null); ERRCHECK(result); result = system.createSound("../../../../../examples/media/drumloop.wav", (FMOD.MODE.SOFTWARE | FMOD.MODE._2D), ref sound1); ERRCHECK(result); result = sound1.setMode(FMOD.MODE.LOOP_OFF); ERRCHECK(result); result = system.createSound("../../../../../examples/media/stereo.ogg", (FMOD.MODE.SOFTWARE | FMOD.MODE._2D), ref sound2); ERRCHECK(result); }
public static void MultiSpeakerOutput_Load() { uint version = 0; FMOD.RESULT result; result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { Console.WriteLine("You are using an old version of FMOD FIX DAT! - rusty"); } system.setSpeakerMode(FMOD.SPEAKERMODE._7POINT1); ERRCHECK(result); result = system.init(512, FMOD.INITFLAGS.NORMAL, (IntPtr)null); ERRCHECK(result); }
private void Form1_Load(object sender, System.EventArgs e) { uint version = 0; FMOD.RESULT result; /* * Create a System object and initialize. */ result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); Application.Exit(); } /* * Set the source directory for all of the FMOD plugins. */ result = system.setPluginPath("../../../../../api/plugins"); ERRCHECK(result); /* * Load up an extra plugin that is not normally used by FMOD. */ uint handle = 0; result = system.loadPlugin("output_mp3.dll", ref handle, 0); if (result == FMOD.RESULT.ERR_FILE_NOTFOUND) { /* * If it isn't in the same directory, try for the plugin directory. */ result = system.loadPlugin("../../../../../examples/plugin_dev/output_mp3/output_mp3.dll", ref handle, 0); ERRCHECK(result); } /* * Display plugins */ { int num = 0; StringBuilder name = new StringBuilder(256); result = system.getNumPlugins(FMOD.PLUGINTYPE.CODEC, ref num); ERRCHECK(result); for (int count = 0; count < num; count++) { FMOD.PLUGINTYPE plugin_type = FMOD.PLUGINTYPE.CODEC; result = system.getPluginHandle(FMOD.PLUGINTYPE.CODEC, count, ref handle); ERRCHECK(result); result = system.getPluginInfo(handle, ref plugin_type, name, name.Capacity, ref version); ERRCHECK(result); codecList.Items.Add(name); } result = system.getNumPlugins(FMOD.PLUGINTYPE.DSP, ref num); ERRCHECK(result); for (int count = 0; count < num; count++) { FMOD.PLUGINTYPE plugin_type = FMOD.PLUGINTYPE.DSP; result = system.getPluginHandle(FMOD.PLUGINTYPE.DSP, count, ref handle); ERRCHECK(result); result = system.getPluginInfo(handle, ref plugin_type, name, name.Capacity, ref version); ERRCHECK(result); dspList.Items.Add(name); } result = system.getNumPlugins(FMOD.PLUGINTYPE.OUTPUT, ref num); ERRCHECK(result); for (int count = 0; count < num; count++) { FMOD.PLUGINTYPE plugin_type = FMOD.PLUGINTYPE.OUTPUT; result = system.getPluginHandle(FMOD.PLUGINTYPE.OUTPUT, count, ref handle); ERRCHECK(result); result = system.getPluginInfo(handle, ref plugin_type, name, name.Capacity, ref version); ERRCHECK(result); outputList.Items.Add(name); } } }
public bool Create(SoundSystemConfig config) { uint version = 0; int samplerate = 44100; FMOD.SOUND_FORMAT format = FMOD.SOUND_FORMAT.PCM16; FMOD.RESULT result = FMOD.Factory.System_Create(ref m_system); if (ERRCHECK(result, "Create") == false) { return(false); } result = m_system.getVersion(ref version); if (!ERRCHECK(result)) { return(false); } if (version < FMOD.VERSION.number) { Console.WriteLine("INCORRECT DLL VERSION!!", "FMOD ERROR"); return(false); } result = m_system.setDriver(config.SoundCard); ERRCHECK(result); switch (config.Output) { case RASOUNDAUSGABE.WINMM: m_system.setOutput(FMOD.OUTPUTTYPE.WINMM); break; case RASOUNDAUSGABE.WASAPI: m_system.setOutput(FMOD.OUTPUTTYPE.WASAPI); break; case RASOUNDAUSGABE.DSOUND: m_system.setOutput(FMOD.OUTPUTTYPE.DSOUND); break; case RASOUNDAUSGABE.ASIO: m_system.setOutput(FMOD.OUTPUTTYPE.ASIO); break; } ; switch (config.Format) { case RASOUNDFORMAT.PCM16_44100: samplerate = 44100; format = FMOD.SOUND_FORMAT.PCM16; break; case RASOUNDFORMAT.PCM16_48000: samplerate = 48000; format = FMOD.SOUND_FORMAT.PCM16; break; case RASOUNDFORMAT.PCM16_96000: samplerate = 96000; format = FMOD.SOUND_FORMAT.PCM16; break; case RASOUNDFORMAT.PCM24_44100: samplerate = 44100; format = FMOD.SOUND_FORMAT.PCM24; break; case RASOUNDFORMAT.PCM24_48000: samplerate = 48000; format = FMOD.SOUND_FORMAT.PCM24; break; case RASOUNDFORMAT.PCM24_96000: samplerate = 96000; format = FMOD.SOUND_FORMAT.PCM24; break; case RASOUNDFORMAT.PCM24_192000: samplerate = 192000; format = FMOD.SOUND_FORMAT.PCM24; break; case RASOUNDFORMAT.PCMFLOAT_44100: samplerate = 44100; format = FMOD.SOUND_FORMAT.PCMFLOAT; break; case RASOUNDFORMAT.PCMFLOAT_48000: samplerate = 48000; format = FMOD.SOUND_FORMAT.PCMFLOAT; break; case RASOUNDFORMAT.PCMFLOAT_96000: samplerate = 96000; format = FMOD.SOUND_FORMAT.PCMFLOAT; break; case RASOUNDFORMAT.PCMFLOAT_192000: samplerate = 192000; format = FMOD.SOUND_FORMAT.PCMFLOAT; break; case RASOUNDFORMAT.PCM32_44100: samplerate = 44100; format = FMOD.SOUND_FORMAT.PCM32; break; case RASOUNDFORMAT.PCM32_48000: samplerate = 48000; format = FMOD.SOUND_FORMAT.PCM32; break; case RASOUNDFORMAT.PCM32_96000: samplerate = 96000; format = FMOD.SOUND_FORMAT.PCM32; break; case RASOUNDFORMAT.PCM32_192000: samplerate = 192000; format = FMOD.SOUND_FORMAT.PCM32; break; } m_system.setSoftwareFormat(samplerate, format, 0, 0, FMOD.DSP_RESAMPLER.LINEAR); switch (config.Channel) { case RACHANNELMODE.Mono: result = m_system.setSpeakerMode(FMOD.SPEAKERMODE.MONO); break; case RACHANNELMODE.Stereo: result = m_system.setSpeakerMode(FMOD.SPEAKERMODE.STEREO); break; case RACHANNELMODE.Quad: result = m_system.setSpeakerMode(FMOD.SPEAKERMODE.QUAD); break; case RACHANNELMODE.FiveDotOne: result = m_system.setSpeakerMode(FMOD.SPEAKERMODE._5POINT1); break; case RACHANNELMODE.SevenDotOne: result = m_system.setSpeakerMode(FMOD.SPEAKERMODE._7POINT1); break; case RACHANNELMODE.Surround: result = m_system.setSpeakerMode(FMOD.SPEAKERMODE.SURROUND); break; } ; result = m_system.init(32, FMOD.INITFLAGS._3D_RIGHTHANDED | FMOD.INITFLAGS.DTS_NEURALSURROUND, IntPtr.Zero); if (!ERRCHECK(result)) { return(false); } m_system.set3DSettings(1.0f, 1.0f, 1.0f); Console.WriteLine("[FMOD] SoundSystem created"); m_system.get3DListenerAttributes(0, ref pos, ref vel, ref forward, ref up); return(true); }
protected virtual IEnumerator Start() { this.gameObjectName = this.gameObject.name; /* * Create a System object and initialize. */ result = FMOD.Factory.System_Create(out system); ERRCHECK(result, "Factory.System_Create"); result = system.getVersion(out version); ERRCHECK(result, "system.getVersion"); if (version < FMOD.VERSION.number) { var msg = string.Format("FMOD lib version {0} doesn't match header version {1}", version, FMOD.VERSION.number); LOG(LogLevel.ERROR, msg); if (this.OnError != null) { this.OnError.Invoke(this.gameObjectName, msg); } throw new System.Exception(msg); } /* * initial internal FMOD samplerate should be 48000 on desktop; we change it on the sound only when stream requests it. */ result = system.setSoftwareFormat(48000, this.speakerMode, this.numOfRawSpeakers); ERRCHECK(result, "system.setSoftwareFormat"); int rate; FMOD.SPEAKERMODE sm; int smch; result = system.getSoftwareFormat(out rate, out sm, out smch); ERRCHECK(result, "system.getSoftwareFormat"); LOG(LogLevel.INFO, "FMOD samplerate: {0}, speaker mode: {1}, num. of raw speakers {2}", rate, sm, smch); // must be be4 init on iOS ... //result = system.setOutput(FMOD.OUTPUTTYPE.NOSOUND); //ERRCHECK(result, "system.setOutput"); if (this is AudioStreamMinimal) { result = system.init(8, FMOD.INITFLAGS.NORMAL, extradriverdata); } else { result = system.init(8, FMOD.INITFLAGS.STREAM_FROM_UPDATE, extradriverdata); } ERRCHECK(result, "system.init"); /* Increase the file buffer size a little bit to account for Internet lag. */ result = system.setStreamBufferSize(streamBufferSize, FMOD.TIMEUNIT.RAWBYTES); ERRCHECK(result, "system.setStreamBufferSize"); /* tags ERR_FILE_COULDNOTSEEK: * http://stackoverflow.com/questions/7154223/streaming-mp3-from-internet-with-fmod * http://www.fmod.org/docs/content/generated/FMOD_System_SetFileSystem.html */ result = system.setFileSystem(null, null, null, null, null, null, -1); ERRCHECK(result, "system.setFileSystem"); if (this.playOnStart) { this.Play(); } yield return(null); this.ready = true; }
private void Form1_Load(object sender, System.EventArgs e) { int count = 0; uint version = 0; FMOD.RESULT result; /* * Create a System object and initialize. */ result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); Application.Exit(); } result = system.init(32, FMOD.INITFLAGS.NORMAL, (IntPtr)null); ERRCHECK(result); result = system.createSound("../../../../../examples/media/drumloop.wav", FMOD.MODE.SOFTWARE | FMOD.MODE.LOOP_NORMAL, ref sound[0]); ERRCHECK(result); result = system.createSound("../../../../../examples/media/jaguar.wav", FMOD.MODE.SOFTWARE | FMOD.MODE.LOOP_NORMAL, ref sound[1]); ERRCHECK(result); result = system.createSound("../../../../../examples/media/c.ogg", FMOD.MODE.SOFTWARE | FMOD.MODE.LOOP_NORMAL, ref sound[2]); ERRCHECK(result); result = system.createSound("../../../../../examples/media/d.ogg", FMOD.MODE.SOFTWARE | FMOD.MODE.LOOP_NORMAL, ref sound[3]); ERRCHECK(result); result = system.createSound("../../../../../examples/media/e.ogg", FMOD.MODE.SOFTWARE | FMOD.MODE.LOOP_NORMAL, ref sound[4]); ERRCHECK(result); result = system.createChannelGroup("Group A", ref groupA); ERRCHECK(result); result = system.createChannelGroup("Group B", ref groupB); ERRCHECK(result); result = system.getMasterChannelGroup(ref masterGroup); ERRCHECK(result); result = masterGroup.addGroup(groupA); ERRCHECK(result); result = masterGroup.addGroup(groupB); ERRCHECK(result); /* * Start all the sounds! */ for (count = 0; count < 5; count++) { result = system.playSound(FMOD.CHANNELINDEX.FREE, sound[count], true, ref channel[count]); ERRCHECK(result); if (count < 2) { result = channel[count].setChannelGroup(groupA); } else { result = channel[count].setChannelGroup(groupB); } ERRCHECK(result); result = channel[count].setPaused(false); ERRCHECK(result); } /* * Create the DSP effects we want to apply to our submixes. */ result = system.createDSPByType(FMOD.DSP_TYPE.ECHO, ref dspecho); ERRCHECK(result); result = system.createDSPByType(FMOD.DSP_TYPE.FLANGE, ref dspflange); ERRCHECK(result); result = dspflange.setParameter((int)FMOD.DSP_FLANGE.RATE, 1.0f); ERRCHECK(result); result = system.createDSPByType(FMOD.DSP_TYPE.LOWPASS, ref dsplowpass); ERRCHECK(result); result = dsplowpass.setParameter((int)FMOD.DSP_LOWPASS.CUTOFF, 500.0f); ERRCHECK(result); }
private void threeD_Load(object sender, System.EventArgs e) { uint version = 0; FMOD.RESULT result; trackBarPosition.Enabled = false; /* * Create a System object and initialize. */ result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); Application.Exit(); } FMOD.CAPS caps = FMOD.CAPS.NONE; FMOD.SPEAKERMODE speakermode = FMOD.SPEAKERMODE.STEREO; int outputrate = 0; StringBuilder name = new StringBuilder(128); result = system.getDriverCaps(0, ref caps, ref outputrate, ref speakermode); ERRCHECK(result); result = system.setSpeakerMode(speakermode); /* Set the user selected speaker mode. */ ERRCHECK(result); if ((caps & FMOD.CAPS.HARDWARE_EMULATED) == FMOD.CAPS.HARDWARE_EMULATED) /* The user has the 'Acceleration' slider set to off! This is really bad for latency!. */ { /* You might want to warn the user about this. */ result = system.setDSPBufferSize(1024, 10); /* At 48khz, the latency between issuing an fmod command and hearing it will now be about 213ms. */ ERRCHECK(result); } FMOD.GUID guid = new FMOD.GUID(); result = system.getDriverInfo(0, name, 256, ref guid); ERRCHECK(result); if (name.ToString().IndexOf("SigmaTel") != -1) /* Sigmatel sound devices crackle for some reason if the format is pcm 16bit. pcm floating point output seems to solve it. */ { result = system.setSoftwareFormat(48000, FMOD.SOUND_FORMAT.PCMFLOAT, 0, 0, FMOD.DSP_RESAMPLER.LINEAR); ERRCHECK(result); } result = system.init(32, FMOD.INITFLAGS.NORMAL, (IntPtr)null); if (result == FMOD.RESULT.ERR_OUTPUT_CREATEBUFFER) { result = system.setSpeakerMode(FMOD.SPEAKERMODE.STEREO); /* Ok, the speaker mode selected isn't supported by this soundcard. Switch it back to stereo... */ ERRCHECK(result); result = system.init(32, FMOD.INITFLAGS.NORMAL, (IntPtr)null); /* Replace with whatever channel count and flags you use! */ ERRCHECK(result); } /* * Set the distance units. (meters/feet etc). */ result = system.set3DSettings(1.0f, DISTANCEFACTOR, 1.0f); ERRCHECK(result); /* * Load some sounds */ result = system.createSound("../../../../../examples/media/drumloop.wav", (FMOD.MODE.HARDWARE | FMOD.MODE._3D), ref sound1); ERRCHECK(result); result = sound1.set3DMinMaxDistance(2.0f * DISTANCEFACTOR, 10000.0f * DISTANCEFACTOR); ERRCHECK(result); result = sound1.setMode(FMOD.MODE.LOOP_NORMAL); ERRCHECK(result); result = system.createSound("../../../../../examples/media/jaguar.wav", (FMOD.MODE.HARDWARE | FMOD.MODE._3D), ref sound2); ERRCHECK(result); result = sound2.set3DMinMaxDistance(2.0f * DISTANCEFACTOR, 10000.0f * DISTANCEFACTOR); ERRCHECK(result); result = sound2.setMode(FMOD.MODE.LOOP_NORMAL); ERRCHECK(result); result = system.createSound("../../../../../examples/media/swish.wav", (FMOD.MODE.HARDWARE | FMOD.MODE._2D), ref sound3); ERRCHECK(result); /* * Play sounds at certain positions */ { FMOD.VECTOR pos1 = new FMOD.VECTOR(); pos1.x = -10.0f * DISTANCEFACTOR; pos1.y = -0.0f; pos1.z = 0.0f; FMOD.VECTOR vel1 = new FMOD.VECTOR(); vel1.x = 0.0f; vel1.y = 0.0f; vel1.z = 0.0f; result = system.playSound(FMOD.CHANNELINDEX.FREE, sound1, true, ref channel1); ERRCHECK(result); result = channel1.set3DAttributes(ref pos1, ref vel1); ERRCHECK(result); result = channel1.setPaused(false); ERRCHECK(result); } { FMOD.VECTOR pos2 = new FMOD.VECTOR(); pos2.x = 15.0f * DISTANCEFACTOR; pos2.y = -0.0f; pos2.z = -0.0f; FMOD.VECTOR vel2 = new FMOD.VECTOR(); vel2.x = 0.0f; vel2.y = 0.0f; vel2.z = 0.0f; result = system.playSound(FMOD.CHANNELINDEX.FREE, sound2, true, ref channel2); ERRCHECK(result); result = channel2.set3DAttributes(ref pos2, ref vel2); ERRCHECK(result); result = channel2.setPaused(false); ERRCHECK(result); } lastpos.x = 0.0f; lastpos.y = 0.0f; lastpos.z = 0.0f; listenerpos.x = 0.0f; listenerpos.y = 0.0f; listenerpos.z = -1.0f * DISTANCEFACTOR; }
public static void PlaySound(string id) { if (!inited) { return; } if (!Properties.Settings.Default.use_sound) { return; } //if (player != null) player.StopAllSounds(); //if (player == null) player = new ISoundEngine(); if (sound != null) { StopSound(); } if (volume == -1) { volume = Properties.Settings.Default.sound_volume; } switch (id) { case "TaxiFromGate": file = Application.StartupPath + "/sfx/crew2_safetyaboard.mp3"; break; case "BeforeTakeoff": file = Application.StartupPath + "/sfx/crew_preparetakeoff.mp3"; break; case "Descent": file = Application.StartupPath + "/sfx/crew6_descent.mp3"; break; case "Landing": file = Application.StartupPath + "/sfx/crew7_beforelandnight.mp3"; break; case "TaxiToGate": file = Application.StartupPath + "/sfx/crew8_aftland.mp3"; break; } try { FMOD.RESULT result; uint version = 0; result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); } result = system.init(32, FMOD.INITFLAGS.NORMAL, (IntPtr)null); ERRCHECK(result); result = system.createSound(file, FMOD.MODE.HARDWARE, ref sound); ERRCHECK(result); result = system.playSound(FMOD.CHANNELINDEX.FREE, sound, false, ref channel); ERRCHECK(result); channel.setVolume(volume); } catch (Exception e) { Logger.Log("SoundFactory Error: " + e.ToString()); } //player.SoundVolume = volume; // player.Play2D(file); }
private void Form1_Load(object sender, System.EventArgs e) { FMOD.CREATESOUNDEXINFO exinfo = new FMOD.CREATESOUNDEXINFO(); FMOD.RESULT result; uint version = 0; /* * Create a System object and initialize. */ result = FMOD.Factory.System_Create(ref system); ERRCHECK(result); result = system.getVersion(ref version); ERRCHECK(result); if (version < FMOD.VERSION.number) { MessageBox.Show("Error! You are using an old version of FMOD " + version.ToString("X") + ". This program requires " + FMOD.VERSION.number.ToString("X") + "."); Application.Exit(); } result = system.init(1, FMOD.INITFLAGS.NORMAL, (IntPtr)null); ERRCHECK(result); /* * Set up the FMOD_CREATESOUNDEXINFO structure for the user stream with room for 2 subsounds. (our subsound double buffer) */ exinfo.cbsize = Marshal.SizeOf(exinfo); exinfo.defaultfrequency = 44100; exinfo.numsubsounds = 2; exinfo.numchannels = 1; exinfo.format = FMOD.SOUND_FORMAT.PCM16; /* * Create the 'parent' stream that contains the substreams. Set it to loop so that it loops between subsound 0 and 1. */ result = system.createStream("", FMOD.MODE.LOOP_NORMAL | FMOD.MODE.OPENUSER, ref exinfo, ref sound); ERRCHECK(result); /* * Add 2 of our streams as children of the parent. They should be the same format (ie mono/stereo and bitdepth) as the parent sound. * When subsound 0 has finished and it is playing subsound 1, we will swap subsound 0 with a new sound, and the same for when subsound 1 has finished, * causing a continual double buffered flip, which means continuous sound. */ result = system.createStream(soundname[0], FMOD.MODE.DEFAULT, ref subsound[0]); ERRCHECK(result); result = system.createStream(soundname[1], FMOD.MODE.DEFAULT, ref subsound[1]); ERRCHECK(result); result = sound.setSubSound(0, subsound[0]); ERRCHECK(result); result = sound.setSubSound(1, subsound[1]); ERRCHECK(result); /* * Set up the gapless sentence to contain these first 2 streams. */ { int[] soundlist = { 0, 1 }; result = sound.setSubSoundSentence(soundlist, 2); ERRCHECK(result); } subsoundid = 0; sentenceid = 2; /* The next sound to be appeneded to the stream. */ /* * Play the sound. */ result = system.playSound(FMOD.CHANNELINDEX.FREE, sound, false, ref channel); ERRCHECK(result); }