Dies ist die Audioversion der Twitter Image Encoding Challenge .
Entwerfen Sie ein Audiokomprimierungsformat, das mindestens eine Minute Musik in 140 Byte oder weniger druckbarem UTF-8-codiertem Text darstellen kann.
Implementieren Sie es, indem Sie ein Befehlszeilenprogramm schreiben, das die folgenden 3 Argumente (nach dem Namen des Programms selbst) enthält:
- Die Zeichenfolge
encode
oderdecode
. - Der eingegebene Dateiname.
- Der Ausgabedateiname.
(Wenn Ihre bevorzugte Programmiersprache keine Befehlszeilenargumente verwenden kann, können Sie einen alternativen Ansatz verwenden, der jedoch in Ihrer Antwort erläutert werden muss.)
Die encode
Operation konvertiert das von Ihnen gewählte Audioformat in das komprimierte Tweet-Format und die decode
Operation konvertiert das Tweet-Format in das ursprüngliche Audioformat. (Natürlich wird von Ihnen erwartet, dass Sie eine verlustbehaftete Komprimierung implementieren, sodass die Ausgabedatei nicht mit der Eingabe identisch sein muss, sondern nur im selben Format.)
Nehmen Sie in Ihre Antwort auf:
- Der vollständige Quellcode Ihres Programms. (Wenn diese Seite zu lang ist, können Sie sie an einer anderen Stelle hosten und einen Link dazu posten.)
- Eine Erklärung, wie es funktioniert.
- Zumindest ein Beispiel mit einem Link zu den ursprünglichen Audiodateien, dem „Tweet“ -Text, auf den es komprimiert wurde, und der Audiodatei, die durch Dekodieren des Tweets erhalten wurde. (Der Beantworter ist für die Behauptungen des Urheberrechts im Hinblick auf eine „faire Verwendung“ verantwortlich.)
Regeln
- Ich behalte mir das Recht vor, Lücken in den Wettbewerbsregeln jederzeit zu schließen.
- [Bearbeitet am 24. April] Für die Eingabe Ihrer
encode
Funktion (und die Ausgabe Ihrerdecode
Funktion) können Sie jedes vernünftige, übliche Audioformat verwenden, sei es:- Nicht komprimierte Wellenform, wie WAV.
- Komprimierte Wellenform, wie MP3.
- Notenstil wie MIDI.
- Ihr komprimiertes "Tweet" -Format muss die Sounds in der Eingabedatei tatsächlich codieren. Die folgenden Ausgabetypen zählen also nicht :
- Ein URI oder Dateipfad, der den Speicherort angibt, an dem die tatsächliche Ausgabe gespeichert ist.
- Ein Schlüssel zu einer Datenbanktabelle, in der die tatsächliche Ausgabe als Blob gespeichert ist.
- Sowas ähnliches.
- Ihr Programm muss so konzipiert sein, dass es generische Musikdateien komprimiert. Tun Sie also nichts, was zu offensichtlich mit Ihrem speziellen Beispielsong zusammenhängt. Wenn Sie beispielsweise "Twinkle, Twinkle, Little Star" demonstrieren, sollte Ihre Komprimierungsroutine kein bestimmtes Symbol für die Sequenz "do-do-so-so-la-la-so" fest codieren.
- Die Ausgabe Ihres Programms sollte tatsächlich in der Lage sein, Twitter zu durchlaufen und unbeschadet herauszukommen. Ich habe keine genaue Liste der unterstützten Zeichen, versuche jedoch, mich an Buchstaben, Ziffern, Symbole und Satzzeichen zu halten. Vermeiden Sie Steuerzeichen, kombinieren Sie Zeichen, BIDI-Marker oder ähnliches.
- Sie können mehr als einen Beitrag einreichen.
Beurteilungskriterien
Dies ist ein Beliebtheitswettbewerb (dh die meisten Netto-Upvotes gewinnen), aber die Wähler werden aufgefordert, Folgendes zu berücksichtigen:
Richtigkeit
- Kannst du das Lied noch erkennen, nachdem es komprimiert wurde?
- Hört es sich gut an?
- Kannst du noch erkennen, welche Instrumente gespielt werden?
- Kannst du die Texte noch erkennen? (Dies ist wahrscheinlich unmöglich, aber es wäre beeindruckend, wenn es jemandem gelingen würde.)
Komplexität
Die Wahl des Beispielsongs spielt hier eine Rolle.
- [Hinzugefügt am 24. April] Diese Herausforderung ist mit MIDI oder ähnlichen Formaten am einfachsten. Wenn Sie sich jedoch mehr Mühe geben, damit es mit wellenformartigen Formaten funktioniert, verdient dies zusätzliche Anerkennung.
- Wie ist die Struktur? Sicher, Sie können die Ein-Minuten-Anforderung erfüllen, indem Sie dieselben 4 Takte beliebig oft wiederholen. Komplexere Songstrukturen verdienen jedoch mehr Punkte.
- Kann das Format mehrere gleichzeitig gespielte Noten verarbeiten?
Der Code
- Halte es so kurz und einfach wie möglich. Dies ist jedoch kein Codegolf, daher ist die Lesbarkeit wichtiger als die Anzahl der Zeichen.
- Clevere, komplizierte Algorithmen sind ebenfalls in Ordnung, sofern sie durch eine verbesserte Ergebnisqualität gerechtfertigt sind.