Es gibt 88 Tasten auf einem Standardpiano und 95 druckbare ASCII- Zeichen (Hex-Codes 20 bis 7E):
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
('Zeichen' bezieht sich von nun an auf jedes druckbare ASCII-Zeichen.)
In diesem JSFiddle habe ich das ausgenutzt und eine einfache Syntax entwickelt, die mit AudioSynth Klaviermusik generiert . (Wenn mich jemand zu einem verlinkbaren Satz echter Klaviertöne führen kann, bin ich dankbar.)
Jedes Zeichen in der Eingabezeichenfolge () 01+-
entspricht außerdem einer Klaviertaste:
CHARACTER: ! " # $ % & ' * , . / 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~
KEY NUMBER: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
NOTE: A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C
OCTAVE: 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 8
So RPNPRRR
spielt die ersten 7 Noten von Mary had a little lamb die voreingestellten Timing - Parameter verwenden Sie in der JSFiddle sehen können.
Space ( ) repräsentiert eine musikalische Pause, die ein Notenintervall dauert. So
RPNPRRR PPP RUU
spielen die ersten 13 Töne von Mary Had a Little Lamb mit Pausen an den richtigen Stellen.
Wenn einem anderen Zeichen ()01
eine Folge von 0
's und 1
' s (Regex [01]+
) vorangestellt wird , wird diese Folge als Binärzahl b gelesen und das Zeichen durch b Kopien von sich selbst ersetzt. So 101A11 10+1-0B01C
wird es, AAAAA ++-C
weil 101
= 5, 11
= 3 usw. (Eine Folge von 0
's und 1
' s am Ende der Zeichenfolge hat keine Auswirkung.)
Übereinstimmende Klammern ( ()
) dienen zwei Zwecken:
- Wenn ihr Inhalt nicht mit einer Folge von
0
's und1
' s endet , werden alle Noten gleichzeitig als Akkord gespielt (was sich sonst nicht von einer Note unterscheidet). So(NQU)
ist ein C - Moll - Akkord auf Oktave 4.
Wenn doppelte Noten vorhanden sind , ihr Sound ist auch dupliziert. Also(NN)
und(NNN)
anders klingen. - Wenn ihr Gehalt tut Ende mit einer Folge von
0
‚s und1
‘ s, dass Folge als binäre Zahl gelesen wird , b , und die Klammern und dessen Inhalt mit ersetzt b Kopien des Inhalts. So(NQU11)
wird 9 einzelne Noten:NQUNQUNQU
.
Klammern Details:
- Das Verschachteln von replizierenden Klammern (Zweck 2) ist in Ordnung:
(N(QU10)11)
→(NQUQU11)
→NQUQUNQUQUNQUQU
. - Das Verschachteln von nicht replizierenden Klammern (Zweck 1) ist in Ordnung, hat jedoch keine Auswirkung:
(A((+)C))
ist dasselbe wie(A+C)
. - Sie können auch beide kombinieren:
((N(QU10))11)
→(NQUQU)(NQUQU)(NQUQU)
. - Eine Folge von
0
's und1
' s vor nicht replizierenden Klammern wiederholt sie auf die gleiche Weise, wie einzelne Zeichen wiederholt werden. So10(NQU)
wird es(NQU)(NQU)
. - Eine Folge von
0
's und1
' s vor dem Replizieren von Klammern hat keine Auswirkung. (
muss immer eine Übereinstimmung haben)
, aber nicht umgekehrt: zBN)
ist gültig.
Plus ( +
) und Minus ( -
) erhöhen bzw. verringern die Dauer von Noten oder das Zeitintervall zwischen Noten, je nach Kontext:
- Wenn innerhalb Klammern nicht-replizierenden, sie sofort erhöhen oder die Notendauer Variable durch eine vorgegebene Anzahl von Millisekunden (siehe verringern JSFiddle ). So
(++)N
spieltN
bei einer längeren Dauer als normal. - Wenn außerhalb Klammern nicht-replizierenden, sie erhöhen oder das Intervall zwischen dem Beginn der nächsten Note und der Note , nachdem sie (und für jedes folgende Intervall) durch eine vorgegebene Anzahl von Millisekunden verringern. Also in
++NP
der Pause zwischen demN
undP
ist länger als üblich.
Die Dauer der Noten und das Zeitintervall zwischen ihnen können nicht unter 0 fallen.
Herausforderung
Ich habe mich absichtlich für () 01+-
die 7 Sonderzeichen entschieden, weil sie in vielen Programmiersprachen in vielen Kontexten harmlos platziert werden können.
Ihre Aufgabe ist es, ein Quine in 512 Bytes oder weniger zu schreiben, das den besten Klang erzeugt, wenn der Code selbst als Eingabezeichenfolge in der JSFiddle verwendet wird .
Sie können beliebige Anfangswerte (nicht negative ganze Zahlen) für die 4 Intervall- / Dauer-Parameter auswählen, aber Ihre Melodie darf nicht länger als 10 Minuten dauern. Sie sollten uns auch mitteilen, ob Ihre Melodie in einem bestimmten Instrument am besten klingt.
Regeln
- In Ihrem Code sind nur Tabulatoren, Zeilenumbrüche und druckbare ASCII-Zeichen zulässig. Alle nicht druckbaren ASCII-Zeichen werden vom Melodieersteller ignoriert.
- Die Ausgabe kann in eine Datei, eine Standardausgabe oder die nächstgelegene Alternative erfolgen (z. B. JS-Warnung). Es erfolgt keine Eingabe.
- Kein Lesen des Quellcodes. Es muss eine wahre Quine sein.
- Das Entfernen von 3 zusammenhängenden Quellzeichen muss dazu führen, dass das Programm nicht mehr als Quine fungiert. Dies soll sicherstellen, dass die Leute keinen guten Song in eine Saite schreiben und dann einen winzigen Quine-Anteil für die Ausgabe haben.
- Also , wenn Ihr Programm war
MYCODE
dannMYC
,MYE
,MDE
, undODE
alle sollten nicht quines sein (sie können sonst Fehler oder Ausgang etwas).
- Also , wenn Ihr Programm war
Dies ist ein Beliebtheitswettbewerb, bei dem die am höchsten bewertete Antwort gewinnt.
Update: Entspannte letzte Regel.
quelle
Antworten:
C
Ich habe ich beschlossen , die niedrige mochte Rauschen durch den String erzeugt Rumpeln ,
/**/
die nicht so zufällig die Art und Weise zu öffnen ist und in der Nähe ein Kommentar in C. Der einzigen anderen interessant hier etwas ist , dass34
für ein"
ersetzt durch35-1
(Ending in einem1
absichtlich) zu Vermeiden Sie gottesfürchtige Akkorde. Ich habe auch versucht, das Ende dramatisch klingen zu lassen. Ich habe es wirklich getan. Ich beabsichtige, dies später zu ändern, damit es ein bisschen besser klingt.Nach meinem Verständnis der Regeln bestehen die kommentierten Abschnitte immer noch die endgültige Regel, da ihre Entfernung zu einem fehlgeschlagenen Quine führt.
quelle
J
Ja, ich denke, Sie können sich vorstellen, wie es weitergehen wird.
Es ist schwer, in J etwas Cooles ohne Parens zu erreichen, und da man sie selten mit 0s und 1s beenden kann, klingen die meisten Dinge so, als ob jemand gleichzeitig auf der hohen und der niedrigen Tastaturhälfte sitzt. Ich habe mein Bestes versucht, ich werde dich wissen lassen.
Hier ist eine funky Basis für Klavier, denke ich. Ich weiß wirklich nicht, was ich als erstes mit Komposition anfangen soll, ich habe mir einfach eine Quine genommen und die Zahlen ein wenig vertauscht.
Und, nur zum Spaß, spielen Sie diese als EDM. Ich nenne es Japhex Twin .
Sie können die Echtheit dieser feinen Code-Schnipsel auf tryj.tk bestätigen .
quelle
Musique Beton mit Python
Ich habe heute nicht viel Zeit, aber ich wollte eine Antwort bekommen. Das Genre ist eine Ausrede dafür, nicht wie irgendetwas zu klingen. Vielleicht ein Soundeffekt in einem Videospiel?
quelle
C
Zeilenumbrüche nur zu Präsentationszwecken; Dies ist nur eine Quine (und erfüllt nur die Längenanforderungen), wenn Zeilenumbrüche entfernt werden.
Die printf-Deklaration wurde zum Kompilieren benötigt
(printf)
./*(*/
und/*)*/
wurden verwendet, um Klammern im Code abzugleichen, während eine Mischung aus Klammern und dem Komma-Operator verwendet wurde, um Akkorde aus denprintf
Parametern zu bilden .Bearbeiten: Verkürzt, um den Größenanforderungen zu entsprechen und das Stück ein bisschen schneller zu machen.
Das klingt am besten auf dem Klavier.
quelle
Planen
Das mag nicht besonders melodisch sein (eigentlich hört es sich so an, als hätte jemand ein totes Schwein in einen Baby-Grand geworfen), aber es ist zumindest ein kurzes Musikstück. Es wäre schwierig, irgendetwas länger oder weniger totenschweinartig im Schema zu machen.
quelle
Für Golfscript
Dies entspricht dem Buchstaben der Regel, nach der keine drei aufeinanderfolgenden Buchstaben entfernt werden, obwohl dies nicht die Absicht ist, wie ich erfahre.
quelle
Cobra / Batch
Technisch gesehen kein Quine in Batch (es liest seine eigene Quelle). Es ist jedoch eine Quine in Cobra.
Mit dem Piano-Modus klingt es am besten, ähnlich wie mit Geister-Musik aus einem Videospiel der Super Mario World-Ära.
quelle
Pyth
Am besten mit der vierten Einstellung (Betrag + und - Wechselintervall) bei ca. 20 spielen, Pause bei Standardeinstellungen. Klingt am besten auf dem Klavier.
quelle
Haskell
(Ich bin nicht sicher, ob der Variablenname die letzte Regel verletzt.)
Am besten auf einem Klavier mit einer Notendauer von 1000 Millisekunden und einem Notenintervall von 250 Millisekunden mit den Standardwerten + und - spielen.
quelle