Apple的MIDI合成代码中有一个严重的错误,或者我做错了什么.这是我对它的理解.当您发送弯音MIDI命令时,弯曲的范围是-8192到8191,转换为0.(所以实际范围是0到16383.)这个数字被分成两个7位字段,所以真的这意味着你有128个粗控制值和128个精细控制值.
这是我写的弯音样本,类似于Apple的LoadPresetDemo中的命令.
// 'ratio' is the % amount to bend in current pitch range, from -1.0 to 1.0
// 'note' is the MIDI note to bend
NSUInteger bendValue = 8191 + 1 + (8191 * ratio);
NSUInteger bendMSB = (bendValue >> 7) & 0x7F;
NSUInteger bendLSB = bendValue & 0x7F;
UInt32 noteNum = note;
UInt32 noteCommand = kMIDIMessage_PitchBend << 4 | 0;
OSStatus result = MusicDeviceMIDIEvent(self.samplerUnit, noteCommand, noteNum, bendMSB, bendLSB);
Run Code Online (Sandbox Code Playgroud)
当弯曲MSB(粗调)改变时,音高弯曲得很好.但是当bendLSB(精细控制)改变时,没有任何反应.换句话说,似乎Apple的MIDI合成器忽略了LSB,这意味着音符仅在丑陋的离散块中弯曲.
这是另一种做同样事情的方式:
// 'ratio' is the % amount …Run Code Online (Sandbox Code Playgroud) 我在iOS应用程序中处于一个奇怪的地方.由于我第一次发布它时我的疏忽,我现在必须用新的ID重新发布它.这意味着我几乎肯定会从销售中删除当前的应用程序.但是,我也不想让我现有的客户抛弃.他们为应用付费,我想继续为他们提供支持.
谢谢!
新手ActionScript 3问题:为什么呢
(Math.sqrt((r * r - (r - i) * (r - i)) as Number) * 2) as int
Run Code Online (Sandbox Code Playgroud)
给我一个不同的结果
int(Math.sqrt((r * r - (r - i) * (r - i)) as Number) * 2)
Run Code Online (Sandbox Code Playgroud) 我在自定义 NSTextStorage 子类中遇到表情符号问题。该类不存储传递给它的任何属性。相反,它生成自己的:
override func attributesAtIndex(location: Int, effectiveRange range: NSRangePointer) -> [String : AnyObject] {
if range != nil {
range.memory = NSMakeRange(0, self.string.length)
}
let attributes = [
NSFontAttributeName: NSFont.systemFontOfSize(14)
]
return attributes
}
override func setAttributes(attrs: [String : AnyObject]?, range: NSRange) {
// does nothing
}
Run Code Online (Sandbox Code Playgroud)
这主要工作正常。但是,如果字符串中有任何表情符号,它们就不会出现。在检查 NSTextView 对文本存储的调用时,文本视图似乎试图在任何表情符号范围出现时将其字体属性设置为 AppleColorEmoji 字体。如果您依赖文本视图作为“属性真相”的来源,那很好,但我不希望我的程序像那样工作。就我而言,文本存储需要是任何属性的唯一供应商。它无法侦听文本视图发送的任何内容,属性方面。
我是否必须手动检测字符串中的任何表情符号并手动设置 AppleColorEmoji 字体?或者,还有更好的方法?我已经尝试过使用后备字体并自动搜索包含缺失字符的字体,但是使用这些方法似乎没有涵盖表情符号。
ios ×2
actionscript ×1
app-store ×1
audiounit ×1
core-audio ×1
coremidi ×1
emoji ×1
fonts ×1
midi ×1
nstextview ×1
textkit ×1