我目前正在尝试此代码:
NSString *path = [[NSBundle mainBundle] pathForResource:@"dream" ofType:@"m4a"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
Run Code Online (Sandbox Code Playgroud)
但是,SDK说ViewController没有实现AVAudioPlayer委托.
有关如何使用2.2 SDK播放WAV(或M4a)的任何想法?
我需要将声音文件加载到基于Cocoa的OpenAL应用程序.
进展:
OpenAL实用程序函数alutLoadWAVFile已被弃用; Mac OS X SDK中不再包含alut标头.根据TechNotes,实际代码仍然存在二进制兼容性.但是,如果我尝试为函数添加声明,代码将编译但链接器将中止,抱怨无法找到alutLoadWAVFile的符号.(我正在链接到OpenAL.framework).
但是,Apple OpenAL示例代码仍然使用此符号.当我清理示例代码项目时,它编译和链接就好了.然而,没有声明可以找到该功能.(旁边的问题:如何构建和链接呢?)
所以,我在Apple发现了George Warner的一些代码,其中包含alutCreateBufferFromFile和alutLoadMemoryFromFile的替换函数.虽然能够直接从大多数任何类型的音频文件创建OpenAL缓冲区,但代码似乎仅支持8位单声道声音文件.16位立体声或单声道44khz文件导致令人讨厌的嘶嘶声和剪辑.(文件还可以; Quicktime播放它们就好了.)
因此,我的问题:有人可以指点一些.wav加载Cocoa/Carbon的代码/帮助,适合与OpenAL Buffer一起使用吗?谢谢.
我期待创建一个功能,可以在五秒钟内在.wav文件上创建淡入/淡出功能.
我在MATLAB论坛上发现了这个代码,但似乎实现有些错误,尽管正确的想法就在那里.它适用于300毫秒的.WAV文件,淡入/淡出10毫秒:
tenmssamples = length(soundfile)*10/300;
fade1 = linspace(0,1,tenmssamples);
fadedsound = soundfile .* ...
[fade1, ones(1,length(soundfile)-2*tenmssamples), fliplr(fade1)];
tenmssamples = length(soundfile)*10/300;
fade2 = sin(linspace(0,2*pi/4,tenmssamples));
fadedsound2 = soundfile .* ...
[fade2, ones(1,length(soundfile)-2*tenmssamples), fliplr(fade2)];
Run Code Online (Sandbox Code Playgroud)
我可以看到他试图通过尝试扩展使用linspace的增函数读取波形的第10个样品做,但我试图修补和修改,但我无法得到它的工作.
有人有什么建议吗?谢谢.
知道如何规范化wav文件,以便使用c ++将音量级别变为最大值?公式是什么?我整个下午都用Google搜索,但没有找到答案.任何帮助请!
我正在使用AVFoundation播放wav文件.但我无法发挥它.也没有出现任何错误或警告.
XCode是4.2,设备是iOS 5.
- (IBAction) playSelectedAlarm:(id)sender {
UIButton *button = (UIButton *)sender;
int bTag = button.tag;
NSString *fileName = [NSString stringWithFormat:@"%d23333", bTag];
NSLog(@"%@", fileName);
NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:@"wav"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: path];
AVAudioPlayer *theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:NULL];
theAudio.volume = 1.0;
theAudio.delegate = self;
[theAudio prepareToPlay];
[theAudio play];
}
Run Code Online (Sandbox Code Playgroud) 我只需要通过读取文件就知道8位的".wav"是有符号还是无符号的PCM.我不能使用"javax.sound.sampled.*"或AudioSystem库.
我正在使用这个代码项目:http://www.codeproject.com/Articles/10138/Voice-Recording-Playing-back-using-simple-classes
void CFisterDlg::OnRecord()
{
CString string;
m_RecButton.GetWindowText(string);
if(string == "Record")
{
StartRecordingToFile();
m_RecButton.SetWindowText("Stop");
}
else
{
StopRecordingToFile();
m_RecButton.SetWindowText("Record");
}
}
Run Code Online (Sandbox Code Playgroud)
但是我在很多地方都遇到了这个错误:
error C2664: 'void CWnd::SetWindowTextW(LPCTSTR)' : cannot convert argument 1 from 'const char [5]' to 'LPCTSTR'
Run Code Online (Sandbox Code Playgroud)
我认为这与我使用最新版本的visual studio(2013)有关.
我正在尝试将2个WAV文件混合到一个WAV文件中。文件将始终具有完全相同的持续时间,并具有相同的格式(16位,44.1 kHz,带符号,小字节序,单声道)。这两个WAV都使用AudioSystem.getAudioInputSream的ByteArrayOutputStream放入字节数组,以确保我只是获取PCM数据而没有标题。
在其他几个线程的帮助下,我已经能够成功地组合阵列,但是也没有不给信号引入大量噪声。它绝对听起来不像是削波或失真,但是为了安全起见,我尝试对每对字节的总和求平均,这只会使所有内容变得更安静,更安静。
任何见解将不胜感激!我尝试了两种方法,它们应该执行相同的操作,并且似乎产生相同的声音结果。
第一种更简单的方法:
private byte[] mixBuffers(byte[] bufferA, byte[] bufferB) {
byte[] array = new byte[bufferA.length];
for (int i=0; i<bufferA.length; i++) {
array[i] = (byte) ((bufferA[i] + bufferB[i]));
}
return array;
}
Run Code Online (Sandbox Code Playgroud)
第二种更具体的方法:
private byte[] mixBuffers(byte[] bufferA, byte[] bufferB) {
byte[] array = new byte[bufferA.length];
for (int i=0; i<bufferA.length; i+=2) {
short buf1A = bufferA[i+1];
short buf2A = bufferA[i];
buf1A = (short) ((buf1A & 0xff) << 8);
buf2A = (short) (buf2A & 0xff);
short buf1B = bufferB[i+1];
short buf2B …Run Code Online (Sandbox Code Playgroud) 我在浏览器上播放PCM Audio时遇到了一些问题.PCM音频来自具有udp协议的Android设备,并以*.raw保存在服务器上
我在webaudioapi的帮助下试图播放这个保存的文件失败了.使用以下代码,播放一些带有白噪声的令人毛骨悚然的声音:
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
audioCtx.sampleRate = 16000;
// Stereo
var channels = 1;
// Create an empty two second stereo buffer at the
// sample rate of the AudioContext
var frameCount = audioCtx.sampleRate * 10.0;
var myAudioBuffer = audioCtx.createBuffer(channels, frameCount, audioCtx.sampleRate);
var req = new XMLHttpRequest();
req.open('GET', "example.raw", false);
req.overrideMimeType('text\/plain; charset=x-user-defined');
req.send(null);
function play(){
for (var channel = 0; channel < channels; channel++) {
var nowBuffering = myAudioBuffer.getChannelData(channel,16,16000);
for (var i = 0; i …Run Code Online (Sandbox Code Playgroud) 有没有办法提取有关.wav文件长度/持续时间的信息,而无需读入R中的文件?我有成千上万的这些文件,如果我必须阅读每一个文件以查找其持续时间,将需要很长时间.Windows文件资源管理器为您提供了打开长度字段的选项,您可以看到文件的持续时间,但有没有办法提取该信息以便能够在R中使用?
这是我尝试过并且想避免做的事情,因为读取R中的数万个音频文件需要很长时间:
library(tuneR)
audio<-readWave("AudioFile.wav")
round(length(audio@left) / audio@samp.rate, 2)
Run Code Online (Sandbox Code Playgroud)