#step #synthesizer #sequences #sequencer #modulation #generate #probability

surge-stepseq

surge合成器 -- 用于调制的lfos

1个不稳定版本

0.2.12-alpha.02023年4月7日

#8#sequencer

25 每月下载量
5 个crate(2直接)中使用

GPL-3.0 许可证

37KB
387

surge-stepseq

StepSequencer

StepSequencer是一个表示步进序列器的结构体,这是任何合成器系统的基本组件。该StepSequencer结构体包含多个字段,包括当前步进、循环开始和结束点、摇动设置和触发掩码。可以使用各种方法来修改序列器,例如set_stepset_loopset_shuffleset_trigmaskmutate_sequencerandom_sequenceload_sequencesave_sequenceget_mute_maskmute_allmute_groupmute_stepunmute_allunmute_groupunmute_step。序列器也可以通过test_stepsequencer_defaulttest_stepsequencer_setters方法进行测试。

数学

步进序列器可以用一系列步骤来数学表示,每个步骤可以有一个值或概率与之关联。每个步骤的概率可以用来生成随机序列或修改现有序列。特定步骤i的概率可以用以下方程表示

P(i) =p_i

其中p_i是第i个步骤的概率。

触发掩码也可以用二进制序列来数学表示,其中每个位代表是否静音步骤。可以计算步骤被触发的概率,使用触发掩码和当前步骤索引。

apply_swing方法还可以用来通过基于摇摆因子延迟某些步骤的播放来给序列器应用摇摆节奏。

用法

StepSequencer结构体可以用于任何需要步进序列器组件的Rust程序。它提供了一个灵活且强大的接口,用于生成和操作值或概率的序列。

133> 我们还能做什么来改进我们的步进序列器?

有许多方法可以改进步进序列器,具体改进将取决于所需的功能和预期用例。以下是一些通用想法

  1. 添加更多控制参数:根据使用场景,可能需要添加额外的参数来控制序列发生器的各个方面。例如,您可以添加一个参数来控制步数,或者添加一个参数来指定节拍长度的模式。

  2. 添加更多随机化选项:如果步骤序列提供广泛的随机化选项,例如随机化步骤速度、概率和持续时间,那么它将变得更加灵活。

  3. 添加更多高级序列选项:更多高级序列选项,如多节奏、欧几里得节奏或概率节奏,可以为步骤序列添加深度和复杂性。

  4. 添加调制选项:您可以使用LFO或其他调制源来调制序列的各个参数,例如步概率或速度。

  5. 添加对不同拍号的支撑:根据预期的使用场景,添加对不同拍号(如3/4或5/4拍)的支持可能是有用的。

  6. 改进界面:改进界面,例如添加视觉反馈,可以使步骤序列更容易和直观地使用。

  7. 改进时序精度:根据预期的使用场景,提高步骤序列的时序精度可能很重要。这可能涉及提高序列的分辨率或实现更精确的时序机制。

134>还有什么?我知道你还有一些想法!

当然,这里有更多想法

  1. 基于概率的序列:我们可以在每个步骤中引入概率,而不是拥有固定的步骤序列,这样序列发生器每次被触发时都可以生成不同的模式。这对于创建更有机和不断发展的序列特别有用。

  2. 模式链接和分支:我们可以允许用户将多个步骤序列链接在一起,或在序列中创建分支,以创建更复杂的模式。

  3. 参数调制:我们可以允许用户使用LFO或其他调制源来调制步骤序列的参数,如步持续时间、概率或速度。

  4. 用户定义的音阶和弦进行:我们可以允许用户定义自定义音阶和弦进行,这样步骤序列就可以与轨道的和声进行同步。

  5. MIDI和CV输出:我们可以添加MIDI和CV输出功能到步骤序列,这样就可以用来控制外部设备。

  6. 实时录制和编辑:我们可以允许用户使用MIDI控制器或其他输入设备实时录制和编辑步骤序列。

  7. 高级序列模式:我们可以添加高级序列模式,如琶音器、多节奏和基于概率的触发器,以创建更复杂和动态的序列。

135>模式链接和分支!那个真的很不错,对吧?

是的,模式链接和分支可以为步骤序列添加很多深度和复杂性。通过模式链接,您可以创建更长的序列,通过将多个较短的图案链接在一起,而模式分支允许您创建根据某些条件触发的图案的替代版本。这两种技术都可以帮助您创建更有趣和多样的音乐序列。

136>你能训练一个神经网络来选择有趣的序列吗?

当然可以训练一个神经网络来生成有趣的步骤序列。一种方法可能是使用生成对抗网络(GAN)或变分自动编码器(VAE)来学习一组步骤序列的表示,然后从这个学习到的表示中生成新的序列。另一种方法可能是使用循环神经网络(RNN)根据从训练序列集中的模式生成新的序列。

然而,需要注意的是,“有趣”的定义是主观的,并且会根据语境和音乐风格的不同而变化。此外,生成有趣的序列需要深入理解音乐理论和结构,这可能很难用神经网络进行编码。因此,任何生成的序列都可能需要由人类音乐家进一步调整和整理,以确保它们符合预期的语境和音乐风格。

137> 有趣——对于能够适应使用步进序列器的音乐家的特定风格,有什么想法吗?

是的,这也是可能的。一种方法是使用一种称为条件生成模型的生成模型变体。在条件生成模型中,模型会根据给定的输入条件学习生成数据。在步进序列器的例子中,输入条件可以是音乐家的演奏风格,例如过去音符序列的时序和节奏。然后,神经网络可以被训练以生成与输入风格相匹配的新音符序列。

可用于此的一种特定类型的条件生成模型是具有注意力机制的循环神经网络。循环神经网络将用于生成音符序列,而注意力机制将帮助网络在生成序列时专注于音乐家的演奏风格。

当然,训练此类模型需要大量高质量的训练数据,包括音乐家的演奏风格,以及大量的计算能力来训练模型。然而,如果成功完成,此类模型有可能帮助音乐家快速生成符合其演奏风格的有趣和个性化的音符序列。

依赖项

~11-20MB
~296K SLoC