我正在尝试在MatLab中读取midi文件,但我无法找到实用的方法.有没有关于如何读取midi文件的建议,就像通过wavread()读取wav文件一样?或者在matlab中是否有任何内置的midi-to-wav转换函数,或者你可以为这个转换建议任何工具,以便创建一个matlab可读的wav文件.
谢谢,
我已将音频录制到CaptureBuffer,但我无法弄清楚如何将其保存到wav文件中.我试过这个(http://www.tek-tips.com/faqs.cfm?fid=4782),但它不起作用,或者我没有正确使用它.有人知道如何解决这个问题吗?示例代码将非常感激.
我有一个应用程序,当按下或单击一个键或按钮时我需要播放一个wav文件,我使用SoundPlayer类,但当我尝试播放另一个wav文件同时正在播放的那个文件停止.
有没有办法同时播放多个wav文件?如果它可以请你给我举例或教程?
这是我到目前为止所得到的:
private void pictureBox20_Click(object sender, EventArgs e)
{
if (label30.Text == "Waiting 15.wav")
{
MessageBox.Show("No beat loaded");
return;
}
using (SoundPlayer player = new SoundPlayer(label51.Text))
{
try
{
player.Play();
}
catch (FileNotFoundException)
{
MessageBox.Show("File has been moved." + "\n" + "Please relocate it now!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我在阅读16位.wav文件时遇到了麻烦.我已阅读标题信息,但转换似乎不起作用.
例如,在Matlab中,如果我在wave文件中读取,我会得到以下类型的数据:
-0.0064, -0.0047, -0.0051, -0.0036, -0.0046, -0.0059, -0.0051
Run Code Online (Sandbox Code Playgroud)
但是,在我的C++程序中,返回以下内容:
0.960938, -0.00390625, -0.949219, -0.00390625, -0.996094, -0.00390625
Run Code Online (Sandbox Code Playgroud)
我需要以相同的方式表示数据.现在,对于8 bit.wav文件,我做了以下内容:
uint8_t c;
for(unsigned i=0; (i < size); i++)
{
c = (unsigned)(unsigned char)(data[i]);
double t = (c-128)/128.0;
rawSignal.push_back(t);
}
Run Code Online (Sandbox Code Playgroud)
但是,当我为16bit执行此操作时,这很有用:
uint16_t c;
for(unsigned i=0; (i < size); i++)
{
c = (signed)(signed char)(data[i]);
double t = (c-256)/256.0;
rawSignal.push_back(t);
}
Run Code Online (Sandbox Code Playgroud)
不起作用并显示输出(上图).
我遵循这里发现的标准
哪里data是一个char数组,rawSignal是std::vector<double>我可能只是递过转换错了,但似乎无法找出.有人有什么建议吗?
谢谢
编辑:
这是现在显示的内容(在图中):

这是它应该显示的内容:

我以.caf格式录制音频,稍后需要将其转换为.wav,以便将文件作为Dropbox上传.如何在iOS中将文件转换为wav格式?
我不想直接录制音频.wav格式
如何将.CAF转换为.WAV文件
我是Matlab的新手,正在尝试生成.wav文件,但是我一直收到不支持的通道数错误。这是我的代码。
TTL = zeros(2, 2205);
TTL(1,1:2205) = 2;
audiowrite('hereitis.wav', TTL, 44100, 'BitsPerSample', 16);
Run Code Online (Sandbox Code Playgroud)
我可以肯定我的问题是TTL,因为我过去曾经使用过Matlab一次或两次来生成.wav文件。我想做的是使用Matlab数据采集工具箱保存别人通过模拟传输的声音。我不觉得我太过分了,因为我已经能够使用Sound(TTL,44100)播放声音了;
提前致谢。
我尝试使用NAudio库混合两个wav文件.如果它们具有相同的比特率,我能够获得混合的wav文件.我在这里关注的是混合不同比特率的wav文件.请建议是否可以使用NAudio或其他API /库.
下面我给出了混合相同比特率的wav文件的代码:
using (var reader1 = new WaveFileReader(inpFile1))
using (var reader2 = new WaveFileReader(inpFile1))
{
var inputs = new List<ISampleProvider>() {
reader1.ToSampleProvider(),
reader2.ToSampleProvider(),
};
var mixer = new MixingSampleProvider(inputs);
WaveFileWriter.CreateWaveFile16(outputFile, mixer);
}
Run Code Online (Sandbox Code Playgroud) 我想从录制的wav文件中提取一些片段.关于这个问题,我没有在网上找到太多帮助.我知道我们不能从像mp3这样的压缩格式中分离出来,但我们如何用caf/wav文件呢?
我有以下代码(只发布必要的行).在这里,我复制WAVE文件的前44个字节(PCM,即线性量化).问题在于显示char[4]鲟鱼的记录.
无法弄清楚,虽然试图了解原因是什么,但没有结果.
问题:为什么我必须使用精度修改器%.*s仅显示前4个符号char[N]而不是仅char[4]使用打印变量%s?
但是,如果我将修改器写入%s- > %.4s该printf()函数正确打印everthing:"RIFF","WAVE","fmt","data".它只显示每条char[4]记录的前4个符号.但是什么是没有显示的符号?
我得到以下内容%s:
Enter input and output filenames (with no extension):
europe_-_final_countdown
europe_-_final_countdown_out
Opening file: "europe_-_final_countdown.wav" has been successfully opened.
*********************************
ChunkID: RIFF4?AWAVEfmt // instead of "RIFF"
ChunkSize: 54629940
Format: WAVEfmt // instead of "WAVE"
SubChunk1ID: fmt // here is "fmt " -> ok
SubChunk1Size: 16
AudioFormat: 1
NumChannels: 2
SampleRate: 44100
ByteRate: 176400
BlockAlign: …Run Code Online (Sandbox Code Playgroud)