生成更多我最喜欢的Aphex Twin Track

让我们构建一个马尔可夫链来描述这两个短语。 对于状态名称,我将结合使用拍子和音符,例如1A来描述在拍子上演奏的A。 我还将添加一个开始和一个结束状态来表示短语的开始和结束。 我将使用箭头(→)表示从一种状态到另一种状态的过渡。

在此表示法中,短语1是开始1A→2F→3A→4F→结束 ,短语2是开始→1E→2C→3A→4C结束 。 有9种状态: 开始,1A,1E,2F,2C,3A,4F,4C结束,这是每个转换的概率:

开始→1A :50%
开始→1E 50%
1A→2F :100%
1E→2C :100%
2F→3A :100%
2C→3A :100%
3A→4F :50%
3A→4C :50%
4F→结束 100%
4C→结束 100%

借助此马尔可夫链,我们可以通过从开始处开始并跟随过渡直到到达终点来生成短语。 这被称为步行链

这是用于遍历此马尔可夫链的算法:

  1. 从头开始
  2. 记录当前状态。 根据每次转换的可能性从当前状态中选择一个转换,然后将其转换为下一个状态。
  3. 重复步骤2直到结束

让我们生成一个短语。 从开始开始 ,就有50%的机会过渡到1A,而有50%的机会过渡到1E 。 我会掷硬币; 头,我们转到1A ,尾部,我们转到1E 。 Golly,它降落了头部,所以现在我们的电流为1A。 到目前为止,我们正在生成的短语看起来像start→1A。

1A总是转换为2F ,因此现在我们有start→1A→2F 。 再次,我们可以看到2F始终转换为3A ,这使我们处于开始→1A→2F→3A 。 这是有趣的地方。

3A有50%的机会过渡到4F ,50%的机会过渡到4C。 我可以掷另一枚硬币来确定我们选择哪种状态。 假设正面表示进入4F ,尾部表示进入4C 。 如果我掷硬币并落在头上,我们将生成第一个原始短语的副本( start→1A→2F→3A→4F→end )。 但是如果硬币落在尾巴上,我们将生成一个新短语: start1A→2F→3A→4C→end