Halo, Habr! Dalam artikel terakhir,
"pola tak terbatas berdasarkan bilangan prima," saya berbicara tentang algoritma yang memungkinkan Anda untuk menghasilkan pola-pola indah tak berujung yang baik gambar alien, atau sesuatu yang teknologi, seperti perangkat chip. Namun, algoritma untuk menghasilkan pola 2D juga dapat digunakan untuk membuat melodi. Lebih detail di bawah potongan.
Algoritma generasi melodi
Untuk membuat melodi, saya membuat generator berliku sederhana dengan sinyal memudar. Dalam hal ini, Anda dapat tumpang tindih beberapa generator berliku di atas satu sama lain. Selanjutnya, kami mengatur periode generator berliku sesuai dengan frekuensi catatan, dan kami mengatur amplitudo generator tergantung pada keberadaan tombol "dijepit". Sebagai sinyal untuk penekanan tombol, saya menggunakan nilai piksel dari gambar 2D yang diambil dari kolom vertikal yang dapat dipindahkan di sekitar gambar. Kolom berisi 14 piksel, yang sesuai dengan 7 catatan oktaf ke-2 dan ke-3. Kunci hanya memiliki dua status - ditekan atau tidak.
Generator berliku-liku dan fungsi untuk menyimpan hasil dalam file WAV yang saya terapkan sebagai perpustakaan terpisah untuk bekerja dengan suara. Dia
disini .
Program untuk menghasilkan musik dapat dilihat di
sini . Ini disebut simple_sound. Ready exe dapat ditemukan di arsip. Pada output, program membuat file WAV "contoh".
Contoh melodi
Salah satu lagu yang paling menarik,
example_dx1000_dy1000_x2018_y8 . Nama melodi menunjukkan ukuran pergeseran dalam koordinat X dan Y, serta koordinat awal. Melodi lainnya:
example_dx_dy_x5678_y7768example_dx_dy_y776897123example_y47contohSecara teori, Anda dapat memperbaiki algoritme dan menggunakannya untuk gim primitif, sehingga melodi dalam gim tidak pernah terulang.