Example #1
0
        private void nextTrack_Click(object sender, System.EventArgs e)
        {
            FMOD.RESULT result;

            currenttrack++;
            if (currenttrack >= numtracks)
            {
                currenttrack = 0;
            }
            result = cdsound.getSubSound(currenttrack, ref sound);
            ERRCHECK(result);
            result = system.playSound(FMOD.CHANNELINDEX.FREE, sound, false, ref channel);
            ERRCHECK(result);
        }
Example #2
0
 public void Play(string name, byte[] soundBuf)
 {
     FMOD.CREATESOUNDEXINFO sndInfo = new FMOD.CREATESOUNDEXINFO()
     {
         length = (uint)soundBuf.Length,
     };
     FMOD.RESULT result = system.createSound(soundBuf, FMOD.MODE.OPENMEMORY, ref sndInfo, out sound);
     ERRCHECK(result, "system.createSound");
     if (result == FMOD.RESULT.OK)
     {
         int numSubSounds;
         result = sound.getNumSubSounds(out numSubSounds);
         ERRCHECK(result, "sound.getNumSubSounds");
         if (numSubSounds > 0)
         {
             result = sound.getSubSound(0, out subSound);
             ERRCHECK(result, "sound.getSubSound");
             result = system.playSound(subSound, null, false, out channel);
         }
         else
         {
             result = system.playSound(sound, null, false, out channel);
         }
         ERRCHECK(result, "sound.playSound");
     }
 }
Example #3
0
        private void PlayPause_Click(object sender, EventArgs e)
        {
            fsb.getSubSound(0, ref subsound);
            FMOD.RESULT res = system.playSound(FMOD.CHANNELINDEX.FREE, subsound, false, ref channel);

            if (res != FMOD.RESULT.OK)
            {
                MessageBox.Show("Cannot Play file.  Reason: " + res.ToString(), "FMOD Load Error", MessageBoxButtons.OK);
            }
        }
Example #4
0
        /// <summary>
        /// Spielt die angegebene Musikdatei ab.
        /// </summary>
        /// <param name="filename"></param>
        public void Play(string filename)
        {
            Filename = filename;

            if (!this.isPreListenSoundEngine)
            {
                if (currentSoundIndex == 0)
                {
                    currentSoundIndex = 1;
                }
                else
                {
                    currentSoundIndex = 0;
                }
            }

            if (IsPlaying)
            {
                Stop();
            }

            FMOD.RESULT result = FMOD.RESULT.OK;

            if (filename.StartsWith("cd:"))
            {
                string cdDrive     = string.Format("{0}:", filename[3]);
                int    trackNumber = Miscellaneous.Misc.Atoi(filename.Substring(5));

                if (Settings.Current.UseMCI)
                {
                    if (mciCDEngine == null)
                    {
                        mciCDEngine = new MCICDEngine();
                        mciCDEngine.Open(cdSoundDriveLetter[0]);
                    }

                    currentCDTrackNumber = trackNumber;

                    mciCDEngine.PlayTrack(trackNumber);
                    return;
                }
                else
                {
                    if (cdSound == null)
                    {
                        result = system.createStream(cdDrive, (FMOD.MODE._2D | FMOD.MODE.HARDWARE), ref cdSound);
                        ERRCHECK(result);
                    }
                    else
                    {
                        if (cdDrive != cdSoundDriveLetter)
                        {
                            cdSound.release();

                            result = system.createStream(cdDrive, (FMOD.MODE._2D | FMOD.MODE.HARDWARE), ref cdSound);
                            ERRCHECK(result);
                        }
                    }

                    if (currentSoundIndex == 0)
                    {
                        result = cdSound.getSubSound(trackNumber, ref sound1);
                    }
                    else
                    {
                        result = cdSound.getSubSound(trackNumber, ref sound2);
                    }
                    ERRCHECK(result);
                }

                cdSoundDriveLetter = cdDrive;
            }
            else
            {
                if (currentSoundIndex == 0)
                {
                    result = system.createStream(filename, (FMOD.MODE._2D | FMOD.MODE.HARDWARE), ref sound1);
                }
                else
                {
                    result = system.createStream(filename, (FMOD.MODE._2D | FMOD.MODE.HARDWARE), ref sound2);
                }
            }
            ERRCHECK(result);

            if (result == FMOD.RESULT.OK)
            {
                if (currentSoundIndex == 0)
                {
                    system.playSound(FMOD.CHANNELINDEX.FREE, currentSound, false, ref channel1);
                }
                else
                {
                    system.playSound(FMOD.CHANNELINDEX.FREE, currentSound, false, ref channel2);
                }

                // Hiermit wird der neu spielende Track "stumm" geschaltet.
                IsMuted = IsMuted;

                // Aktuelle Lautstärke setzen
                Volume = Volume;

                /*string str = string.Format("Detecting BPM...");
                 * Big3.Hitbase.SharedResources.HitbaseCommands.SetMainStatusText.Execute(str, System.Windows.Application.Current.MainWindow);
                 *
                 * BackgroundWorker bw = new BackgroundWorker();
                 * bw.DoWork += delegate
                 * {
                 *  float bpm = BPMDetection(filename);
                 *  CurrentTrackBPM = (int)(bpm + 0.5);         // Runden
                 * };
                 * bw.RunWorkerCompleted += delegate
                 * {
                 *  string bpmDetected = string.Format("BPM: {0}", CurrentTrackBPM);
                 *  Big3.Hitbase.SharedResources.HitbaseCommands.SetMainStatusText.Execute(bpmDetected, System.Windows.Application.Current.MainWindow);
                 * };
                 * bw.RunWorkerAsync();*/
            }
        }