示例#1
0
        //Ecris dans un fichier depuis un WAV
        public static void WriteFile(string path, DataHeader Header, byte[] Buffer)
        {
            FileStream fileStream = new FileStream(path, FileMode.Create);

            BinaryWriter writer = new BinaryWriter(fileStream);

            //Ecrire le chunk de base
            writer.Write(Header.FileTypeID);
            writer.Write(Header.FileLenght);
            writer.Write(Header.MediaTypedID);

            //Ecrire le chunck du format
            writer.Write(Header.ChunkIDFormat);
            writer.Write(Header.ChunkSizeFormat);
            writer.Write(Header.FormatTag);
            writer.Write(Header.Channels);
            writer.Write(Header.Frequency);
            writer.Write(Header.AverageBytesPerSec);
            writer.Write(Header.BlockAlign);
            writer.Write(Header.BitsPerSample);

            //Ecrire le chunck de données
            writer.Write(Header.ChunkIDData);
            writer.Write(Header.ChunkSizeData);
            foreach(byte dataPoint in Buffer)
            {
                writer.Write(dataPoint);
            }

            //Fermeture des streams
            writer.Close();
            fileStream.Close();
        }
示例#2
0
 private DataHeader CreateHeader(short formatAudio, short channels, int frequency, short bitspersample)
 {
     DataHeader tmp = new DataHeader();
     tmp.FileTypeID = "RIFF".ToCharArray();
     tmp.MediaTypedID ="WAVE".ToCharArray();
     tmp.ChunkIDFormat = "fmt ".ToCharArray();
     tmp.ChunkIDData = "data".ToCharArray();
     tmp.ChunkSizeFormat = 16;
     tmp.FormatTag = formatAudio;
     tmp.Channels = channels;
     tmp.Frequency = frequency;
     tmp.BitsPerSample = bitspersample;
     tmp.BlockAlign = (short) (tmp.Channels * (tmp.BitsPerSample / 8));
     tmp.AverageBytesPerSec = tmp.Frequency * tmp.BlockAlign;
     return tmp;
 }
示例#3
0
        private DataHeader CreateHeader(short formatAudio, short channels, int frequency, short bitspersample)
        {
            DataHeader tmp = new DataHeader();

            tmp.FileTypeID         = "RIFF".ToCharArray();
            tmp.MediaTypedID       = "WAVE".ToCharArray();
            tmp.ChunkIDFormat      = "fmt ".ToCharArray();
            tmp.ChunkIDData        = "data".ToCharArray();
            tmp.ChunkSizeFormat    = 16;
            tmp.FormatTag          = formatAudio;
            tmp.Channels           = channels;
            tmp.Frequency          = frequency;
            tmp.BitsPerSample      = bitspersample;
            tmp.BlockAlign         = (short)(tmp.Channels * (tmp.BitsPerSample / 8));
            tmp.AverageBytesPerSec = tmp.Frequency * tmp.BlockAlign;
            return(tmp);
        }
示例#4
0
文件: WAV.cs 项目: MYheavyGo/AoEdit
        public WAV(string name, Stream wavFile)
        { 
            //Constructeur
            Name = name;
            StreamWAV = wavFile;
            Header = new DataHeader();
            Log = ReadBuffer();
            if (Passed)
            {
                Samples = new float[Buffer.Length];
                for (int i = 0; i < Buffer.Length - 1; i++)
                {
                    Samples[i] = BitConverter.ToInt16(Buffer, i);
                }
            }

            Player = new WAVPlay(name);
        }
示例#5
0
        //Mets à jour les infos du WAV
        private void updateInfos(ref DataHeader header)
        {
            if (!wav.Passed)
            {
                MessageBox.Show(wav.Log + ".\nVeuillez sélectionné un autre fichier.", "Format du fichier", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            lblFileName.Content = Filename.Substring(Filename.LastIndexOf('\\') + 1);
            lblFormat.Content = new string(header.MediaTypedID, 0, 4);
            lblSize.Content = Constants.SizeSuffix(header.FileLenght);
            lblAudioFormat.Content = "PCM";
            if (header.Channels > 1)
                lblChannels.Content = "Stéréo";
            else
                lblChannels.Content = "Mono";
            lblBitrate.Content = Constants.SizeSuffix(header.AverageBytesPerSec) + "/s";
            lblSamplingRate.Content = header.BitsPerSample;
            txtBlockLog.Text = wav.Log;

            DrawSignal();
        }