1 poin oleh GN⁺ 2024-01-29 | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 2024-01-29
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 kedua halaman itu, di lingkungan saya, pesan “click to start” tidak terlihat, tetapi sepertinya memang sebaiknya ditampilkan
      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
    • Ini mainan kecil yang benar-benar keren. Selain itu, saya penasaran apakah 303 sulit dipelajari dan dipakai meski sama sekali tidak punya pengalaman synthesizer
    • Saya suka tombol ganti kunci. Agar bisa menjadi alat DJ yang benar-benar hebat, rasanya perlu bisa kembali ke pola sebelumnya secara acak, bukan hanya maju terus. Apakah ada tombol atau opsi yang tidak saya temukan?
  • 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

    • Saya rasa Anda benar-benar menangkap dengan baik apa yang ingin saya lakukan lewat partitur, dan saya senang maksudnya tersampaikan
      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
    • Salah satu seniman visual prosedural favorit saya juga menyisakan ambiguitas serupa dalam spesifikasinya, sehingga setiap kali karyanya dibuat ulang muncul variasi yang bagus: https://www.sfmoma.org/artist/sol_lewitt/
      https://massmoca.org/event/walldrawing305/
    • “Semua inversi” biasanya saya pahami sebagai menaruh akor pada posisi root, lalu mengambil inversi semacam permutasi siklis dengan mengabaikan oktaf
      Jadi voicing yang lebih terbuka dan jarang kemungkinan besar banyak yang tidak masuk
    • Akor C mayor dasarnya adalah c4 f4 g4, dan inversi berarti memindahkan nada terbawah ke atas sehingga menjadi f4 g4 c5 atau g4 c5 f5
      Inversi cukup banyak mengubah rasa sebuah akor
    • Kalau didengarkan, sepertinya tidak ada akor terbuka, dan yang dipakai hanya akor dengan nada-nada yang langsung berurutan tanpa celah
  • 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

    • Untuk benar-benar memahaminya, perlu belajar dari berbagai sudut. Bisa dicapai dalam rentang 1–10 tahun lewat Hooktheory.com, buku, dan banyak video YouTube
      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
    • Kursus online Yale Listening to Music cukup banyak membahas teori musik. Saya menikmatinya, cukup menarik: https://online.yale.edu/courses/listening-music
    • Sangat sulit untuk mulai masuk. Menurut saya paling mirip dengan matematika
      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
    • Bukan buku pengantar teori yang tipikal, tetapi buku psikologi populer Daniel J. Levitin This Is Your Brain On Music memuat hal-hal yang mirip dengan yang ditanyakan
      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
    • Jika tidak memainkan alat musik, rasanya mirip seperti mencoba menjelaskan Tetris kepada orang tunanetra
  • 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

    • Saya juga berpikir begitu, tetapi yang terpikir oleh saya justru Arduino, bukan Raspberry Pi
      Jika yang dilakukan Pi hanyalah “memilih nada dan mensintesis buffer audio itu sendiri”, bukankah Arduino Uno pasti juga bisa melakukannya?
    • Sepertinya mungkin, tetapi karena kode LED dirancang untuk Arduino, dari sudut pandang penggunaan ulang kode atau pembuatan prototipe, memakai dua perangkat pada pembuatan awal kemungkinan lebih sederhana
  • 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 sekarang perlu dibuat versi online. Dengan Web Audio dan CSS transform, rasanya ini cukup bisa dilakukan
  • 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

    • Kalau bisa dibuat dan dialami langsung, ini akan menjadi instalasi seni yang menarik :)