Tujuan Anda adalah mencetak lirik lagu "Twinkle Twinkle Little Star" saat setiap not dimainkan.
Mikrofon komputer akan mendengar catatan. Jika nada (tetapi tidak harus panjang) dari catatan itu benar, cetak suku kata yang sesuai. Kalau tidak, jangan lakukan apa pun. Setiap not akan memiliki setidaknya setengah detik, dan akan ada jeda setidaknya seperempat detik di antara not.
Gunakan catatan musik yang disediakan di sini , dan lirik berikut: (Garis vertikal mewakili jeda suku kata.)
Twin | kle, twin | kle, lit | tle star,
Bagaimana saya memenangkan apa pun Anda.
Naik tinggi dunia,
Seperti dia | mond di langit.
Twin | kle, twin | kle, lit | tle star,
Bagaimana saya memenangkan apa pun Anda.
Rekaman musik dapat ditemukan di sini .
Contoh
Komputer mendengar C tengah dan mencetak "Kembar"
Ia mendengar C tengah lainnya dan mencetak "kle,"
Kemudian ia mendengar C tengah lainnya (not yang salah) dan tidak melakukan apa pun.
Kemudian ia mendengar G di atas C tengah dan mencetak "kembar" dan seterusnya.
Aturan
- Tanda baca harus seperti yang ditunjukkan.
- Spasi harus seperti yang ditunjukkan (dengan spasi dan baris baru).
- Spasi putih dapat dicetak bersama dengan suku kata sebelumnya atau berikutnya.
Jawaban:
Python 3 - Solusi sebagian (
760742734710705657 karakter)(Edit terakhir; saya janji)
Ini sepertinya masalah yang sangat, sangat, sangat sulit (terutama mengenali di mana catatan mulai atau berakhir). Transkripsi otomatis musik sepertinya adalah topik penelitian terbuka (bukannya saya tidak tahu apa-apa tentang itu). Jadi inilah solusi parsial yang tidak melakukan segmentasi note (misalnya mencetak "Twinkle" sekaligus ketika mendengar frekuensinya) dan mungkin hanya berfungsi untuk file ogg tertentu:
Ini membutuhkan ...
Ubah A = -52 (amplitudo minimum) di baris paling atas tergantung pada mikrofon Anda, jumlah suara sekitar, seberapa keras lagu diputar, dll. Di mikrofon saya, kurang dari -57 tampaknya mengambil banyak suara asing dan lebih dari -49 mengharuskan Anda memainkannya dengan sangat keras.
Ini bisa menjadi golf lebih BANYAK; Saya yakin ada cara untuk menyimpan banyak karakter pada susunan kata pada khususnya. Ini adalah program non-sepele pertama saya di python, jadi saya belum terlalu akrab dengan bahasa tersebut.
Saya mencuri kode untuk deteksi frekuensi melalui autocorrelation dari https://gist.github.com/endolith/255291
Tidak Disatukan:
sumber