【问题标题】:Can AudioKit sequences be changed individually and played back as a single track?AudioKit 序列可以单独更改并作为单个音轨播放吗?
【发布时间】:2018-06-03 14:45:17
【问题描述】:

我想创建一个包含歌曲的每个小节的类/结构/其他,包括独立的速度和节拍计数,然后播放整首歌曲(可能会根据用户输入进行更新)。我只知道如何在整个 AKSequencer 轨道上更改这些变量;有没有办法独立存储这些数据,然后让它作为一个播放?并保持措施之间的连贯性,以免它们之间“跳跃”?谢谢!

【问题讨论】:

  • 不确定“独立存储该数据,然后将其作为一个数据回放”是什么意思。您想按顺序播放一堆(不同长度和速度的)片段吗?同时地?如果按顺序排列,顺序是否事先固定(在播放开始之前)?如果没有,什么时候决定播放顺序?循环有必要吗?如果是这样,什么会循环(单段、段集群)?
  • @c_booth 感谢您的回复。我正在寻找按顺序播放的片段;本质上是一个节拍器,能够独立改变每个小节的节拍和速度。虽然播放期间的即时更改是理想的,但主要用例是设置“小节”的数量,每个小节都有自己的速度/节拍计数变量,然后播放整首歌曲。不需要循环播放整首歌曲。

标签: audiokit aksequencer


【解决方案1】:

AKSequencer 不擅长动态设置循环长度,但在音序器运行时添加或重写轨道内容完全没问题。这包括节奏事件。

您为什么不将长度设置为任意长,然后将您的 MIDI 事件逐个小节串在一起,而无需循环播放?跟踪到目前为止已经写了多少节拍,然后继续添加。在音序器运行时执行此操作应该没有问题。您甚至可以通过在每个度量的末尾触发一个回调函数来自动写入下一个柱,让它写入下一个段(可以在运行时选择或“提示”)。您可以使用addTempoEventAt() 安排节奏事件,并以下一段的起点为起点。

当您的用户停止序列时,清除曲目、重置速度、倒回序列并重新开始。

【讨论】:

  • 有趣;感谢您的反馈。 MIDI 事件会包含/引用在结构/字典/其他中吗?我正在设想:用户为结构中的每个度量输入值,以任意长的长度创建序列,序列开始播放,回调函数根据结构中包含(或引用)的 MIDI 信息稍微提前创建每个度量,以及一切都作为一个单一的轨道播放。再次感谢。
  • 就是这样。您的结构可以包含一个模板,其中包含您要编写的事件、片段的长度、速度以及将起点作为参数然后写入序列并更新位置的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-02
  • 1970-01-01
  • 2020-12-28
相关资源
最近更新 更多