0

wavファイルを選択するサンプルプログラムを作成すると、選択したファイルを2倍速または4倍速で再生できます

前のアプリのコードは次のとおりです。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace PlayWave
{
    public partial class Form1 : Form
    {
        private byte[] B;
        private OpenFileDialog open;
        public Form1()
        {
            open = new OpenFileDialog();
            open.Filter = "Wav Sound File (*.Wav)|*.wav";
            InitializeComponent();
        }

        private void SelectFile_Click(object sender, EventArgs e)
        {
            if (!(open.ShowDialog() == DialogResult.OK))
            {
                return;
            }
        }

        private void twoX_Click(object sender, EventArgs e)
        {
            B = File.ReadAllBytes(open.FileName);
            int samplerate = BitConverter.ToInt32(B, 24) * 2;
            Array.Copy(BitConverter.GetBytes(samplerate), 0, B, 24, 4);
            using (System.Media.SoundPlayer SP = new System.Media.SoundPlayer(new MemoryStream(B)))
            {
                SP.Play();
            }
        }

        private void fourX_Click(object sender, EventArgs e)
        {
            B = File.ReadAllBytes(open.FileName);
            int samplerate = BitConverter.ToInt32(B, 24) * 4;
            Array.Copy(BitConverter.GetBytes(samplerate), 0, B, 24, 4);
            using (System.Media.SoundPlayer SP = new System.Media.SoundPlayer(new MemoryStream(B)))
            {
                SP.Play();
            }
        }
    }
}

上記では、wave ファイルのサンプル レートを表すファイルの (25,26,27,28) バイトの値を変更し、変更を保存して System.Media.SoundPlayer と MemoryStream を使用してファイルを再生しました。

私の問題は、ボタンをクリックすると、ファイルが 3 回のクリックで 2 倍速で再生され、プログラムが停止し、エラー メッセージが表示されることです。

4

0 に答える 0