有可能让python生成像正弦波一样的简单声音吗?
有可用的模块吗?如果没有,你会如何创建自己的?
另外,你需要某种主机环境让python运行才能播放声音,还是只能通过终端来电来实现?
如果答案取决于操作系统,我正在使用mac.
我是OpenCV的新手.最近,我发现OpenCV函数从Mat转换为Array很麻烦.我使用OpenCV API中提供的.ptr和.at方法进行了研究,但是我无法获得正确的数据.我希望从Mat到Array直接转换(如果可用,如果没有,则转换为Vector).我需要OpenCV函数,因为代码必须在Vivado HLS中进行高级综合.请帮忙.
方案
我有一种情况,其中一个被调用的基类AbstractRequest具有id <AbstractRequestDelegate>在头文件中声明的类型的委托属性:
@property (nonatomic, assign) id <AbstractRequestDelegate> delegate;
Run Code Online (Sandbox Code Playgroud)
抽象代表协议包含一些必要方法,并且与字"抽象"所指出的,无论是AbstractRequest与AbstractRequestDelegate旨在是子类/扩展.
其中一个例子是子类ConcreteRequest和扩展协议ConcreteRequestDelegates,它们都为抽象方法添加了额外的方法.目的是抽象和具体类方法都可以将消息发送到单个分配的委托实例.
在某个时间点,ConcreteRequest想要调用由ConcreteRequestDelegate定义的委托上的方法.由于委托的类型是id,因此编译器将发出警告,指出可能未实现此方法.
ConcreteRequest.m:38:警告:属性'委托'需要定义方法'-delegate' - 使用@synthesize,@ dynamic或提供方法实现
问题
这个警告是合理的,因为该属性毕竟是打字的id <AbstractRequestDelegate>.为了解决这个问题,我想向编译器说明分配给具体实例的委托必须是类型id <ConcreteRequestDelegate>.这对我来说听起来很合理,所以我在ConcreteRequest标头中添加了一个新属性,希望覆盖它的抽象:
@property (nonatomic, assign) id <ConcreteRequestDelegate> delegate;
Run Code Online (Sandbox Code Playgroud)
但这是编译器不同意我的地方,可能是有充分理由的.我本以为它会用一个错误的类型覆盖一个超级类的属性发出警告,但它只是要求我重新合成这个新属性.我不想去那里,因为那时超类的方法将无法访问相同的委托属性.
问题
有没有办法在具体子类中"重新声明"具有添加的类型信息的属性?或者你能否发现我的想法中的错误,因为这可能是一个相当常见的问题,直到现在我还没有遇到过?
干杯,
EP.
PS这项工作中出现的所有类和协议名称都是虚构的.任何与真实类和协议名称,开源或专利的相似之处纯属巧合.
在我的高中,我们可以参加一个课程,我们基本上可以在一个学期内学习一门课程.我当时想要学习"声音编程",但我意识到我不知道那会带来什么.我有兴趣了解一下合成器的工作原理以及声音在计算机科学中的作用.我真的想专注于低级代码部分,而不是组成部分.这是一个可行的主题吗?有什么好的教程可供那些全新的人使用吗?我知道C++并且正在使用Windows.在第一个答案这是一些我感兴趣的(虽然它在我的头上).
当我在https://github.com/enormego/EGOTableViewPullRefresh玩游戏并弄清楚它是如何工作的时候,我发现了@property和@synthesize的神秘感.这是我提到的代码
@interface EGORefreshTableHeaderView : UIView {
id _delegate;
EGOPullRefreshState _state;
UILabel *_lastUpdatedLabel;
UILabel *_statusLabel;
CALayer *_arrowImage;
UIActivityIndicatorView *_activityView;
}
@property(nonatomic,assign) id <EGORefreshTableHeaderDelegate> delegate;
Run Code Online (Sandbox Code Playgroud)
@synthesize delegate=_delegate;
Run Code Online (Sandbox Code Playgroud)
我已经阅读了这个http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html,据我所知,它为_delegate创建了一个新的名称,即委托.(这是我的理解吗?)
但我仍然不明白为什么他们必须使那些@synthesize =指令复杂化.
我做了一些自己的研究,发现SID芯片只有很少的硬件支持合成功能.包括三个带有四种可能波形(锯齿波,三角波,脉冲,噪声)的音频振荡器,带有ADSR包络和环形调制器.配有振荡器同步和环形调制器.另外还有一种方法可以播放单个PCM声音.
这一切都很少,但我仍然从电视机中听到很多不同的声音.它们如何组合以产生各种音频?
为了给出一些细节,我想知道如何将这些组件组合起来制作吉他,钢琴或鼓状音频?另一个有趣的事情是C64特有的不同的嗡嗡声和声音.
触发器(,寄存器......)通常由上升沿或下降沿触发.但是大多数在代码中你会看到一个使用上升沿触发的if子句.事实上,我从未见过具有下降优势的代码.
这是为什么?是因为程序员自然会使用上升沿,因为它们习惯了,或者是因为某些物理/模拟定律/事实,其中上升沿编程更快/更简单/节能/ ......?
我正在尝试在FPGA上实现一个微控制器,我需要为它的程序提供一个ROM.如果我使用$ readmemb,那么它会被正确地合成到ROM吗?如果没有,这样做的标准方法是什么?
这是第一次发布海报.我通常喜欢自己找到答案(无论是通过研究还是反复试验),但我很难过.
我正在尝试做什么: 我正在构建一个简单的Android音频合成器.现在,我只是实时播放正弦音,UI中有一个滑块,可以在用户调整时调整音调的频率.
我是如何构建它的: 基本上,我有两个线程 - 一个工作线程和一个输出线程.每次调用tick()方法时,工作线程只使用正弦波数据填充缓冲区.填充缓冲区后,它会向输出线程发出警告,表明数据已准备好写入音频轨道.我使用两个线程的原因是因为audiotrack.write()阻塞,我希望工作线程能够尽快开始处理其数据(而不是等待音轨完成写入).UI上的滑块只是更改工作线程中的变量,因此工作线程的tick()方法将读取对频率的任何更改(通过滑块).
什么有效: 几乎所有事情; 线程通信良好,回放中似乎没有任何间隙或点击.尽管缓冲区大小(感谢android),但响应能力还可以.频率变量确实会发生变化,tick()方法中缓冲区计算期间使用的中间值也会发生变化(由Log.i()验证).
什么行不通: 出于某种原因,我似乎无法在可听频率上获得持续的变化.当我调整滑块时,频率会逐步变化,通常会变为四分之一或五分之一.从理论上讲,我应该听到1Hz的变化,但我不是.奇怪的是,似乎滑块的变化导致正弦波在谐波系列中间隔播放; 但是,我可以验证频率变量不是捕捉到默认频率的整数倍.
我的音频轨道设置如下:
_buffSize = AudioTrack.getMinBufferSize(sampleRate, AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT);
_audioTrackOut = new AudioTrack(AudioManager.STREAM_MUSIC, _sampleRate, AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT, _buffSize, AudioTrack.MODE_STREAM);
Run Code Online (Sandbox Code Playgroud)
正在填充工作线程的缓冲区(通过tick()):
public short[] tick()
{
short[] outBuff = new short[_outBuffSize/2]; // (buffer size in Bytes) / 2
for (int i = 0; i < _outBuffSize/2; i++)
{
outBuff[i] = (short) (Short.MAX_VALUE * ((float) Math.sin(_currentAngle)));
//Update angleIncrement, as the frequency may have changed by now
_angleIncrement = (float) (2.0f * Math.PI) * _freq …Run Code Online (Sandbox Code Playgroud) 我对Objective C很新.(现在两天).在阅读时@synthesize,它似乎与我的理解重叠@property(我以为我理解了)......所以,有些细节需要在我脑海中消失......这让我烦恼.
请纠正我,如果我错了有关性别差异@property和@synthesize:
如果要声明@property在你的@interface,那么你就告诉世界,用户可以期望使用标准的getter和setter该属性.此外,XCode将为您制作通用的getter和setter. ......但是,对于没有什么程度是与@财产申报情况?(IE的意思是"完全"......就像你在你的看不见的声明@interface,以及你看不见的代码@interface?
-要么-
是否只处理@property您看不见的代码声明@interface- 而@synthesize在您的@implementation部分中处理看不见的代码实现?)
synthesis ×10
audio ×4
objective-c ×3
properties ×3
android ×1
arrays ×1
c++ ×1
c64 ×1
hardware ×1
java ×1
opencv ×1
overriding ×1
python ×1
python-2.7 ×1
python-3.x ×1
subclassing ×1
vector ×1
verilog ×1
vhdl ×1