Esempio n. 1
0
 public void PlayLineSound()
 {
     if (mstripTop.InvokeRequired)
     {
         SoundCallbackDelegate d = new SoundCallbackDelegate(PlayLineSound);
         this.Invoke(d);
     }
     else
     {
         _linePlayer.Play();
     }
 }
Esempio n. 2
0
 public void PlayGameOverSound()
 {
     if (mstripTop.InvokeRequired)
     {
         SoundCallbackDelegate d = new SoundCallbackDelegate(PlayGameOverSound);
         this.Invoke(d);
     }
     else
     {
         _gameOverPlayer.Play();
     }
 }
Esempio n. 3
0
 public void StopMusic()
 {
     if (mstripTop.InvokeRequired)
     {
         SoundCallbackDelegate d = new SoundCallbackDelegate(StopMusic);
         this.Invoke(d);
     }
     else
     {
         _musicPlayer.Stop();
     }
 }
Esempio n. 4
0
        /// <summary>
        /// サウンド再生で用いると便利かも知れないヘルパメソッド
        ///
        /// 詳しいことは、この実装と、このメソッドの呼び出し元を見て。
        /// </summary>
        /// <param name="no"></param>
        /// <param name="dg"></param>
        /// <returns></returns>
        public YanesdkResult SoundHelper(int no, SoundCallbackDelegate dg)
        {
            if (!EnableSound)
            {
                return(YanesdkResult.NoError);                // そのまま帰ればok
            }
            Sound s = GetSound(no);

            if (s == null)
            {
                return(YanesdkResult.PreconditionError);                // 存在しない
            }
            else
            {
                return(dg(s));
            }
        }
Esempio n. 5
0
 public static extern void mame_set_sound_callback(SoundCallbackDelegate cb);
Esempio n. 6
0
        public void Start(DeviceInfo device)
        {
            if (waveHandle != IntPtr.Zero)
            {
                return;
            }

            var  devByName   = EnumerateDevices().FirstOrDefault(i => i.name == device.name);
            uint deviceIndex = ((uint?)devByName?.index) ?? WAVE_MAPPER;

            WAVEFORMATEX waveFormatEx = new WAVEFORMATEX();

            waveFormatEx.wFormatTag     = WAVE_FORMAT_PCM;
            waveFormatEx.nChannels      = channels;
            waveFormatEx.nSamplesPerSec = sampleRate;
            waveFormatEx.wBitsPerSample = bitsPerSample;
            waveFormatEx.cbSize         = 0;

            waveFormatEx.nBlockAlign     = (ushort)(waveFormatEx.nChannels * waveFormatEx.wBitsPerSample / 8);
            waveFormatEx.nAvgBytesPerSec = waveFormatEx.nSamplesPerSec * waveFormatEx.nBlockAlign;

            if (mode == Mode.Record)
            {
                soundCallbackDelegate = SoundCallbackRecording;
                CheckError(waveInOpen(ref waveHandle, deviceIndex, ref waveFormatEx, soundCallbackDelegate, this, CALLBACK_FUNCTION));
            }
            else if (mode == Mode.Play)
            {
                soundCallbackDelegate = SoundCallbackPlaying;
                CheckError(waveOutOpen(ref waveHandle, deviceIndex, ref waveFormatEx, soundCallbackDelegate, this, CALLBACK_FUNCTION));
            }

            warmup = 2;

            for (int i = 0; i < 2; ++i)
            {
                unsafe
                {
                    bufferIP[i] = Marshal.AllocHGlobal(32); // to prevent GC from deleting

                    WAVEHDR *bufptr = (WAVEHDR *)bufferIP[i].ToPointer();

                    bufptr->lpData         = Marshal.AllocHGlobal((int)bufferLengthBytes);
                    bufptr->dwBufferLength = bufferLengthBytes;
                    bufptr->dwFlags        = 0;

                    short[] data = new short[bufferLengthBytes / 2];
                    Marshal.Copy(data, 0, bufptr->lpData, (int)(bufferLengthBytes / 2));

                    if (mode == Mode.Record)
                    {
                        CheckError(waveInPrepareHeader(waveHandle, ref *bufptr, 32));
                        CheckError(waveInAddBuffer(waveHandle, ref *(WAVEHDR *)bufferIP[i].ToPointer(), 32));
                    }
                    else if (mode == Mode.Play)
                    {
                        CheckError(waveOutPrepareHeader(waveHandle, ref *bufptr, 32));
                        CheckError(waveOutWrite(waveHandle, ref *(WAVEHDR *)bufferIP[i].ToPointer(), 32));
                    }
                }
            }

            if (mode == Mode.Record)
            {
                CheckError(waveInStart(waveHandle));
            }
        }
Esempio n. 7
0
 private static extern uint waveOutOpen(ref IntPtr phwi, uint deviceID, ref WAVEFORMATEX wfx, SoundCallbackDelegate dwCallback, SoundWrapper dwInstance, uint dwFlags);