Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

CodeSounding: muzički zvuci proizvedeni na kompjuteru iz strukture izvornog koda


CodeSounding je open source okvir sonifikacije koji omogućuje da čujemo kako bilo koji postojeći Java program “zvuči”, dodjeljujući instrumente i pičeve kodnim izjavama (if, for, itd.) i svirajući ih dok se izvršavaju u dužini trajanja. Na taj način, tok izvršenja se izvodi kao tok muzike a njen ritam se menja u zavisnosti od interakcije korisnika.
Glavni izazovi su: 1) održavanje sinhronizacije u realnom vremenu između instrukcija koje su izvršene i zvukova koji su odsvirani, 2) kako "sabiti" CPU brzinu u smisleni ritam, tj. kako doći od, otprilike, 2GHz do 44 kHz.
Predlažemo različite pristupe, s povećanjem stepena sinhronizaciju u realnom vremenu/ "vernost koda":
  • svaka instrukcija može dodati jednu notu u ABC datoteku, a zatim se ona pretvara u MIDI i svira u odvojenoj niti. U ovom pristupu tipično biramo jednu notu na svakoj hiljaditoj instrukciji a ipak nam on omogućava interesantna polifona dela.
  • Možemo svirati MIDI note direktno, preko jMusic . Probali smo neku vrstu modulacije dinamičkog piča, u zavisnosti od logaritma instrukcija koje su pokrenute i od toga kako brzo menjaju nagib. To zvuči "mračno" i ima lošu sinhronizaciju u realnom vremenu: vidi uživo.
  • svaki pristup zasnovan na MIDI ne dopušta mešanje stvarnog zvuka: moguće je svirati dva instrumenta istovremeno, ali ne možete menjati boju zvuka na realnom vremenu (osim upotrebom pič bend poruka iako to utiče samo na frekvenciju). Iz tog razloga, drugačiji pristup bi bio da se piše direktno u audio buffer - u našem slučaju, mi pišemo u JACK buffer. Ovo omogućava finiju kontrolu talasa i dobru sinhronizaciju kodova ali zahteva pisanje uobičajenog algoritma sinteze ručno.
  • i konačno, kako bi se omogućila veća kontrola sinteze zvuka realnog vremena mi koristimo neka rešenja zasnovana na generatoru jedinice :
      • Sa JSyn ljudi orijentisani ka programiranju mogu pokrenuti sinusoide, filtere, itd. bez napuštanja Java okruženja. Imajte na umu da JSyn nije open source softver.
      • Muzičari i GUI-orijentisani ljudi mogu koristiti ili Max / MSP (komercijalni) ili Pure Data (open source) kako bi napravili vizualne patch-eve i iskorišćavali postojeće objekte. Interakcije sa CodeSounding su zasnovane na UDP paketima, poslatih različitim portovima, tako da sonifikacija može da živi na drugačijoj mašini. U svakom slučaju ostaje na odvojenom procesu.
Takođe je moguće programski proširiti okvir na bilo kom nivou, na primer podelom klase codesounding.SilentProcessor na pod-klase.
Source code Musical score

Video primeri
  • CodeSounding može pokrenuti Max / MSP patch, preko UDP-a; ovde sonifikujem sledeće algoritme (sa http://www.algolist.net/Algorithms/):
      • Bubble vrsta
      • Izbor vrsta
      • Insertion sorta
      • Quicksort


  • Pokušaj CodeSounding-a sa JSyn: svaka hiljadita Java instrukcija aktivira upakovanu oscilaciju (od 50 ms), s tima da svaka instrukcija ima drugačiju frekvenciju. One se na kraju dodaju i odbijaju (odjekuju). Regulatori jačine vam omogućavaju da promenite frekvencije oscilatora, koliko instrukcija se preskače kao i omotač grains-a. Dalje, preskočene instrukcije postepeno povećavaju ili smanjuju amplitudu svakog oscilatora.


  • CodeSounding podaci se mogu se izvući JACK audio serverom:



    Što se događa? Nije pronađen ni jedan unos




Published (Last edited): 10-10-2012 , source: http://www.codesounding.org/indexeng.html