Aujourd'hui, le 11 novembre 2015, c'est la Journée des anciens combattants aux États-Unis. " Taps " est le clairon joué lors des funérailles militaires américaines:
( "Taps" sur SoundCloud de vtmiller )
C'est une mélodie simple, longue de vingt-quatre notes seulement et utilisant seulement quatre notes différentes. Voici la partition:
( source )
Défi
Écrivez un programme ou une fonction qui lit des "Taps" ou sort un fichier audio de "Taps" dans n'importe quel format de fichier audio courant (par exemple MP3, WAV, MIDI). Il peut être joué dans n'importe quelle touche, en utilisant n'importe quel type d'instrument ou de bip disponible dans votre langue. Par exemple, cela pourrait ressembler à un piano au lieu d'un clairon. (Même si un seul type d'instrument doit être utilisé.)
Les vingt-quatre notes doivent être jouées avec une hauteur, une durée et un espacement précis. Quelqu'un qui connaît "Taps" devrait être en mesure d'exécuter votre code et de reconnaître facilement la chanson en cours de lecture.
La durée de la mélodie (du début de la première note à la fin de la dernière note) doit être comprise entre 30 et 70 secondes. Vous pouvez éventuellement avoir jusqu'à 5 secondes de silence pour remplir le début et / ou la fin de votre fichier son, donc un fichier de 80 secondes est le plus long autorisé.
Bien sûr, vous ne pouvez pas simplement télécharger la chanson en ligne quelque part ou l'extraire d'une bibliothèque audio qui se trouve l'avoir comme échantillon. Vous pouvez cependant utiliser des bibliothèques audio qui peuvent jouer / composer des notes individuelles et créer des fichiers audio.
Notation
Il s'agit de code-golf , donc la réponse la plus courte en octets l'emporte. Cependant, pour ce défi particulier, je vous encourage à ne pas vous concentrer sur votre nombre d'octets, surtout au détriment de la qualité sonore. Jouez vos soumissions, mais laissez-vous créatif avec votre choix d'instruments ou votre méthodologie de sortie sonore. Ce défi vise à honorer les vétérans, pas à crier une version à peine reconnaissable de "Taps".
Notez que vous pouvez incorporer des fichiers audio SoundCloud directement dans des publications en collant simplement le lien sur une ligne vide. Si vous avez un compte SoundCloud, ce serait un excellent moyen de partager votre sortie.
la source
Réponses:
qb64,
10084 octetsVersion mise à jour de l'ancien Qbasic, téléchargeable sur http://www.qb64.net/
Count exclut les espaces, qui ne sont pas nécessaires et uniquement là pour diviser les données en phrases de trois notes pour plus de clarté.
Commandes dans la chaîne de lecture
Histoire du golf:
Premier post: 4/4 fois à 4/2 fois, ce qui signifie que j'ai des notes entières, mais pas de doubles croches.
Édition 1: la clé est passée de C (plage GG) à F (plage CC). Maintenant, je n'ai plus qu'à effectuer un changement d'octave une fois, pour le Do élevé, qui ne se produit qu'une seule fois, plutôt que tous les G faibles comme auparavant.
Après avoir éliminé tous ces changements d'octave, je ne pense pas qu'il y ait plus de golf. Il y a un total de 20
L
, mais il n'y a aucun moyen évident de les éviter.La dernière phrase (11 caractères) est la même que la première, mais il n'y a aucun moyen de l'insérer deux fois en moins de 11 caractères. Les données répétées ne compteraient que 9 caractères si les initiales
L4
étaient éliminées (cela semble inutile car la longueur de note par défaut semble être une noire, mais elle n'est pas documentée, je l'ai donc laissée dedans.)la source
JavaScript,
203198196195 octets5 octets enregistrés grâce à Dendrobium et 1 grâce à @PatrickRoberts.
Explication
Testez-le ici dans le navigateur! Fonctionne sur tout navigateur prenant en charge l'API HTML5 Web Audio .
la source
Mathematica,
361287285 octetsJe suis allé pour l'exactitude ici. La sortie est exactement celle décrite dans la partition, jouée avec la trompette. Vous pouvez trouver le fichier ici .
Merci à @ MartinBüttner pour ses suggestions de golf.
la source
%1
,%2
et%%
n'enregistrez en fait aucun octet surx="E5"
->x
(en fait, vu la fréquence à laquelle vous les utilisez, vous devriez en fait économiser beaucoup en utilisant des variables). Ensuite, vous pouvez enregistrer des tonnes d'octets en utilisantEmitSount@Sound[SoundNote[#,5/#2,"Trumpet",SoundVolume->#3/17]&@@@{{%%,8,17},{%%,24,20},...}
et en stockant la note la plus utilisée dans%
. Et à 24 notes, il pourrait être encore plus court de partitionner une liste plate:SoundNote[#,5/#2,"Trumpet",SoundVolume->#3/17&@@@{%%,8,17,%%,24,20,%2,2,23,...}~Partition~3
Sonic Pi, 899 octets
Le timing est un peu décalé, mais je pense que ça va.
Légèrement golfé:
la source
MATLAB,
338327262258230 octetsla source
SmileBASIC, 73 octets
Toutes les notes et les horaires sont corrects. J'ai utilisé une trompette parce que c'est la chose la plus proche en MIDI
la source
Powershell,
183175159 159 octetsVoyage de nostalgie, qui n'aime pas les bips?!
Explication (sortof)
Cela se jouera dans environ 45 secondes.
C'est la première fois que j'utilise le PowerShell de Windows, tous les conseils sur le golf sont les bienvenus.
anciennes versions
175183la source
BBC Basic, 111
Téléchargez l'interprète sur http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Le score exclut les espaces blancs et les nouvelles lignes, qui ne sont pas essentiels et ajoutés pour plus de lisibilité
Compression assez standard, 1 caractère ASCII par note. Les paramètres de
SOUND
sont les suivants:La plage de la chanson est de 13 notes, même si seulement 4 sont utilisées. Pour obtenir cette plage dans la plage de 95 chiffres de l'ASCII imprimable, j'ai dû presser la durée dans une plage entière de 7 et la prendre modulo 7. Les durées suivantes (en seizièmes) sont utilisées (à l'exception de 6 qui n'est jamais utilisé): 1,2,3,4,6,8,12. Pour produire ces nombres, j'ai trouvé l'idée de diviser 12 par une puissance de
sqrt(2)
(approximée par 1,4) et de tronquer.C'est
SOUND1,0,1,1
une nuisance, qui coûte 12 octets. Il faut prévoir une pause entre des notes de hauteur identique.la source
Ruby + bip, 178 octets
Cela m'a pris un certain temps pour faire cela, je pense que j'ai raté le bateau, mais peu importe.
f
contient les quatre fréquences utilisées.n
contient les cinq longueurs de note utilisées, en multiples de doubles croches.a="00101...
contient toutes les hauteurs de note suivies de toutes les longueurs de note, sous forme d'index dans les tableaux respectifs.l
est ensuite réglé sur le 24e indice et à partir dea
. Ensuite, une commande de bip est construite en itérant à travers tout ce qui précède, et exécutéela source
C - (Brut: 318 | WAV: 437)
PCM mono 8 bits (non signé) à 44800 Hz, 33,60 secondes.
Les dynamiques mezzo forte, fortissimo et forte sont quelque peu mises en œuvre artistiquement. Les fermatas pourraient être mieux.
Le code repose sur
unsigned long long
8 octets et un système peu endian.Compilez et exécutez avec quelque chose comme:
Ajouter
-DRAW
à la ligne de compilation pour la variante brute.La sortie brute peut être jouée avec par exemple SoX
play
comme:la source