Hari ini, 11 November 2015, adalah Hari Veteran di Amerika Serikat. " Taps " adalah panggilan terompet yang dimainkan di pemakaman militer AS:
( "Taps" di SoundCloud dari vtmiller )
Ini adalah melodi sederhana, panjangnya hanya dua puluh empat dan hanya menggunakan empat nada yang berbeda. Inilah lembaran musiknya:
( sumber )
Tantangan
Tulis program atau fungsi yang memainkan "Taps" atau mengeluarkan file audio "Taps" dalam format file audio apa pun yang umum (mis. MP3, WAV, MIDI). Itu dapat dimainkan dengan tombol apa saja, menggunakan segala jenis instrumen atau bunyi bip yang tersedia untuk bahasa Anda. Misalnya, mungkin terdengar seperti piano, bukan terompet. (Meskipun masih hanya satu jenis instrumen yang harus digunakan.)
Semua dua puluh empat not harus dimainkan dengan nada, durasi, dan jarak yang akurat. Seseorang yang terbiasa dengan "Taps" harus dapat menjalankan kode Anda dan dengan mudah mengenali lagu yang sedang diputar.
Durasi melodi (dari awal not pertama hingga akhir not terakhir) harus antara 30 dan 70 detik. Secara opsional, Anda mungkin memiliki 5 detik keheningan yang menyertai awal dan / atau akhir file suara Anda, sehingga file 80 detik adalah yang terlama.
Anda mungkin tidak, tentu saja, cukup mengunduh lagu secara online di suatu tempat atau mengekstraknya dari perpustakaan audio yang kebetulan memilikinya sebagai sampel. Namun, Anda dapat menggunakan pustaka audio yang dapat memutar / menulis catatan individual dan membuat file audio.
Mencetak gol
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang. Namun, untuk tantangan khusus ini saya mendorong Anda untuk tidak fokus pada jumlah byte Anda, terutama dengan mengorbankan kualitas suara. Golf kiriman Anda tetapi biarkan diri Anda menjadi kreatif dengan pilihan instrumen Anda atau metodologi output suara. Tantangan ini dimaksudkan untuk menghormati para veteran, bukan tentang memekik versi "Taps" yang nyaris tidak dikenali.
Perhatikan bahwa Anda dapat menyematkan file audio SoundCloud langsung ke posting dengan hanya menempelkan tautan pada baris kosong. Jika Anda memiliki akun SoundCloud, ini akan menjadi cara yang bagus untuk membagikan hasil Anda.
sumber
Jawaban:
qb64,
10084 byteVersi terbaru dari Qbasic lama, dapat diunduh di http://www.qb64.net/
Count tidak termasuk spasi, yang tidak diperlukan dan hanya ada di sana untuk membagi data menjadi frase tiga nada untuk kejelasan.
Perintah dalam string bermain
Sejarah golf:
Posting pertama: 4/4 kali menjadi 4/2 kali, yang berarti saya memiliki beberapa catatan utuh, tetapi tidak ada catatan keenam belas.
Sunting 1: Kunci diubah dari C (rentang GG) ke F (rentang CC). Sekarang saya hanya perlu melakukan perubahan oktaf sekali, untuk C tinggi, yang hanya terjadi sekali, daripada semua G rendah seperti sebelumnya.
Setelah menyingkirkan semua perubahan oktaf itu, saya pikir tidak ada lagi golf. Ada total 20
L
-an tetapi tidak ada cara yang jelas untuk menghindarinya.Frasa terakhir (11 karakter) sama dengan yang pertama, tetapi tidak ada cara untuk memasukkannya dua kali di bawah 11 karakter. Data yang diulang akan hanya 9 karakter jika inisial
L4
dihilangkan (Tampaknya tidak perlu karena panjang nada default tampaknya seperempat catatan, tetapi tidak didokumentasikan jadi saya meninggalkannya.)sumber
JavaScript,
203198196195 byte5 byte disimpan berkat Dendrobium dan 1 berkat @PatrickRoberts.
Penjelasan
Uji di sini di browser! Bekerja pada browser apa pun yang mendukung API Audio Web HTML5 .
sumber
Mathematica,
361287285 bytesSaya mencari akurasi di sini. Keluarannya persis seperti yang dijelaskan dalam skor, dimainkan dengan trompet. Anda dapat menemukan file di sini .
Terima kasih kepada @ MartinBüttner untuk saran bermain golf.
sumber
%1
,%2
dan%%
jangan benar-benar menyimpan byte lebih darix="E5"
->x
(pada kenyataannya, melihat seberapa sering Anda menggunakannya, Anda sebenarnya harus menyimpan cukup banyak dengan menggunakan variabel). Kemudian Anda dapat menghemat banyak byte dengan menggunakanEmitSount@Sound[SoundNote[#,5/#2,"Trumpet",SoundVolume->#3/17]&@@@{{%%,8,17},{%%,24,20},...}
dan menyimpan catatan yang paling sering digunakan%
. Dan pada 24 catatan mungkin masih lebih pendek untuk mempartisi daftar datar:SoundNote[#,5/#2,"Trumpet",SoundVolume->#3/17&@@@{%%,8,17,%%,24,20,%2,2,23,...}~Partition~3
Sonic Pi, 899 byte
Waktunya sedikit mati, tapi saya pikir tidak apa-apa.
Golf ringan:
sumber
MATLAB,
338327262258230 bytesumber
SmileBASIC, 73 byte
Semua catatan dan pengaturan waktu sudah benar. Saya menggunakan terompet karena itu adalah hal yang paling dekat di MIDI
sumber
Powershell,
183175159 bytePerjalanan nostalgia, siapa yang tidak suka bip?
Penjelasan (sortof)
Ini akan diputar dalam waktu sekitar 45 detik.
Ini adalah pertama kalinya saya menggunakan Powershell Windows, setiap tips tentang bermain golf ini sangat menyenangkan.
versi lama
175183sumber
BBC Basic, 111
Unduh juru bahasa di http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Skor mengecualikan spasi putih dan baris baru, yang tidak penting dan ditambahkan untuk dibaca
Kompresi yang cukup standar, 1 karakter ASCII per nada. Parameter
SOUND
adalah sebagai berikut:Rentang lagunya adalah 13 not, meski hanya 4 yang digunakan. Untuk mendapatkan kisaran ini ke dalam kisaran nomor 95 dari ASCII yang dapat dicetak, saya harus menekan durasinya menjadi bilangan bulat 7 dan membawanya modulo 7. Durasi berikut (dalam enam belas) digunakan (dengan pengecualian 6 yang tidak pernah digunakan): 1,2,3,4,6,8,12. Untuk menghasilkan angka-angka ini, saya mendapat ide untuk membagi 12 dengan kekuatan
sqrt(2)
(kira-kira sebesar 1,4) dan memotong.Ini
SOUND1,0,1,1
adalah gangguan, seharga 12 byte. Penting untuk memberikan jeda di antara nada-nada nada yang identik.sumber
Ruby + bip, 178 byte
Butuh waktu beberapa saat untuk membuat ini, saya pikir saya ketinggalan perahu, tapi apa pun.
f
memegang empat frekuensi yang digunakan.n
memegang lima not yang digunakan, dalam kelipatan not ke-16.a="00101...
memegang semua nada not diikuti oleh semua panjang nada, sebagai indeks ke dalam array masing-masing.l
kemudian diatur ke indice ke 24 dan seterusnyaa
. Kemudian perintah bip dibangun dengan mengulangi semua yang di atas, dan dieksekusisumber
C - (Raw: 318 | WAV: 437)
8-bit (unsigned) mono PCM pada 44800 Hz, 33,60 detik.
Dinamika mezzo, fortissimo dan forte agak artistik dilaksanakan. Fermatas bisa lebih baik.
Kode bergantung pada
unsigned long long
8 oktet dan sistem little endian.Kompilasi dan jalankan dengan sesuatu seperti:
Menambahkan
-DRAW
ke baris kompilasi untuk varian mentah.Output mentah dapat dimainkan dengan mis. SoX
play
sebagai:sumber