小编Arc*_*gon的帖子

iOS中的MIDI合成行为不正确WRT俯仰弯曲:LSB被忽略

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)

midi core-audio audiounit ios coremidi

4
推荐指数
1
解决办法
1183
查看次数

从销售中删除iOS应用程序,同时仍提供更新和支持?

我在iOS应用程序中处于一个奇怪的地方.由于我第一次发布它时我的疏忽,我现在必须用新的ID重新发布它.这意味着我几乎肯定会从销售中删除当前的应用程序.但是,我也不想让我现有的客户抛弃.他们为应用付费,我想继续为他们提供支持.

  1. 我是否可以在销售应用程序时从其中删除应用程序?我知道我可以取消选中"定价和可用性"下的所有区域,但这会自动将状态更改为"开发人员已从销售中移除",这使我觉得我无法提交任何新版本.但也许我错了?
  2. 如果一个应用程序从销售中移除(如上所述),我的现有用户是否仍然可以获得最新的可用版本,或者他们是否会遇到他们碰巧下载的最新版本?如果他们的设备上没有应用程序,他们是否仍然可以重新下载?
  3. 如果事实证明,当应用程序从销售中移除时不可能继续更新应用程序(如上所述),那么我是否只能选择一个单独的,大部分不活动的区域作为解决方法?(例如,只在维尔京群岛出售应用程序或其他东西,然后像以前一样继续更新.)是否有人因此而受到训斥?

谢谢!

app-store ios

4
推荐指数
1
解决办法
1073
查看次数

int(blah)将(blah)的不同答案作为int

新手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)

actionscript actionscript-3

1
推荐指数
1
解决办法
173
查看次数

自定义 NSTextStorage:默认情况下不显示表情符号

我在自定义 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 字体?或者,还有更好的方法?我已经尝试过使用后备字体并自动搜索包含缺失字符的字体,但是使用这些方法似乎没有涵盖表情符号。

fonts nstextview emoji nstextstorage textkit

1
推荐指数
1
解决办法
339
查看次数