Saya bertanya-tanya, apakah bahasa notasi musik Turing-Lengkap ?
Pikiran pertama saya adalah bahwa ada loop dalam notasi musik, tetapi tidak ada cara untuk menulis cabang bersyarat, kan?
Saya bukan seorang musisi, jadi mungkin seseorang dapat membantu mengisi kekosongan?
turing-completeness
Klaim
sumber
sumber
Jawaban:
Ya, jika Anda mengakui beberapa instruksi untuk transposisi — tidak umum tetapi tidak diketahui.
Anda kemudian dapat menafsirkan sepotong sebagai Choon , yang Turing-lengkap. Penampilnya adalah ingatan: mereka harus mengingat jumlah nada yang digunakan untuk mengubah bagian itu, dan semua nada yang telah mereka mainkan sejauh ini. Jelas itu hanya layak untuk komputer, atau mungkin seorang ahli.
Dari manual Choon:
Sebuah John Cage hanya beristirahat , sebuah Tuning Fork adalah (kira-kira) dal segno, dan penanda adalah segno a. Saya kira garpu tala bisa dimainkan oleh pemain tambahan yang kepadanya pemain utama merespons, tetapi prinsipnya sama.
sumber
Turing kelengkapan membutuhkan, minimal, tiga hal: loop tak terbatas, lompatan bersyarat (jika-maka), dan cara untuk menyimpan hasil perhitungan ke suatu tempat di memori. Bahkan jika notasi musik memiliki lompatan bersyarat, ia tidak memiliki keadaan, jadi tidak, itu bukan Turing-lengkap.
sumber
Bukti standar untuk bahasa yang akan diselesaikan Turing adalah menulis mesin Turing dalam bahasa itu. Ini membuktikan bahwa ada kesetaraan antara bahasa (biasanya bagian dari bahasa) dan mesin Turing.
Gagasan "Notasi Musikal" agak licin. Ada banyak ukiran standar yang digunakan. Namun. Ada komposer pendorong amplop yang menulis semua jenis barang gila di atas kertas.
Mari berpura-pura Anda ingin fokus pada subset notasi musik yang dianggap cukup standar untuk menjadi bagian dari Finale atau Sibelius atau beberapa toolset aliran utama.
Begitu.
Untuk Python (atau C atau apa pun) Anda mendefinisikan simbol, rekaman, aturan transisi, dan berbagai tindakan yang memperbarui rekaman untuk mencerminkan perubahan keadaan dan gerakan pita, membaca dan menulis simbol pada rekaman itu.
Dengan menggunakan "Notasi Musik", kita harus mendefinisikan simbol dan rekaman stateful, aturan transisi dan berbagai tindakan yang memperbarui rekaman.
Yang tidak kita miliki adalah rekaman yang menyatakan keadaan dan aturan yang memberi tahu para musisi bagaimana cara merespons simbol pada rekaman itu dan bagaimana memperbarui rekaman itu.
Dalam arti tertentu, suara-suara yang mengalir di udara mungkin merupakan pita stateful. Tapi. Tidak ada cara mudah untuk memundurkan kaset itu. Kurangnya mundur ini berarti bahwa pemain harus menyimpan semacam "rekaman" pribadi.
Ini mendapat notasi musik luar dan ke beberapa instruksi ekstra-musik lain untuk pemain.
sumber
Sebagian besar notasi terbuka untuk interpretasi, dan instruksi bahasa alami merupakan aspek yang diterima dari notasi musik - dan telah ada di sebagian besar atau tidak semua sejarah musik notasi Barat.
Fermatas menurut definisi tergantung pada kebijaksanaan pemain, yang berarti bahwa itu akan tergantung pada keadaan mereka sendiri, yang hampir selalu diubah oleh musik dalam hubungannya dengan faktor eksternal - jadi ini menimbulkan beberapa pertanyaan tentang sifat kewarganegaraan notasi musik.
Canon a 2 per Tonus dari Bach's Musical Offering adalah bagian yang tak terhingga yang nada suaranya naik sebanyak satu langkah setiap kali lewat selama karya tersebut dimainkan.
Baru-baru ini, sudah umum untuk melihat instruksi seperti "repeat for each solois" di, misalnya, versi Jazz yang terkenal seperti Take Five karya Dave Brubeck .
Yang mengatakan, selain dari aspek sewenang-wenang yang inheren seperti fermata, sebagai jawaban lain menyatakan, notasi musik dengan apa pun kecuali simbol umum mungkin tidak lengkap Turing.
sumber
Ini tidak terkait dengan Turing bahasa lengkap karena merupakan bahasa deskriptif. Tidak ada perintah dalam hal perhitungan atau modifikasi data, tidak ada status, tidak ada input, tidak ada output kecuali untuk hasil deskripsi itu sendiri.
Juga tidak ada lompatan bersyarat tergantung pada input. Ketika Anda menyelesaikan semua lompatan Anda mendapatkan struktur linier, bukan pohon. Jadi semua "program" yang dapat dimodelkan dengan bahasa ini adalah linier tanpa loop atau melompat sama sekali.
sumber