有点老派,我记得在 1980 年代初我还是个孩子的旧 Atari 800XL,这是我用来学习编程的第一台计算机之一,关于如何使用音频芯片组发出爆炸声,带有偷看和戳在 BASIC 中。但是现在我想教我的女儿编程,我认为通过学习 Javascript 中的步骤,使用 Web Audio API,使用纯 Web Audio API 合成器来制作爆炸声,让她感到兴奋会很有趣。在没有实际声音文件的情况下,如何在 Javascript 中使用 Web Audio API 来合成游戏爆炸声?
我正在编写一个音频应用程序,它有多个线程产生声音,一个线程混合声音并将它们发送到声卡.我已经尝试了几种同步线程的方法,包括信号和线程安全队列在内的"正确"方式,但它们都太慢了.所以现在我为每个生产者使用bool来指示它的队列是否已满.它似乎工作得很好(32个线程的5ms延迟),但这样做是否安全?
class PlayThreadParameters
{
public Queue<Samples> queue;
public bool isOutputQueueFull;
}
Run Code Online (Sandbox Code Playgroud)
制片人看起来像这样:
public void PolyPlayThread(object o)
{
var playThreadParameters = (PlayThreadParameters)o;
while (isPlaying)
{
while (playThreadParameters.isOutputQueueFull)
{
if (!isPlaying)
return;
Thread.Sleep(1);
}
... //fill output queue
playThreadParameters.isOutputQueueFull = true;
}
}
Run Code Online (Sandbox Code Playgroud)
消费者看起来像这样(由Naudio的一个单独的线程调用):
public override int Read(byte[] array, int offset, int count)
{
for (int v = 0; v < playThreadParameters.Length; v++)
while (!playThreadParameters[v].isOutputQueueFull)
{
if (!isPlaying)
return 0;
Thread.Sleep(1);
}
... //mix the samples from the outputqueues
for (int v …Run Code Online (Sandbox Code Playgroud) 可能重复:
@property @synthesize
什么时候我必须使用属性和合成元素作为NSArray,NSSTring ....或IBOutelt作为UIButton或UITextFiled?
我正在研究制作一些使键盘功能像钢琴的软件(例如,用户按下'W'键,扬声器播放D音符).我可能会使用OpenAL.我理解数字音频的基础知识,但是在按键时播放实时音频会带来一些问题我无法解决.
问题在于:假设我有10个音频缓冲区,每个缓冲区都有一秒钟的音频数据.如果我必须在通过扬声器播放之前填充缓冲区,那么我会在播放前一两秒填充缓冲区.这意味着每当用户尝试播放音符时,按下琴键和正在播放的音符之间将有一到两秒的延迟.
你是如何解决这个问题的?你是否只是让缓冲区尽可能小,并尽可能地填充它们?有一些我不知道的伎俩吗?
有可能以某种方式创建一个自定义的@synthesize来生成客户getter,setters ??
例如:
@interface
@property (nonatomic, retain) MyObject *object;
@end
@implementation
@lazyInitialize object;
@end
Run Code Online (Sandbox Code Playgroud)
然后以某种方式定义@lazyInitialize以生成一个惰性初始化方法
//@lazyInitialize
- (id)"property name"
{
if (!"property name")
{
"property name" = [[["property name" class] alloc] init];
}
return "property name";
}
Run Code Online (Sandbox Code Playgroud) 我正在为iOS创建合成器.在玩完并试图学习核心音频之后,我遇到了一个我无法理解的问题.我的正弦波会定期发出咔哒声,我猜这与相位有关.我看过几本关于这个主题的指南和书籍,并且都表明我正确地做了.
如果有人愿意为我查看我的代码,我将不胜感激.
static OSStatus renderInput(void *inRefCon, AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList *ioData)
{
// Get a reference to the object that was passed with the callback
// In this case, the AudioController passed itself so
// that you can access its data.
AudioController *THIS = (AudioController*)inRefCon;
// Get a pointer to the dataBuffer of the AudioBufferList
AudioSampleType *outA = (AudioSampleType *)ioData->mBuffers[0].mData;
float freq = THIS->Frequency;
float phase = THIS->sinPhase;
float envValue;
float sinSignal;
// The …Run Code Online (Sandbox Code Playgroud) 我想使用SoX库将语音转换为机器人语音(例如,星际争霸游戏的歌利亚语音)。
我在网络上找到了机器人语音的以下顺序,但并没有产生机器人语音。
过载10回波0.8 0.8 5 0.7回波0.8 0.7 6 0.7回波0.8 0.7 10 0.7回波0.8 0.7 12 0.7回波0.8 0.88 12 0.7回波0.8 0.88 30 0.7回波0.6 0.6 60 0.7
发出机器人声音需要什么效果?你能告诉我一系列的效果和选择吗?
提前致谢。
这个python代码的PHP版本是什么?
import winsound
winsound.Beep(537, 2000)
Run Code Online (Sandbox Code Playgroud) synthesizer ×9
audio ×4
ios ×2
objective-c ×2
properties ×2
arm ×1
audiounit ×1
beep ×1
c# ×1
core-audio ×1
getter ×1
javascript ×1
latency ×1
openal ×1
php ×1
python ×1
real-time ×1
sox ×1
synthesis ×1
voice ×1
xcode ×1