Sambutan

Rabu, 25 Maret 2026

Kelanjutan Sarabande

Sarabande adalah salah satu proyek paling niat yang pernah saya kerjakan, karena kurang lebih setahun sudah saya kembangkan, walaupun cuman sampai versi ke 2. Nah setelah versi itu, Apakah akan ada update lagi? Jawaban singkatnya ngak ada (Tapi...). Jadi, setelah kurang lebih 2 tahun proyek ini ditinggalkan, saya merencanakan untuk menulis ulang Sarabande. Beberapa masalah dari versi sekarang dan jawaban untuk versi barunya yakni:

  • Saat pertama kali proyek ini dibuat, saat itu saya masih belajar menggunakan SFML dan C++. Kode yang saya tulis cukup berantakan saat itu (versi C++). Karena itu kadang saya juga malas untuk ngedebug-nya kalau ada error.

    Versi rewrite ini akan saya tulis lebih terstruktur, Jadi ngak ada lagi fungsi main yang sampai 1000 baris. Dan rencananya Sarabande ini akan jadi library. Jadi kalau mau buat Game yang bisa mainin SMML tinggal tambahin aja library-nya. Lalu di versi yang baru ini, library yang digunakan adalah SFML 3, daripada versi sebelumnya yang masih pakai SFML 2.

  • Saya rasa sistem interpreter ini cukup buang2 memori. Alasannya karena saat musik di load, program Sarabande langsung memuat semua isi dalam filenya ke dalam String dan langsung dimainkan disaat bersamaan. Hal ini membuat program jadi lemot ketika musiknya panjang, karena semua isi filenya, yang berjenis String, yang makan banyak memori (karena per perintah bisa sekitar 4-9 huruf, dikalikan dengan panjangnya lagu) langsung diinterpretasi dan dimainkan.

    Solusinya yakni dengan meng-compile file sebelum dimainkan. Caranya ketika dikompilasikan, string perintah akan diubah menjadi perintah biner, yang mungkin per-perintah hanya menghabiskan 1 sampai 4 byte, sudah termasuk parameternya, dibandingkan perintah string yang lebih besar per perintah (Lihat cantuman di bawah).

  • Untuk masalah dokumentasi, saya akan buat halaman blog baru. Karena di halaman sebelumnya cukup terobrak-abrik. Ya intinya benar2 saya tulis ulang, jadi jangan nanggung2 ya kan?

  • Versi Mod Minetest (Luanti) jadi gimana? Nah kalau itu nanti dulu, karena saya masih fokus mikirin versi C++. Kalau secara teknis, di Lua sistem compiler-interpreter seperti ini seharusnya bisa diimplementasikan.

  • Terakhir, yakni kapan? Kalau tepatnya belum tahu (karena orang ini (sok) sibuk wkwkwk). Paling lambat tahun ini, sebelum Desember. Karena tahun depan saya mulai sibuk dengan ujian kelulusan (wismilak ya).

Cantuman

* Compiling Process
  ___________________        _____________        ______________
 |                   |      |             |      |              \
 |  Human  Readable  | ---> |  Sarabande  | ---> |    Binary     \
 |     SRBD File     |      |  Compiler   |      |  SRBB  File   /
 |___________________|      |_____________|      |______________/

  Container for              SMML syntax          Container
  Sarabande Markup           compiled into        for the compiled
  Language (SMML).           a smaller binary     binary SMML.
                             file.
     ___________________________________________________________
    |                                                           |
    |                     Compilation Mode ?                    |
    |______. .___________________. .___________________. .______|
     ______| |______       ______| |______       ______| |______
    |               |     |       ?       |     |       ?       |
    |     Full      |     |    Partial    |     |     Normal    |
    | Pre-interpret |     | Pre-interpret |     |               |
    |_______________|     |_______________|     |_______________|

     Fully preinterpret    Partially preinter-   Preserve all of
     equations, variables  pret equations.       the equations in
     into a compact number.                      a methological form.

     Space usage: Small    Space usage: Medium   Space Usage: Various
                                                 (mostly large)

     Example:              Example:              Example:
     note c4 4 1           setvar l 4            setvar l 8 / 2
                           note c4 gv l 1        note c4 gv l 1

* Interpreting Process
  _______________        _______________        ____________________
  \              |      |               |      |                    |
   \   Binary    | ---> |   Sarabande   | ---> |  Human Hear-able   |
   / SRBB  File  |      |  Interpreter  |      |  Musical Sequence  |
  /______________|      |_______________|      |____________________|

   Container             Binary SMML syntax     Hear-able musical
   for the compiled      Interpreted into       sequence.
   binary SMML.          audio signal
                         sequence.

 SRBD: SMML Container (*.srbd)
 SRBB: Binary SMML Container (*.srbb)

The compiling and interpreting process can be done in sequence or individually.
For example, both process can be done in sequence to play a musical sequence
directly from the human readable SRBD file. Or perhaps just do the compiling
process to produce a SRBB file that can be transported easily, and can be played
later using the Interpreter. The compiling process removes all unnecessary data
such as comments and variable names. For variable names, they are replaced by
index number, more like a pointer.

Tidak ada komentar:

Posting Komentar