评论会员:会员8259962 时间:2012/01/25
您好人人,
我知道有一个MATLAB函数,知道计算从wav文件
频率没有人知道是否有类似的东西在C#
非常感谢,
|会员8395330
评论会员:游客 时间:2012/01/25
友情链接帮助,代码考虑不周
会员8395330
评论会员:游客 时间:2012/01/25
你从C编程来我猜......如果我运行你的程序我得到吨例外@C#2010或编译的ILEXE(选择文件已在使用中)(线程重叠)(选定的文件由另一个线程使用)WTFsrsly!所有必要的数据存储在单独的变量,CMONC#中没有汇编。通常我不写我的代码多数民众赞成,2岁的反馈。但在这种情况下,我看到的是,abstrusely我只需要2设U知道我没有在相同的程序十分之一yourth(长)。如果没有人会看它,他会明白,负载的函数打开的sampledata头和。它存储在不同的子类准备2使用。仅有4个例子...你为什么使用二进制写?它是一种二进制文件...对我不好英语的Sry基因。请解决URcodingstyle!如果我完成我的工作,我时,或通过电子邮件发送给你,如果你想。GreetingzCamalo
会员8209737
评论会员:游客 时间:2012/01/25
我想与这个结合使用你的类:{A6}我试图做codeprelang="cs"spanclass="code-keyword"for/span(spanclass="code-keyword"int/spani=spanclass="code-digit"0/span;i<input.BufferSize;i++){_wav.AddSample_16bit(Convert.ToByte(input[i]));}/pre/code内的codeprespanclass="code-keyword"private/spanspanclass="code-keyword"static/spanspanclass="code-keyword"void/spanAsioDriver_BufferUpdate(spanclass="code-keyword"object/spansender,EventArgse)/pre/code方法,但它只是崩溃,只要我的麦克风送入任何输入。任何意见
?Nightfox
评论会员:游客 时间:2012/01/25
会员8209737写道:{A6}我不知道任何有关该项目。会员8209737写道:codeprelang="c++"_wav.AddSample_16bit(Convert.ToByte(input[i]));/pre/code它看起来像你想添加一个16位的采样,但只给它一个单字节。AddSample_16bit()期望一个短。也许NET是扩大该字节短,但我将可疑。也许这就是为什么它是崩溃。确保您加入,您正在创建的音频文件的比特数相匹配的音频采样。如果您已经创建了一个16位的音频文件,然后确定要添加16位样本。如果您创建了一个8位的音频文件,然后试图添加一个16位的音频采样将无法工作,虽然它应该抛出一个异常,而不是崩溃
UNOWN301
评论会员:游客 时间:2012/01/25
嘿,让我终于得到它的工作在那里我可以从一个流中发挥,但是当我使用此代码,播放流,当我把它称为第二次,失败,并表示头已损坏的..不知道为什么codeprelang="c#"spanclass="code-keyword"public/spanspanclass="code-keyword"void/spanplaySimpleSound(spanclass="code-keyword"object/span_location){spanclass="code-keyword"string/spanlocation=(spanclass="code-keyword"string/span)_location;MemoryStreamms;spanclass="code-keyword"if/span(location==Form1.filterAudioPathSame)ms=Form1.filterAudioSame.Stream;spanclass="code-keyword"else/spanms=Form1.filterAudioDifferent.Stream; SoundPlayersimpleSound=spanclass="code-keyword"new/spanSoundPlayer(ms);simpleSound.Play();}/pre/code
Nightfox
评论会员:游客 时间:2012/01/25
这听起来像这不是一个发布的文章的问题..这听起来像一般意味着问题的净多媒体论坛
。UNOWN301
评论会员:游客 时间:2012/01/25
嘿家伙,我已经做了一些尝试WAV文件,我需要能够播放WAV文件从一个流。我会做的是打开一个文件,得到的wav文件的原始数据。我使用NightFox提供这个类:http://www.codeproject.com/KB/audio-video/CSharpWAVClassAndMixing.aspx然后,当我有我的原始数据,提取,使用WAVFile的内置函数GetNextSampleAs16Bit()。在这里,我所做的类:codeprelang="c#"spanclass="code-keyword"using/spanSystem;spanclass="code-keyword"using/spanSystem.Collections.Generic;spanclass="code-keyword"using/spanSystem.Linq;spanclass="code-keyword"using/spanSystem.Text;spanclass="code-keyword"using/spanSystem.IO;spanclass="code-comment"///spanspanclass="code-comment"Iwanttobeabletoinputalistofshorts,anditwillgiveme/spanspanclass="code-comment"///spanspanclass="code-comment"aplayablestreaminternalwavfile./spanspanclass="code-keyword"namespace/spanAurasen{spanclass="code-keyword"class/spanInternalWAVFile{spanclass="code-keyword"private/spanMemoryStreammMemoryStream;spanclass="code-keyword"private/spanspanclass="code-keyword"bool/spanmStereo;spanclass="code-keyword"private/spanspanclass="code-keyword"int/spanmSampleRateHz;spanclass="code-keyword"private/spanspanclass="code-keyword"short/spanmBitsPerSample;spanclass="code-keyword"private/spanspanclass="code-keyword"int/spanmDataSizeBytes; spanclass="code-keyword"public/spanInternalWAVFile(spanclass="code-keyword"short/span[]samples,spanclass="code-keyword"bool/spanpStereo,spanclass="code-keyword"int/spanpSampleRateHz,spanclass="code-keyword"short/spanpBitsPerSample){spanclass="code-keyword"if/span(mMemoryStream!=spanclass="code-keyword"null/span){mMemoryStream.Close();mMemoryStream.Dispose();mMemoryStream=spanclass="code-keyword"null/span;}mMemoryStream=spanclass="code-keyword"new/spanMemoryStream();mStereo=pStereo;mSampleRateHz=pSampleRateHz;mBitsPerSample=pBitsPerSample;Create();spanclass="code-keyword"foreach/span(spanclass="code-keyword"short/spansspanclass="code-keyword"in/spansamples){spanclass="code-keyword"byte/span[]buffer=BitConverter.GetBytes(s);spanclass="code-keyword"if/span(!BitConverter.IsLittleEndian)Array.Reverse(buffer);AddSample_ByteArray(buffer);}mMemoryStream.Close();}spanclass="code-keyword"public/spanMemoryStreamGetStream(){spanclass="code-keyword"return/spanmMemoryStream;}spanclass="code-keyword"private/spanspanclass="code-keyword"void/spanAddSample_ByteArray(spanclass="code-keyword"byte/span[]pSample){spanclass="code-keyword"try/span{spanclass="code-keyword"int/spannumBytes=pSample.GetLength(spanclass="code-digit"0/span);mMemoryStream.Write(pSample,spanclass="code-digit"0/span,numBytes);}spanclass="code-keyword"catch/span{}} spanclass="code-comment"///spanspanclass="code-comment"AddstheheadertothememorystreamsothatnowIcanaddthedata/spanspanclass="code-keyword"private/spanspanclass="code-keyword"void/spanCreate(){spanclass="code-keyword"try/span{spanclass="code-comment"///spanspanclass="code-comment"setthememberdatafromtheparams/spanspanclass="code-keyword"byte/spanmNumChannels=mStereo?(spanclass="code-keyword"byte/span)spanclass="code-digit"2/span:(spanclass="code-keyword"byte/span)spanclass="code-digit"1/span;spanclass="code-keyword"char/span[]mWAVHeader=spanclass="code-keyword"new/spanspanclass="code-keyword"char/span[spanclass="code-digit"4/span];spanclass="code-keyword"char/span[]mRIFFType=spanclass="code-keyword"new/spanspanclass="code-keyword"char/span[spanclass="code-digit"4/span];spanclass="code-string""/spanspanclass="code-string"RIFF"/span.CopyTo(spanclass="code-digit"0/span,mWAVHeader,spanclass="code-digit"0/span,spanclass="code-digit"4/span);spanclass="code-string""/spanspanclass="code-string"WAVE"/span.CopyTo(spanclass="code-digit"0/span,mRIFFType,spanclass="code-digit"0/span,spanclass="code-digit"4/span);spanclass="code-comment"///spanspanclass="code-comment"RIFFchunk(12bytestotal)/spanspanclass="code-comment"///spanspanclass="code-comment"WritethechunkIDD("RIFF",4bytes)/spanspanclass="code-keyword"byte/span[]buffer=StrToByteArray(spanclass="code-string""/spanspanclass="code-string"RIFF"/span);mMemoryStream.Write(buffer,spanclass="code-digit"0/span,spanclass="code-digit"4/span);spanclass="code-comment"///spanspanclass="code-comment"getsstuckhere..won'twritetothestream/spanspanclass="code-keyword"if/span(mWAVHeader==spanclass="code-keyword"null/span)mWAVHeader=spanclass="code-keyword"new/spanspanclass="code-keyword"char/span[spanclass="code-digit"4/span];spanclass="code-string""/spanspanclass="code-string"RIFF"/span.CopyTo(spanclass="code-digit"0/span,mWAVHeader,spanclass="code-digit"0/span,spanclass="code-digit"4/span);spanclass="code-comment"///spanspanclass="code-comment"Filesizesize(4bytes)-Thiswillbe0fornow/spanArray.Clear(buffer,spanclass="code-digit"0/span,buffer.GetLength(spanclass="code-digit"0/span));mMemoryStream.Write(buffer,spanclass="code-digit"0/span,spanclass="code-digit"4/span);spanclass="code-comment"///spanspanclass="code-comment"RIFFtype("WAVE")/spanbuffer=StrToByteArray(spanclass="code-string""/spanspanclass="code-string"WAVE"/span);mMemoryStream.Write(buffer,spanclass="code-digit"0/span,spanclass="code-digit"4/span);spanclass="code-keyword"if/span(mRIFFType==spanclass="code-keyword"null/span)mRIFFType=spanclass="code-keyword"new/spanspanclass="code-keyword"char/span[spanclass="code-digit"4/span];spanclass="code-string""/spanspanclass="code-string"WAVE"/span.CopyTo(spanclass="code-digit"0/span,mRIFFType,spanclass="code-digit"0/span,spanclass="code-digit"4/span);spanclass="code-comment"///spanspanclass="code-comment"Formatchunk(24bytestotal)/spanspanclass="code-comment"///spanspanclass="code-comment""fmt"(ASCIIcharacters)/spanbuffer=StrToByteArray(spanclass="code-string""/spanspanclass="code-string"fmt"/span);mMemoryStream.Write(buffer,spanclass="code-digit"0/span,spanclass="code-digit"4/span);spanclass="code-comment"///spanspanclass="code-comment"Lengthofformatchunk(always16,4bytes)/spanArray.Clear(buffer,spanclass="code-digit"0/span,buffer.GetLength(spanclass="code-digit"0/span));buffer[spanclass="code-digit"0/span]=spanclass="code-digit"16/span;spanclass="code-keyword"if/span(!BitConverter.IsLittleEndian)Array.Reverse(buffer);mMemoryStream.Write(buffer,spanclass="code-digit"0/span,spanclass="code-digit"4/span);spanclass="code-comment"///spanspanclass="code-comment"2bytes(always1)/spanArray.Clear(buffer,spanclass="code-digit"0/span,buffer.GetLength(spanclass="code-digit"0/span));buffer[spanclass="code-digit"0/span]=spanclass="code-digit"1/span;spanclass="code-keyword"if/span(!BitConverter.IsLittleEndian)Array.Reverse(buffer,spanclass="code-digit"0/span,spanclass="code-digit"2/span);mMemoryStream.Write(buffer,spanclass="code-digit"0/span,spanclass="code-digit"2/span);spanclass="code-comment"///spanspanclass="code-comment"#ofchannels(2bytes)/spanArray.Clear(buffer,spanclass="code-digit"0/span,buffer.GetLength(spanclass="code-digit"0/span));buffer[spanclass="code-digit"0/span]=mNumChannels;spanclass="code-keyword"if/span(!BitConverter.IsLittleEndian)Array.Reverse(buffer,spanclass="code-digit"0/span,spanclass="code-digit"2/span);mMemoryStream.Write(buffer,spanclass="code-digit"0/span,spanclass="code-digit"2/span);spanclass="code-comment"///spanspanclass="code-comment"Samplerate(4bytes)/spanbuffer=BitConverter.GetBytes(mSampleRateHz);spanclass="code-keyword"if/span(!BitConverter.IsLittleEndian)Array.Reverse(buffer);mMemoryStream.Write(buffer,spanclass="code-digit"0/span,spanclass="code-digit"4/span);spanclass="code-comment"///spanspanclass="code-comment"Calculatethe#ofbytespersample:1=8bitMono,2=8bitStereoor/spanspanclass="code-comment"///spanspanclass="code-comment"16bitMono,4=16bitStereo/spanspanclass="code-keyword"short/spanbytesPerSample=spanclass="code-digit"0/span;spanclass="code-keyword"if/span(mStereo)bytesPerSample=(spanclass="code-keyword"short/span)((mBitsPerSample/spanclass="code-digit"8/span)*spanclass="code-digit"2/span);spanclass="code-keyword"else/spanbytesPerSample=(spanclass="code-keyword"short/span)(mBitsPerSample/spanclass="code-digit"8/span);spanclass="code-comment"///spanspanclass="code-comment"Writethe#ofbytespersecond(4bytes)/spanspanclass="code-keyword"int/spanmBytesPerSec=mSampleRateHz*bytesPerSample;buffer=BitConverter.GetBytes(mBytesPerSec);spanclass="code-keyword"if/span(!BitConverter.IsLittleEndian)Array.Reverse(buffer);mMemoryStream.Write(buffer,spanclass="code-digit"0/span,spanclass="code-digit"4/span);spanclass="code-comment"///spanspanclass="code-comment"Writethe#ofbytespersample(2bytes)/spanspanclass="code-keyword"byte/span[]buffer_2bytes=BitConverter.GetBytes(bytesPerSample);spanclass="code-keyword"if/span(!BitConverter.IsLittleEndian)Array.Reverse(buffer_2bytes);mMemoryStream.Write(buffer_2bytes,spanclass="code-digit"0/span,spanclass="code-digit"2/span);spanclass="code-comment"///spanspanclass="code-comment"Bitspersample(2bytes)/spanbuffer_2bytes=BitConverter.GetBytes(mBitsPerSample);spanclass="code-keyword"if/span(!BitConverter.IsLittleEndian)Array.Reverse(buffer_2bytes);mMemoryStream.Write(buffer_2bytes,spanclass="code-digit"0/span,spanclass="code-digit"2/span);spanclass="code-comment"///spanspanclass="code-comment"Datachunk/spanspanclass="code-comment"///spanspanclass="code-comment""data"(ASCIIcharacters)/spanbuffer=StrToByteArray(spanclass="code-string""/spanspanclass="code-string"data"/span);mMemoryStream.Write(buffer,spanclass="code-digit"0/span,spanclass="code-digit"4/span);spanclass="code-comment"///spanspanclass="code-comment"Lengthofdatatofollow(4bytes)-Thiswillbe0fornow/spanArray.Clear(buffer,spanclass="code-digit"0/span,buffer.GetLength(spanclass="code-digit"0/span));mMemoryStream.Write(buffer,spanclass="code-digit"0/span,spanclass="code-digit"4/span);mDataSizeBytes=spanclass="code-digit"0/span;spanclass="code-comment"///spanspanclass="code-comment"Totalof44byteswrittenuptothispoint./spanspanclass="code-comment"///spanspanclass="code-comment"Therestofthefileistheaudiodata/span}spanclass="code-keyword"catch/span(Exceptionex){Console.WriteLine(ex.Message);}}spanclass="code-keyword"private/spanspanclass="code-keyword"static/spanspanclass="code-keyword"byte/span[]StrToByteArray(spanclass="code-SDKkeyword"String/spanpStr){System.Text.ASCIIEncodingencoding=spanclass="code-keyword"new/spanSystem.Text.ASCIIEncoding();spanclass="code-keyword"return/spanencoding.GetBytes(pStr);}}}/pre/codecodeprelang="sql"Butspanclass="code-keyword"for/spanspanclass="code-keyword"some/spanreasonspanclass="code-keyword"when/spanIusedthisspanclass="code-keyword"function/spanspanclass="code-keyword"to/spanplayaudiospanclass="code-keyword"like/spanthis: spanclass="code-keyword"All/spanitdoesspanclass="code-keyword"is/spansaytheHeaderinformationspanclass="code-keyword"is/spancorrupted,eventhoughIamusingthesamemethodspanclass="code-keyword"of/spanbuildingawavspanclass="code-keyword"file/spancontentspanclass="code-keyword"as/spanthecreatorspanclass="code-keyword"of/spantheWAVFileclassuses.Doesanyonehavespanclass="code-keyword"any/spansuggestions?/pre/codecodeprelang="c#"spanclass="code-keyword"class/spanProgram{spanclass="code-keyword"static/spanspanclass="code-keyword"void/spanMain(spanclass="code-keyword"string/span[]args){Console.WriteLine(spanclass="code-string""/spanspanclass="code-string"hi"/span);WAVFileaudioFile=spanclass="code-keyword"new/spanWAVFile();spanclass="code-keyword"string/spanwarning=audioFile.Open(spanclass="code-string""/spanspanclass="code-string"11.wav"/span,WAVFile.WAVFileMode.READ);spanclass="code-keyword"short/span[]audioSample=spanclass="code-keyword"new/spanspanclass="code-keyword"short/span[audioFile.NumSamples];spanclass="code-keyword"if/span(warning==spanclass="code-string""/spanspanclass="code-string""/span){spanclass="code-keyword"for/span(spanclass="code-keyword"int/spansampleNum=spanclass="code-digit"0/span;sampleNum<audioFile.NumSamples;++sampleNum){audioSample[sampleNum]=audioFile.GetNextSampleAs16Bit();}}InternalWAVFileiwf=spanclass="code-keyword"new/spanInternalWAVFile(audioSample,audioFile.IsStereo,audioFile.SampleRateHz,audioFile.BitsPerSample);MemoryStreamms=iwf.GetStream();spanclass="code-keyword"if/span(spanclass="code-keyword"null/span==ms)Console.WriteLine(spanclass="code-string""/spanspanclass="code-string"streamisnull"/span);spanclass="code-keyword"else/span{Console.WriteLine(spanclass="code-string""/spanspanclass="code-string"Notnull"/span);Audioa=spanclass="code-keyword"new/spanAudio();Console.WriteLine(spanclass="code-string""/spanspanclass="code-string"Goingtoplay"/span);a.Play(ms,Microsoft.VisualBasic.AudioPlayMode.Background);Console.WriteLine(spanclass="code-string""/spanspanclass="code-string"Played"/span);}}}/pre/code
UNOWN301
评论会员:游客 时间:2012/01/25
嘿家伙。其实我想通了这个问题。显然NightFoxFILESTREAM在自己的类创建的WAV文件时,Windows会自动改变数据长度值和其创造的总文件大小值。于是,他把这些职位0。但播放时直接从流中,而不是创建一个实际的WAV文件,它不会自动填充这些值,所以我不得不在这种情况下,手动将他们进来,数据的大小仅仅是我的短[]的长度数组乘以2。文件大小是数加28
Zhumabek
评论会员:游客 时间:2012/01/25
!这么多感谢这个代码
Nightfox
评论会员:游客 时间:2012/01/25
我很高兴它帮助。imgsrc=http://www.orcode.com/img/ico/smiley_smile.gif
哈拉尔witecek
评论会员:游客 时间:2012/01/25
好了不错的工作,但有一个巨大的错误的文件格式!//格式块的长度(始终为16)错误!!!!!!{BR} mFileStream.Read(缓冲,0,4); //2字节(值始终为1)错误!!!!!!{BR}mFileStream.Read(缓冲,0,2);1。格式块并不总是16字节!!2。在接下来的2个字节提供的数据编码。您的版本只支持0x0001=PCM格式,但格式,可以执行下列操作之一。0x0001的PCM地图0x0002的MSADPCMIEEE浮点0x0003IBM公司的CVSD0x0005阿劳0x00060x0007MULAW0x0010处的冲电气ADPCM0x0011DVI/IMAADPCM0x0012MEDIASPACEADPCM0x0013SIERRAADPCM0x0014G723ADPCM0x0015DIGISTD0x0016DIGIFIX0x0017的DialogicOKIADPCM0x0020雅马哈ADPCM0x0021SONARC0x0022DSPGROUPTRUESPEECH0x0023ECHOSC10x0024audiofile的AF36APTX0x00250x0026audiofile的AF100x0030杜比AC2GSM6100x00310x0033ANTEXADPCME0x0034控制RESVQLPC0x0035控制RESVQLPC0x0036DIGIADPCM0x0037控制RESCR100x0038网管VBXADPCM0x0039CSIMAADPCM(罗兰的RDAC)0x0040G721ADPCM0x0050MPEG-1层Ⅰ,Ⅱ0x0055MPEG-1第三层(MP3)0x0069的XboxADPCM0x0200创意ADPCM0x0202创意FASTSPEECH80x0203创意FASTSPEECH10FM城镇SND0x03000x1000的OLIGSM0x1001OLIADPCM0x1002OLICELP0x1003OLISBC0x1004OLIOPR如果格式不0x0001,你应该提高一个异常
!Nightfox
评论会员:游客 时间:2012/01/25
啊,谢谢大家的指点,出
,C弗利
评论会员:游客 时间:2012/01/25
我得到一个错误...."X是无法访问由于其保障水平"。对吧?就如何解决这一问题的任何线索?我开发一个应用程序的朋友,所以我只需要这使我的程序独立的草案,而我发展
Nightfox
评论会员:游客 时间:2012/01/25
这听起来像你要访问的私人的东西。什么是X
彗星弗利
评论会员:游客 时间:2012/01/25
?audioSample=audioFile.GetNextSampleAs16Bit()基本上,所有的WAVFile类的方法有这样的错误。上面的,IDE表明GetNextSampleAs16Bit错误()啊......我在VSExpress的2010......不知道,如果有差别。转换没有错误。修改,8月4日(星期三),20100:23
Nightfox
评论会员:游客 时间:2012/01/25
这是奇怪的。的方法不应该放弃这个错误。什么版本的VisualC#是您使用?我公司开发的Visual彗星#2008,我假设可以,如果你正在使用一个新的版本的Express的版本之一,或旧版本的VisualC#,你可以得到一些奇怪的错误
。彗星弗利
评论会员:游客 时间:2012/01/25
我加入您的项目地雷。加入我的项目的参考。添加适当的"using"语句。但是,当我导入,我没有得到一个关于"信任"应用程序的评论。之后,我走进你的项目的安全设置,但我没有看到任何具体的,会导致此。顺便说一句......你的代码加载与解释意见。只是想让你知道我多少明白!{S2}
Nightfox
评论会员:游客 时间:2012/01/25
彗星佛利写道:我说你到矿项目。加入我的项目的参考。添加适当的"using"语句。但是,当我导入,我没有得到一个关于"信任"应用程序的评论。之后,我走进你的项目的安全设置,但我没有看到任何具体的,会导致此。我不知道该说些什么有..我没有听说过"信任的"应用程序之前。{S3}彗星佛利写道:顺便说一句......你的代码加载与解释意见。只是想让你知道我多少明白!我很高兴知道他们帮助。imgsrc=http://www.orcode.com/img/ico/smiley_smile.gif
彗星弗利
评论会员:游客 时间:2012/01/25
hmmmm....我会尝试复制到新的类文件和单独从App....{BR}它看起来像我需要WAVFile.cs,WAVFormat.cs和WAVFileExceptions.cs能够读取wave文件。这听起来对吗?顺便说一句,感谢一切非常快速输入!{五}***************更新**********************{BR}到目前为止好。我做了上面,它似乎是工作!,克里斯修改,8月4日(星期三),20101:06
fribe
评论会员:游客 时间:2012/01/25
您好我想问,如果我可以使用在我的大学assigment一些类:|Nightfox
?是的,你可以 - 这是我的
评论会员:saeed2502 时间:2012/01/25
嗨亲爱的ERIC 我用我的项目的源代码,这听起来很不错。其实我有两个wave文件,规格相同的(单声道,8000hz,16位)。
,我想在立体声格式混合这两个文件,一个文件在左,右扬声器和一个文件播放。
所以请帮助我。
至于
赛义德
评论会员:Nightfox 时间:2012/01/25
我不能完全肯定这是否会工作,但也许你可以在这个项目中使用WAVFile的类创建一个新的音频文件的立体声,8000Hz,和16位。然后,打开源文件。然后,开始通过源文件的音频采样迭代,先写一个样品从一个源文件目标文件,然后从您的其他源文件编写的样本,并保持这样来回交替
评论会员:alalavin 时间:2012/01/25
您好,
这是我的问题太多。你关于迭代L / R输入正确的,但我的问题是,你应该计算bitspersample和波形文件的总大小。
你可以或谁能帮我PLZ?
alalavin