- Sebagai partitur seni instalasi tempat kode memimpin pemilihan akor, sintesis nada, dan respons LED secara bersamaan, objek berbentuk seperti batang tanaman berulang kali menghasilkan suara dan cahaya
- Bagian A membuat akor dan inversi Major, Minor, Major 7th, Minor 7th dari A2 hingga D5, lalu setiap 8 detik berpindah ke akor lain yang hanya berbeda satu nada
- Bagian B memilih satu nada dari akor saat ini dan memainkannya dengan bentuk gelombang dan durasi acak, menambahkan nada tunggal yang sulit diprediksi di atas progresi akor yang teratur
- Setiap kali akor atau nada baru muncul, LED berbentuk batang bereaksi, dan warna tiap nada dipetakan agar nada-nada yang berdekatan dalam circle of fifths tampak mirip
- Implementasinya dibagi antara program audio C++ di Raspberry Pi 3 B+ dan kontrol LED FastLED di Arduino Uno; kedua perangkat bertukar informasi nada melalui port serial
Partitur yang disusun dari aturan generatif
- Bagian A mencantumkan semua akor dan inversi Major, Minor, Major 7th, Minor 7th yang mungkin dari A2 hingga D5
- Akor yang dipilih diputar selama 8 detik, lalu berpindah ke salah satu akor yang hanya berbeda satu nada dari akor saat ini
- Proses ini terus berlanjut dengan mengulang pemutaran 8 detik dan pemilihan akor yang berdekatan
Aturan pembangkitan nada
- Bagian B memilih satu nada dari akor yang sedang diputar
- Nada yang dipilih dimainkan dengan bentuk gelombang acak selama durasi acak
- Jika durasinya pendek, nada diulang sebanyak jumlah acak, lalu setelah menunggu selama waktu acak, proses yang sama diulang
Aturan respons pencahayaan
- Bagian C menyalakan tiap batang dari akar hingga ujung setiap kali akor baru dipicu di Bagian A
- Warna cahaya sesuai dengan tiap nada dalam akor, dan nada-nada yang berdekatan dalam circle of fifths memiliki rona yang mirip
- Bagian D menerangi ujung salah satu batang dengan warna terang yang sesuai dengan nada tersebut setiap kali nada dimainkan di Bagian B
Implementasi perangkat keras dan perangkat lunak
- Bagian A dan B ditangani oleh program C++ kustom yang berjalan di Raspberry Pi 3 B+
- Program ini menangani pemilihan nada sekaligus sintesis buffer audio
- Bagian C dan D diimplementasikan dengan program kustom pada papan Arduino Uno
- Menggunakan FastLED untuk berinteraksi dengan strip LED protokol WS2812B
- Informasi nada yang dikirim dari Raspberry Pi ke Arduino datang dan pergi melalui sinyal port serial
Struktur fisik dan cara kerja
- Strip LED melewati bagian dalam tabung transparan yang biasa digunakan untuk akuarium rumah
- Tabung diperkuat dengan kawat nikel tebal sehingga dapat dibentuk menjadi struktur artistik
- Housing kayu di bawah pot berisi mikrokomputer, kabel, dan soket audio 3,5mm untuk koneksi ke sistem suara
- Daya masuk melalui dua koneksi listrik utama
- Komputer-komputer berjalan secara headless, dan mulai otomatis saat diberi daya
1 komentar
Opini Hacker News
Orang ini juga pembuat endless acid banger keren yang bisa dimainkan berjam-jam di browser
https://www.vitling.xyz/toys/acid-banger/
Setelah mencobanya, saya sampai membeli klon 303 sungguhan dan mulai mengutak-atiknya. Saya juga suka karena semua demonya dibuka dengan layar “click to start” tanpa suara, dan video autoplay pun secara default dibisukan seperti di tulisan ini
Di tulisan ini, kontrol volume baru terlihat saat kursor diarahkan ke “silent gif”, dan di acid banger saya sudah menulis setengah komentar sebelum akhirnya tahu bahwa mengklik di mana saja akan mematikan mode mute
Menarik melihat partitur musik generatif ditulis dalam bentuk spesifikasi seperti itu
Spesifikasinya cukup rinci sehingga kalau seseorang mengimplementasikan ulang versinya sendiri berdasarkan instruksi itu, pada dasarnya akan lahir “karya musik” yang sama, tetapi interpretasinya jelas akan berbeda. Sebab partitur menetapkan sebagian hal dengan tepat, tetapi membiarkan pilihan lain tetap terbuka. Masih ada pertanyaan seperti apa tepatnya arti “semua inversi” saat mendaftar akor, apakah voicing terbuka juga termasuk, dari nilai apa saja panjang gelombang arbitrer dipilih, seberapa pendek yang dimaksud “pendek” saat menentukan pengulangan, synthesizer gelombang seperti apa yang dipakai dan bagaimana memodulasinya
Keputusan-keputusan seperti ini mirip dengan pilihan yang dibuat pemain instrumen tradisional saat menafsirkan dan memainkan partitur. Di sini, coder musik generatif bisa mengikuti “partitur” ini dan membuat program yang memuat interpretasinya sendiri
Mencoba mengimplementasikannya dengan Sonic Pi(https://sonic-pi.net/) adalah latihan yang menyenangkan, dan saya merasa bisa membuat sesuatu yang dekat dengan arah yang dimaksud sang komposer. Nuansanya sama dengan rekaman dalam video, tetapi kalau boleh dibilang, itu adalah “pertunjukan” saya atas karya tersebut. Meski dalam eksekusi sebenarnya yang memainkannya adalah Sonic Pi
Proses ini juga membuat saya memikirkan kembali hubungan antara spesifikasi dan implementasi. Implementasi algoritma oleh programmer yang berbeda bisa dilihat sebagai “pertunjukan” individual atas partitur berupa rancangan keseluruhan, dan developer yang membuat elemen arsitektur sistem yang lebih besar juga bisa tampak seperti pemain yang mengambil bagiannya dalam band atau orkestra. Ada tim yang dipimpin konduktor sekaligus arsitek, ada tim yang saling melempar riff dan berimprovisasi lalu sesekali mengambil solo. Ada juga tim yang seperti musisi sesi: tidak mencolok, tetapi bermain solid sesuai spesifikasi produser
Itu latihan coding meditatif yang bagus untuk dilakukan pada Minggu siang, dan mengubah cara pandang saya
Dulu saat ingin memamerkan karya lama, saya mendapat masukan dari seorang kurator seni, dan karya itu adalah https://www.vitling.xyz/welcome-to-tech-talk/. Awalnya ia tidak terlalu memahami apa yang sedang terjadi, tetapi setelah saya menjelaskan cara kerjanya dan apa yang terjadi di dalamnya, ia berkata, “Sekarang saya benar-benar suka. Tapi Anda menyembunyikan semua bagian yang menarik dari audiens”
Dalam seni generatif, “pekerjaan” yang saya lakukan lebih dekat ke kumpulan aturan atau algoritma, bukan audio atau visual yang menjadi hasil akhirnya. Karena itu saya selalu ingin mencari cara untuk menunjukkan apa yang terjadi “di dalam kotak”. Kode sumber bisa bagus, tetapi hanya bagi orang yang bisa membacanya, dan ide intinya mudah terkubur di antara boilerplate dan keanehan teknis. Dari situ saya sampai pada gagasan untuk menuliskannya dalam bentuk partitur: menunjukkan premis dasar tentang apa yang terjadi, tetapi tidak sampai membuat orang tersesat dalam detail
https://massmoca.org/event/walldrawing305/
Jadi voicing yang lebih terbuka dan jarang kemungkinan besar banyak yang tidak masuk
Inversi cukup banyak mengubah rasa sebuah akor
Saya ingin mendapat rekomendasi buku atau kursus teori musik yang bisa membantu memahami algoritme ini atau https://www.vitling.xyz/toys/acid-banger/
Ada aturan-aturan yang cukup sederhana untuk memprediksi agar sesuatu terdengar lumayan bagus, ada juga aturan yang lebih kompleks, dan musik Barok terkenal bersifat algoritmik, tetapi saya masih sama sekali belum punya gambaran
Dulu saya pernah mencari ke arah ini, tetapi saya tidak begitu ingat persis apa masalahnya dengan buku-buku yang saya lihat. Mungkin kebanyakan terlalu mendasar sehingga tidak membantu. Lama sekali dulu saya pernah mendapat latihan solfège yang sangat dasar dan bisa membaca notasi musik, tetapi saat itu saya terlalu muda untuk mengajukan pertanyaan yang kini membuat saya penasaran atau memahami tujuan latihan tersebut
Pada akhirnya, kalau tidak menulis banyak musik sendiri, sulit memahami teori musik. Mirip seperti membaca buku JavaScript: jika Anda belum pernah menulis perangkat lunak sama sekali dan tidak berencana menulisnya ke depan, tidak ada cara untuk benar-benar memahami buku itu
Jika menjelaskan bagaimana aplikasi ini bekerja, mungkin ia memilih secara acak sebagian nada dalam tangga nada minor, yaitu derajat tangga nada. Tangga nada pentatonik, yaitu subset berisi lima nada atau kurang dari sebuah tangga nada, membatasi ruang melodi yang mungkin sehingga sebagian besar susunan terdengar bagus. Jika memakai lebih sedikit nada, hasilnya lebih mudah diprediksi terdengar enak, tetapi bisa kurang menarik. Misalnya, nada-nada pembentuk akor dasar akan selalu terdengar bagus dimainkan dalam urutan apa pun. Line acid biasanya menyiratkan suatu akor minor melalui arpeggio, yaitu melodi berulang yang hanya terdiri dari nada-nada akor tertentu
Selain itu, subset dari satu tangga nada selalu bisa masuk ke tangga nada lain. Dengan membuat bagian yang memakai subset nada yang sama lalu berpindah ke tangga nada baru, Anda bisa modulasi dari satu tangga nada ke tangga nada lain. Dengan cara ini, sebuah lagu bisa melewati semua tangga nada yang mungkin, dan dalam acid techno hampir semuanya adalah tangga nada minor
Anda tidak bisa begitu saja mengambil sesuatu yang ditulis untuk orang dengan tingkat pemahaman lebih tinggi daripada Anda saat ini dan berharap mendapat banyak manfaat. Anda harus membaca setiap halaman perlahan, dengan sengaja dan rendah hati, sambil meluangkan waktu untuk benar-benar memahami setiap istilah yang ditemui. Dalam prosesnya Anda akan menyimpang berjam-jam, dan di dalamnya istilah-istilah lain bercabang tanpa akhir. Anda tidak bisa melewati istilah seperti interval, locrian/lydian, lalu berharap memahaminya lewat osmosis
Buku itu membahas apa itu tinggi nada, mengapa otak “menyukai” kombinasi tinggi nada tertentu dan tidak menyukai yang lain, dan seterusnya. Berbagai teori tentang neurologi musik di dalamnya juga menarik dengan sendirinya, dan di bagian awal ada pengantar teori yang sangat dasar
Sebagai tip untuk penulis, kompleksitas hardware dan software bisa sangat dikurangi dengan menghilangkan Arduino dan memakai library ini untuk mengendalikan strip WS281x langsung dari Raspberry Pi: https://github.com/jgarff/rpi_ws281x
Saya memakai ini di Pi 4 untuk mengendalikan strip WS2815 466 piksel yang dipasang di lis atap rumah sebagai dekorasi hari raya
Ada teori musik yang menarik tersembunyi di dalam proyek ini. Dengan algoritme yang dijelaskan, semua transisi dari satu akor ke akor lain adalah transisi ke akor yang sama, misalnya dari C mayor ke inversinya atau menambah/menghapus nada ketujuh, atau salah satu dari tiga transformasi dasar dalam teori Neo-Riemannian: P, L, R
Untuk detailnya, lihat halaman Wikipedia tentang Neo-Riemannian theory, dan inti tentang P, L, R adalah seperti ini. Jika akor sembarang x adalah mayor, maka P(x), L(x), R(x) semuanya menjadi minor. Jika x adalah minor, maka P(x), L(x), R(x) semuanya menjadi mayor. P, L, R semuanya merupakan invers dari dirinya sendiri, sehingga P(P(x)) = x, dan begitu pula L dan R. Melalui urutan transformasi P, L, R apa pun, kita bisa pergi dari akor mayor atau minor mana pun ke akor mayor atau minor lain mana pun. Misalnya, dari C mayor, menerapkan L lalu R menghasilkan G mayor; menerapkan R lalu P menghasilkan A mayor; dan menerapkan L lalu P menghasilkan E mayor
Bergerak dengan transformasi Neo-Riemannian adalah cara untuk cepat menuju pusat tonal yang “jauh”, yaitu tempat yang tidak memiliki banyak nada tangga nada bersama dengan tonalitas awal, lewat voice leading yang mulus. Namun ketika mendengar lagu ini, saya terkejut karena harmoninya terasa relatif stabil. Hal yang menarik adalah, karena rancangan algoritmenya, transformasi P muncul jauh lebih jarang daripada transformasi L atau R, atau kasus tetap berada pada akor yang sama. Transformasi P adalah bahan kunci untuk bergerak cepat ke tonalitas jauh, tetapi menurut perhitungan kasar saya, dengan asumsi proses Markov telah mencapai keadaan tunak dan mengabaikan batas tinggi nada terendah/tertinggi, hanya 1/27 dari semua perubahan akor yang merupakan transformasi P. Dalam keadaan tunak juga terlihat bahwa akor ketujuh lebih umum daripada triad sederhana dengan rasio 16:11
Saya penasaran dengan detail teknis karena ingin tahu lebih jauh batasan Raspberry Pi
Tidakkah semua ini bisa ditangani hanya dengan satu Raspberry Pi dan banyak pin GPIO yang terpasang padanya? Saat ini Raspberry Pi terasa kurang dimanfaatkan, dan sepertinya lebih baik disederhanakan menjadi satu papan saja. Ada hasil bagus juga: hanya perlu satu sambungan daya
Jika yang dilakukan Pi hanyalah “memilih nada dan mensintesis buffer audio itu sendiri”, bukankah Arduino Uno pasti juga bisa melakukannya?
Saya suka karena ditulis dalam pseudocode agar bisa dipahami semua orang
Saya juga pernah mengerjakan proyek seperti ini, khususnya bagian pembuatan musik, jadi saya sangat menyukai cara penyajian seperti ini. Akan lebih bagus lagi kalau ada demo video; banyak proyek kode hanya dijelaskan oleh penulisnya lewat dinding teks panjang, sehingga sudah terasa mati sebelum sempat mulai
Benar-benar keren. Akan bagus kalau ada panduan pembuatan yang terperinci untuk membuat hal seperti ini
Sepertinya cocok dipakai sebagai intro untuk set Four Tet :)
Indah. Ini membuat saya membayangkan planet alien yang tanamannya seperti ini
Hal-hal seperti ini bisa membentuk hutan, dan mungkin saling selaras seperti metronom atau kunang-kunang yang tersinkronisasi