Ceci est la version audio du défi d’encodage d’images Twitter .
Concevez un format de compression audio pouvant représenter au moins une minute de musique sur 140 octets ou moins de texte imprimable encodé en UTF-8.
Implémentez-le en écrivant un programme en ligne de commande qui utilise les 3 arguments suivants (après le nom du programme lui-même):
- La ficelle
encode
oudecode
. - Le nom de fichier d'entrée.
- Le nom du fichier de sortie.
(Si votre langage de programmation préféré ne permet pas d'utiliser des arguments de ligne de commande, vous pouvez utiliser une approche alternative, mais vous devez l'expliquer dans votre réponse.)
L' encode
opération convertira le format audio choisi en votre format compressé «tweet» et l' decode
opération convertira votre format «tweet» au format audio d'origine. (Bien entendu, vous êtes censé implémenter une compression avec perte, le fichier de sortie ne doit pas nécessairement être identique à celui de l'entrée, mais dans le même format)
Inclure dans votre réponse:
- Le code source de votre programme, en entier. (Si la page est trop longue, vous pouvez l'héberger ailleurs et y poster un lien.)
- Une explication de la façon dont cela fonctionne.
- Au moins un exemple, avec un lien vers le ou les fichiers audio d'origine, le texte «tweet» qu'il compresse et le fichier audio obtenu en décodant le tweet. (Le répondeur est responsable des assertions de “fair use” du copyright.)
Règles
- Je me réserve le droit de supprimer les échappatoires du règlement du concours à tout moment.
- [Édité le 24 avril] Pour l’entrée de votre
encode
fonction (et la sortie de votredecode
fonction), vous pouvez utiliser n’importe quel format audio commun raisonnable, que ce soit:- Forme d'onde non compressée, comme WAV.
- Forme d'onde compressée, comme MP3.
- Le style “Partition”, comme le MIDI.
- Votre format compressé «tweet» doit en fait coder les sons du fichier d’entrée. Ainsi, les types de sortie suivants ne comptent pas :
- Un URI ou un chemin de fichier indiquant l'emplacement où la sortie réelle est stockée.
- Une clé pour une table de base de données où la sortie réelle est stockée sous forme de blob.
- Quelque chose de similaire.
- Votre programme doit être conçu pour compresser des fichiers de musique génériques , évitez donc de faire des choses trop manifestement liées à votre exemple de chanson. Par exemple, si vous montrez «Twinkle, Twinkle, Little Star», votre programme de compression ne doit pas coder en dur un symbole spécifique pour la séquence do-do-so-so-la-la-so.
- La sortie de votre programme devrait pouvoir passer par Twitter et en ressortir indemne. Je n'ai pas de liste des caractères exacts pris en charge, mais essayez de vous en tenir aux lettres, aux chiffres, aux symboles et à la ponctuation; et évitez les caractères de contrôle, en combinant des caractères, des marqueurs BIDI, ou d'autres choses étranges comme ça.
- Vous pouvez soumettre plus d'une entrée.
Critère de jugement
Il s’agit d’un concours de popularité (c’est-à-dire que la plupart des votes positifs augmentent), mais les électeurs sont invités à prendre en compte les éléments suivants:
Précision
- Pouvez-vous toujours reconnaître la chanson après l'avoir comprimée?
- Ca sonne bien?
- Pouvez-vous toujours reconnaître quels instruments sont joués?
- Pouvez-vous encore reconnaître les paroles? (C'est probablement impossible, mais ce serait impressionnant si quelqu'un le faisait.)
Complexité
Le choix de la chanson exemple compte ici.
- [Ajouté le 24 avril] Ce défi sera plus facile avec les formats MIDI ou similaires. Toutefois, si vous faites l'effort supplémentaire de le faire fonctionner avec des formats de type forme d'onde, cela mérite un crédit supplémentaire.
- Quelle est la structure? Bien sûr, vous pouvez répondre à l'exigence d'une minute en répétant simplement les 4 mêmes mesures un nombre arbitraire de fois. Mais les structures de chansons plus complexes méritent plus de points.
- Le format peut-il gérer plusieurs notes jouées en même temps?
Le code
- Gardez-le aussi court et simple que possible. Cependant, ce n'est pas un code de golf, la lisibilité est donc plus importante que le nombre de caractères.
- Des algorithmes intelligents et compliqués sont également acceptables, dans la mesure où ils sont justifiés par une amélioration de la qualité des résultats.