Answers:
是的,如果您接受了一些换位说明,虽然不常见但并不陌生。
然后,您可以将作品解释为Choon,这是图灵完成的。演奏者是记忆:他们必须记住乐曲当前所转换的音符数量,以及迄今为止演奏的所有音符。显然,这仅适用于计算机或智能设备。
从Choon手册中:
换位
共有三个变调指令,上移(
+
),下移(-
)和取消(.
)。移调指令将所有后续演奏的音符与最后演奏的音符数量进行移调。取消指令(.
)将移调设置回零。换位是累积的,因此将将来的音符加2的Choon代码是
b+
,将4变位是b++
。另外,所使用的值是应用b+b+
移调后的前一个音符的值,因此将将来的音符向上移6而不是4。约翰·凯奇
John Cage指令(
%
)在输出流中引起一个音符静音。约翰凯奇(John Cage)的换位值为零-%-
并且%+
是无操作(除非将单个静默添加到输出中)。重复条
重复条指令(
||:
和:||
)包含一个循环。循环将执行||:
遇到之前最近演奏的音符指示的次数。零或负值表示Choon将立即从匹配处开始跳跃:||
。约翰·凯奇(John Cage)意味着永远重复-%||::||
是一个无限循环。音叉
音叉指令
~
提供了一种打破循环的方法。如果在循环中遇到音叉,并且上次演奏的音符是value的音符A
,那么Choon会立即从下一:||
条指令之后跳转以开始演奏。如果没有其他:||
说明(意味着~
已在任何重复小节之外使用过),则演奏将立即终止。标记物
标记提供了出色的编程便利。标记是记住输出流中某个点的小写字母或单词。引用标记(请参阅下文)将导致再次出现标记后播放的音符。请注意,移调将影响此新弹奏的音符。
如果两个或多个标记顺序出现,或者标记遵循“从标记开始播放”指令,则必须用空格分隔它们。
从输出播放
从输出播放指令(
=
)使您可以再次播放在输出流中已经播放过的音符。您可以按编号来指代音符-自程序开始以来播放的第5个音符=5
,按相对编号指的是最近播放的第3个音符=-3
或按标记-记号之后播放的音符x
为=x
。重用标记并立即引用标记是一种常见的习惯,如下所示:
x=x
。这类似于x=x+y
在常规编程语言中说(其中y
表示当前有效的转置值)。
一约翰·凯奇只是一个休息,一个音叉(大致)连续记号和标记是SEGNO。我想音叉可以由主要演奏者响应的其他演奏者演奏,但是原理是相同的。
图灵完整性至少需要三件事:无限循环,条件跳转(如果-则为if)以及将计算结果存储到内存中某个位置的方法。即使音乐符号有条件的跳跃,它也没有状态,所以不,它不是图灵完备的。
要使图灵完整的语言的标准证明是用该语言编写图灵机。这证明了该语言(通常是该语言的子集)与图灵机之间存在对等关系。
“音乐符号”的概念有点滑。有很多使用的标准化雕刻。然而。有推动信封的作曲家将各种疯狂的东西写下来。
让我们假设您要专注于音乐符号的子集,该子集被认为足以作为Finale或Sibelius或某些主流雕刻工具集的一部分。
所以。
对于Python(或C或任何其他语言),您可以定义符号,磁带,过渡规则以及各种更新磁带的动作,以反映状态变化和磁带运动,在磁带上读写符号。
使用“音乐符号”,我们必须定义符号和有状态磁带,过渡规则以及更新磁带的各种动作。
我们所缺少的是有状态的磁带和规则,这些规则告诉音乐人如何对磁带上的符号做出反应以及如何更新磁带。
从某种意义上讲,空气中流淌的噪音可能是有状态的磁带。但。没有简单的方法来倒带。这种倒带的缺乏意味着表演者将不得不保留某种私人的“磁带”。
这超出了音乐符号的范围,并影响了表演者的其他一些音乐以外的指令。
许多符号都可以进行解释,自然语言说明是音乐符号的一个公认方面-并贯穿于西方(甚至不是全部)西方音乐历史。
Fermatas的定义取决于表演者的判断力,这意味着它取决于他们自己的状态,这几乎总是受音乐与外部因素的影响而改变的,因此这引起了关于音乐符号的无状态本质的一些疑问。
从巴赫的音乐作品中选出的佳能a 2 per Tonus是无限循环的乐曲,只要演奏完成,其音调每次都会提高整步。
最近,在诸如Dave Brubeck的Take Take之类的爵士乐的带注释版本中经常看到诸如“为每个独奏者重复”之类的指令。
也就是说,除了像费马这样的固有任意方面之外,正如其他答案所指出的那样,仅带有一般符号的乐谱可能不是图灵完整的。