Je me demande si le langage de notation musicale est le langage Turing-Complete ?
Ma première pensée est qu'il y a des boucles dans la notation musicale, mais il n'y a aucun moyen d'écrire des branches conditionnelles, non?
Je ne suis pas musicien, alors peut-être que quelqu'un peut aider à combler les lacunes?
turing-completeness
Klaim
la source
la source
Réponses:
Oui, si vous admettez quelques instructions de transposition, peu communes mais pas inconnues.
Vous pouvez ensuite interpréter une pièce comme Choon , qui est Turing-complete. L’artiste est la mémoire: il doit se rappeler le nombre de notes avec lesquelles la pièce est actuellement transposée et toutes les notes qu’il a jouées jusqu’à présent. Évidemment, ce n'est faisable que pour un ordinateur, ou peut-être un savant.
Du manuel de Choon:
Un John Cage est juste un repos , un diapason est (approximativement) dal segno, et un marqueur est un segno. Je suppose que le diapason pourrait être joué par un interprète supplémentaire auquel l’interprète principal répond, mais le principe est le même.
la source
Cette complétude nécessite au minimum trois choses: une boucle infinie, un saut conditionnel (si-alors) et un moyen de stocker les résultats des calculs quelque part en mémoire. Même si la notation musicale a des sauts conditionnels, elle n'a pas d' état, donc non, elle n'est pas complète.
la source
La preuve standard pour qu'une langue soit complétée par Turing est d'écrire une machine de Turing dans cette langue. Cela prouve qu'il existe une équivalence entre le langage (généralement un sous-ensemble du langage) et la machine de Turing.
La notion de "notation musicale" est un peu glissante. Il y a beaucoup de gravures standardisées qui sont utilisées. Pourtant. Il y a des compositeurs qui poussent des enveloppes et qui écrivent toutes sortes de choses folles sur papier.
Imaginons que vous souhaitiez vous concentrer sur le sous-ensemble de la notation musicale considéré comme suffisamment standard pour faire partie de Finale ou de Sibelius ou d'un ensemble d'outils de gravure standard.
Alors.
Pour Python (ou C ou autre), vous définissez les symboles, la bande, les règles de transition et les différentes actions qui mettent à jour la bande pour refléter le changement d'état et le mouvement de la bande, ainsi que la lecture et l'écriture de symboles sur la bande.
En utilisant la "notation musicale", nous devons définir les symboles et la bande dynamique, les règles de transition et les différentes actions qui mettent à jour la bande.
Ce qui nous manque, c'est une bande dynamique et des règles indiquant aux musiciens comment réagir aux symboles sur la bande et comment mettre à jour cette bande.
En un sens, les bruits qui circulent dans l'air pourraient être la bande à états. Mais. Il n'y a pas de moyen facile de rembobiner la bande. Ce manque de rembobinage signifie que l’artiste interprète devrait conserver une "bande" privée quelconque.
Cela sort de la notation musicale et entre dans d'autres instructions extra-musicales à l'interprète.
la source
Une grande partie de la notation est sujette à interprétation et les instructions en langage naturel sont un aspect accepté de la notation musicale - et ont été à peu près partout dans l'histoire de la musique notée occidentale.
Les Fermatas, par définition, dépendent de la discrétion de l'artiste, ce qui signifie que cela dépendrait de son propre état, qui est presque toujours altéré par la musique en conjonction avec des facteurs externes. Cela soulève donc certaines questions sur le caractère apatride de la notation musicale.
Canon a 2 par Tonus de l'offrande musicale de Bach est une pièce infiniment bouclée dont la tonalité augmente d'un pas complet à chaque fois tant que la pièce est jouée.
Plus récemment, il est courant de voir des instructions telles que "répéter pour chaque soliste" dans, par exemple, des versions notées de morceaux de Jazz tels que Take Five de Dave Brubeck .
Cela dit, mis à part des aspects intrinsèquement arbitraires tels que les fermata, ainsi que l’indique l’autre réponse, la notation musicale ne contenant que des symboles généraux n’est probablement pas complète.
la source
Ce n'est pas lié aux langages complets de Turing puisqu'il s'agit d'un langage descriptif. Il n'y a pas de commandes en termes de calcul ou de modification de données, pas d'états, pas d'entrée, pas de sorties sauf pour le résultat de la description elle-même.
De plus, il n'y a pas de sauts conditionnels en fonction de l'entrée. Lorsque vous résolvez tous les sauts, vous obtenez une structure linéaire, pas un arbre. Ainsi, tous les "programmes" pouvant être modélisés par ce langage sont linéaires sans boucles ni sauts.
la source