私の最初の考えは、楽譜にループがあるが、条件分岐を書く方法がないということですよね?
私はミュージシャンではないので、おそらく誰かがギャップを埋めることができますか?
私の最初の考えは、楽譜にループがあるが、条件分岐を書く方法がないということですよね?
私はミュージシャンではないので、おそらく誰かがギャップを埋めることができますか?
回答:
はい。転置のためのいくつかの指示を認めた場合-珍しいことではありますが、未知ではありません。
その後、チューリング完全なChoonとして作品を解釈できます。演奏者は記憶です。彼らは、現在作品が移調されている音符の数と、これまでに演奏したすべての音符を覚えていなければなりません。明らかに、それはコンピューター、またはおそらく賢い人だけに実行可能です。
Choonマニュアルから:
転置
移調命令には、上(
+
)、下(-
)、キャンセル(.
)の3つがあります。移調命令は、最後に演奏されたノートの量だけ、演奏された後続のすべてのノートを移調します。キャンセル命令(.
)は、転置をゼロに戻します。移調は累積的であるため、将来の音符を2だけトランスポーズするChoonコードは
b+
で、4でトランスフォーメーションはになりますb++
。また、使用される値は、移調が適用された後の前のノートの値であるため、b+b+
将来のノートを4ではなく6でトランスポーズします。ジョン・ケイジ
John Cage命令(
%
)により、出力ストリームに1つの音の無音が生じます。John Cageの転置値はゼロで%-
あり%+
、無操作です(1つの無音が出力に追加されることを除いて)。繰り返しバー
繰り返しバーの指示(
||:
および:||
)はループを囲みます。ループは、発生する前に再生された最新のノートで示された回数だけ実行され||:
ます。ゼロまたは負の値は、Choonがすぐにジャンプしてマッチからプレーを始めることを意味するでしょう:||
。ジョンケージと%||::||
は、永遠に繰り返すことを意味します- 無限ループです。音叉
Tuning Fork命令
~
は、ループから抜け出す方法を提供します。音叉がループ内で検出され、最後に演奏された音がvalueの音であった場合A
、Choonは次の:||
命令の後からすぐに演奏を開始します。それ以上の:||
指示がない場合(つまり~
、繰り返しバー以外で使用されている場合)、パフォーマンスはすぐに終了します。マーカー
マーカーは素晴らしいプログラミングの利便性を提供します。マーカーは、出力ストリームのポイントを記憶する小文字または単語です。マーカーを参照すると(以下を参照)、マーカーの発生後に再生されたノートが再び再生されます。移調はこの新しく演奏される音に影響することに注意してください。
2つ以上のマーカーが連続して発生する場合、またはマーカーがマーカーから再生の指示に従う場合、マーカーは空白で区切る必要があります。
出力から再生
[出力から再生]命令(
=
)を使用すると、出力ストリームで既に再生されているノートを再度再生できます。あなたは数でノートを参照してくださいすることができます- 5ノートが演奏プログラムが始まってからだろう=5
相対数で、 -第三最新のノートが演奏さだろう=-3
か、マーカーで-マーカーが後にノートが演奏x
になります=x
。次のように、マーカーを再利用してすぐに参照するのが一般的なイディオムです
x=x
。これはx=x+y
、従来のプログラミング言語(y
現在有効な転置値を表す)で言うことに似ています。
ジョン・ケージがちょうどで残り、チューニングフォーク(おおよそ)のdal SEGNOで、マーカーは SEGNOです。音叉は、主演者が応答する追加の演者によって演奏されると思いますが、原理は同じです。
チューリングの完全性には、少なくとも3つのことが必要です。無限ループ、条件付きジャンプ(if-then)、および計算結果をメモリのどこかに保存する方法です。楽譜に条件付きジャンプがあったとしても、状態はありません。そのため、チューリング完全ではありません。
言語がチューリング完全であることの標準的な証明は、その言語でチューリング機械を書くことです。これは、言語(通常は言語のサブセット)とチューリングマシンの間に同等性があることを証明しています。
「音楽表記法」の概念は少し滑りやすいです。多くの標準化された彫刻が使用されています。しかしながら。あらゆる種類のクレイジーなものを紙に書き留める封筒押しの作曲家がいます。
Finale、Sibelius、または主流の彫刻ツールセットの一部となるのに十分な標準と考えられている楽譜のサブセットに焦点を当てたいと思ってみましょう。
そう。
Python(またはCなど)の場合、シンボル、テープ、移行ルール、およびテープを更新して状態の変化とテープの動きを反映するさまざまなアクションを定義し、テープ上のシンボルの読み取りと書き込みを行います。
「楽譜」を使用して、シンボルとステートフルテープ、移行ルール、およびテープを更新するさまざまなアクションを定義する必要があります。
不足しているのは、ステートフルテープと、ミュージシャンにテープ上の記号への応答方法とそのテープの更新方法を伝えるルールです。
ある意味では、空中を流れるノイズはステートフルテープであるかもしれません。しかし。テープを巻き戻す簡単な方法はありません。この巻き戻しの欠如は、演奏者が何らかの種類のプライベートな「テープ」を保持しなければならないことを意味します。
これは、楽譜の外にあり、演奏者へのその他の音楽以外の指示になります。
表記法の多くは解釈に開放されており、自然言語の指示は音楽表記法の受け入れられた側面であり、西洋の表記された音楽の歴史のすべてではないにしても、ほとんど全体に渡っています。
フェルマタスは定義上、演奏者の裁量に依存します。つまり、音楽によって外部要因に関連してほとんど常に変更される、自身の状態に依存することを意味します。
Bach's Musical OfferingのCanon a 2 Tonusは無限ループの曲で、曲が演奏される限り、毎回音調が1ステップずつ上がります。
最近では、たとえば、デイブ・ブルーベックのテイク・ファイブなどのジャズ作品の表記バージョンで「各ソリストのために繰り返し」などの指示を見ることが一般的です。
そうは言っても、フェルマータのような本質的にarbitrary意的な側面は別として、他の答えが述べているように、一般的な記号以外の音楽表記法はおそらくチューリング完全ではありません。
記述言語であるため、チューリング完全言語とは関係ありません。計算またはデータの変更に関するコマンド、状態、入力、出力は記述の結果以外にはありません。
また、入力に依存する条件付きジャンプはありません。すべてのジャンプを解決すると、ツリーではなく線形構造が得られます。したがって、この言語でモデル化できるすべての「プログラム」は、ループやジャンプのない線形です。