Ini adalah perintah gramophone2 yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS
PROGRAM:
NAMA
gramophone2 - GRAMophone adalah generator algoritmik komposisi musik.
SINOPSIS
gramofon2 [-c|-d] file sumber [midifile]
PILIHAN
-c adalah opsi yang memungkinkan Anda untuk mengontrol sintaks sumber tanpa menghasilkan
musik.
-d adalah opsi yang memungkinkan Anda mengaktifkan mode debug, dengan output video dari
komposisi dan parameter pemain ditambah catatan yang dihasilkan.
DESKRIPSI
Di GRAMophone, musik dihasilkan menggunakan dua jenis tata bahasa formal: reguler Chomsky
tata bahasa (atau Tipe 3) untuk pendekatan TOP DOWN pada komposisi dan versi yang diperkecil dari
Tata bahasa Lindenmayer untuk pendekatan BOTTOM UP.
BASIC KONSEP OF Gramopon
GRAMophone sebagian didasarkan pada ide Jon McCormack, yang menemukan ide a
pemain virtual (musisi virtual). Pemain yang dimaksud terkait dengan trek MIDI,
dan menafsirkan instruksi mengatakan apa yang harus dilakukan. Umumnya, mereka mengatakan play note (send
pesan MIDI). Pemain GRAMophone bersama-sama membentuk orkestra, yang memainkan
komposisi.
Sejumlah pemain dapat memainkan komposisi, tetapi dalam praktiknya perangkat keras yang digunakan mungkin
memberlakukan batas atas.
Secara umum setiap pemain memainkan instrumen dan masing-masing memiliki seperangkat aturan tata bahasa yang berbeda.
Seorang pemain individu dicirikan oleh seperangkat parameter yang dimiliki oleh keseluruhan
orkestra dan/atau set parameter pribadi.
Parameter orkestra terdiri dari:
jenis tata bahasa yang digunakan (Chomsky atau Lindenmayer);
metronom;
ukurannya;
jumlah iterasi yang digunakan dalam proses produksi.
Parameter setiap individu pemain terdiri dari:
jenis tata bahasa yang digunakan (Chomsky atau Lindenmayer);
instrumen;
saluran MIDI yang terkait dengan pemutar;
jumlah iterasi yang digunakan dalam proses produksi;
Catatan pemain memiliki status saat ini yang terdiri dari:
oktaf
volume
lamanya
melepaskan
Karakteristik ini dapat dikontrol secara parametrik oleh pemain yang menyatakan
variabel terkait. GRAMophone, kemudian, memungkinkan untuk generasi non-deterministik dari
musik, baik menggunakan tata bahasa Chomsky atau Lindenmayer.
GUIDE UNTUK Gramopon
"Give Me A" ("Halo, Dunia!" untuk GRAMophone")
Untuk memperkenalkan Anda pada ide-ide dasar, berikut adalah komposisi algoritmik paling sederhana yang dapat
dihasilkan dengan GRAMophone: komposisi ini hanya menghasilkan nada A dan adalah
disajikan melalui metode Chomsky dan Lindenmayer.
komposisi "Give Me A" dari "Schroeder" {
//komposisi ini menghasilkan nada A dengan tata bahasa Chomsky
tata bahasa chomsky
waktu 120
tanda_waktu 4/4
%
pemain Schroeder {
instrumen 0
%
@komposisi->A[,,,];
}
}
komposisi "Give Me A" dari "Schroeder" {
//komposisi ini menghasilkan catatan A dengan tata bahasa Lindenmayer
tata bahasa lindenmayer
waktu 120
tanda_waktu 4/4
%
pemain Schroeder {
instrumen 0
%
aksioma->A[,,,];
}
}
Komposisi KATA KUNCI E dari
Semua komposisi harus dimulai dengan komposisi kata kunci diikuti dengan string (dibalikkan)
koma) yang berisi nama komposisi. Ini harus diikuti oleh kata kunci dari
kemudian string lain yang berisi hak cipta dari karya tersebut.
KOMPOSISI BLOK
Blok komposisi ditempatkan dalam tanda kurung. Itu dibagi menjadi tiga bagian: satu
bagian mendefinisikan parameter komposisi, satu menyatakan dan memulai setiap global
variabel dan bagian orkestra di mana para pemain yang akan 'memainkan' karya tersebut
didefinisikan. Dua bagian pertama dipisahkan oleh simbol %.
KATA KUNCI pemain
Setiap pemain didefinisikan dengan kata kunci pemain, diikuti dengan pengenal.
BLOK pemain
Blok pemain ditempatkan dalam tanda kurung dan dibagi menjadi tiga bagian: satu bagian
mendefinisikan parameter trek yang terkait dengan pemutar, seseorang menyatakan lokal apa pun
variabel untuk pemain dan satu untuk aturan formal. Dua bagian pertama adalah
dipisahkan oleh simbol %.
KOMENTAR
Di GRAMophone, komentar seperti C: harus dimulai dengan pasangan karakter '/*' dan diakhiri
dengan pasangan karakter '*/.' Tidak boleh ada spasi antara tanda bintang dan garis miring.
Segala sesuatu di antara pasangan simbol ini akan diabaikan oleh pengurai GRAMophone. Utuh
baris komentar juga dapat disertakan. Baris komentar dimulai dengan simbol // dan diakhiri
di akhir baris, seperti dalam dua contoh awal.
Bagian yang menentukan parameter komposisi
Parameter yang dibagikan oleh semua pemain orkestra dinyatakan di sini. Parameternya
yang dapat dideklarasikan adalah:
tatabahasa
resolusi
iterasi
waktu
waktu_tanda tangan
Bagian ini harus diakhiri dengan simbol %.
tatabahasa
Parameter ini wajib dan menentukan jenis tata bahasa yang akan digunakan dalam pembuatan.
Ini bisa berupa chomsky atau lindenmayer.
resolusi
Parameter ini menentukan jumlah unit waktu 1/4 durasi. Jika dihilangkan, default
nilai 480 akan digunakan.
iterasi
Parameter ini mendefinisikan jumlah iterasi yang terkandung dalam generasi. Artinya
tergantung pada jenis tata bahasa yang dipilih, seperti yang dijelaskan di bawah ini. Jika dihilangkan, nilai default 1
akan digunakan.
waktu
Parameter ini menentukan ritme komposisi. Jika dihilangkan, nilai default 120 akan menjadi
bekas.
waktu_tanda tangan
Parameter ini menentukan ukuran komposisi. Jika dihilangkan, nilai default 4/4 akan
digunakan.
Bagian yang mendeklarasikan variabel global komposisi
Variabel mengontrol parameter atribut catatan, seperti yang dijelaskan di bawah ini.
Bagian yang menentukan parameter pemain
Parameter dan variabel pribadi setiap pemain dideklarasikan di sini. Parameter pribadi
yang dapat dideklarasikan adalah:
instrumen
saluran
iterasi
Bagian ini harus diakhiri dengan simbol %.
instrumen
Parameter ini menunjukkan jenis instrumen pemain. Perangkat instrumen GRAMophone adalah
sama dengan MIDI Umum. Rentang nilai yang dapat diterima adalah 0 hingga 127; ada
oleh karena itu 128 instrumen untuk dipilih. Sebuah tabel yang menunjukkan kode instrumen muncul
di bawah ini:
0 pianika
1 Piano Inggris
2 PaluPiano
3 Tonk Madu
4 Tines Baru
5 Piano Digital
6 Harpsichord
7 Klavi
8 Celesta
9 lonceng
10 Kotak Musik
11 Getaran
12 Marimba
13 Gambang
14 Lonceng Tubular
15 Santur
16 Organ Penuh
17 Organ Perkusi
18 Organ BX-3
19 Organ Gereja
20 Positif
21 Haver
22 Harmonika
23 Hapus
24 Gitar Klasik
25 Gitar Akustik
26 Gitar Jazz
27 Gitar Bersih
28 Bisu Gitar
29 Gitar Overdrive
30 Gitar Terdistorsi
31 Harmonik
32 Bass Jazz
33 Bass Dalam
34 Pilih Bass
35 Bass Tanpa Fret
36 Tamparan Bass 1
37 Tamparan Bass 2
38 Bass Sintetis 1
39 Bass Sintetis 2
40 Biola
41 Ungu
42 Selo
43 Kontra Bass
44 Senar Tremolo
45 Pizza
46 Harpa
47 Timpani
48 Marcato
49 Senar Lambat
50 Pad Analog
51 Tali Pad
52 Paduan Suara
53 Suara Doo
54 Voices
55 Orkestra Hit
56 Terompet
57 Trombon
58 Tuban
59 Bisu Terompet
60 Tanduk Prancis
61 Bagian Kuningan
62 Kuningan Sintetis 1
63 Kuningan Sintetis 2
64 Sax sopran
65 Alto Saksofon
66 Tenor Saksofon
67 Saksofon Bariton
68 Oboe Manis
69 Tanduk Inggris
70 Bassoon Oboe
71 Klarinet
72 Pikolo
73 seruling
Perekam 74
75 Pan Seruling
Botol 76
77 Sakhukuhachi
78 Peluit
79 Okarina
80 Persegi Memimpin
81 Melihat Timbal
82 Kaliop Timbal
83 Kepala Chiff
84 Pemimpin Charang
85 Paduan Suara Udara
86 Rezzo4th
87 Bass & Lead
88 Fantasi
89 Bantalan Hangat
90 Bantalan Poly Synth
91 Bantalan Hantu
92 Bantalan Membungkuk
93 Bantalan Logam
94 Papan Halo
95 Sapu Pad
96 Hujan Es
97 Soundtrack
98 Kristal
99 Suasana
100 Kecerahan
101 Goblin
102 Gema Drop
103 Bintang Tema
104 sitar
105 Banjar
106 Syamisen
107 Koto
108 Kalimba
109 Skotlandia
110 Biola
111 Shanai
112 Lonceng Logam
113 lalu
114 Drum Baja
115 Blok Kayu
116 Drum Taiko
117 Melodik Tom
118 Sintesis Tom
119 Simbal Terbalik
120 Fret Kebisingan
121 Kebisingan Chiff
122 Pantai
123 burung
124 Telepon
Helikopter 125
126 Stadion!!
127 Tembakan
Jika dihilangkan, nilai instrumen default 0 digunakan.
saluran
Parameter ini menentukan saluran Midi mana yang akan dikaitkan dengan pemutar. Ada 16
saluran yang mungkin. Saluran 10 dicadangkan untuk instrumen perkusi. Jika dihilangkan,
nilai saluran default 1 digunakan.
iterasi
Parameter ini mendefinisikan jumlah iterasi dalam generasi. Artinya tergantung pada
jenis tata bahasa yang dipilih, seperti yang dijelaskan di bawah ini. Jika parameter iterasi telah
termasuk dalam deklarasi komposisi, deklarasi terakhir akan diabaikan.
Bagian yang mendeklarasikan variabel lokal pemain
Variabel mengontrol parameter atribut catatan, seperti yang dijelaskan di bawah ini.
Catatan di GRAMophone
BAGAIMANA CATATAN DITULIS DI GRAMofon
Catatan adalah kategori pertama dari simbol terminal GRAMophone.
GRAMophone menggunakan notasi bahasa Inggris untuk catatan:
ABCDEFG
Nama nota harus ditulis dengan huruf kapital. Simbol datar dan tajam adalah
masing-masing diwakili oleh 'b' dan '#'; tidak ada spasi yang muncul di antara simbol-simbol ini dan
nama catatan: A#, Gb, dll.
CATATAN ATRIBUT
Catatan dapat memiliki empat atribut di GRAMophone: oktaf, kecepatan, durasi, dan pelepasan. NS
atribut oktaf bervariasi antara -2 dan 8, sedangkan atribut kecepatan dan pelepasan bervariasi
dari 0 hingga 127. Jika catatan ditulis tanpa atribut, maka default berikut:
nilai yang digunakan: 3 untuk oktaf, 64 untuk kecepatan dan pelepasan. Nilai default saat ini untuk
durasi adalah selangkangan. Dalam contoh, "Beri saya A" ditulis hanya sebagai A[,,,]. Ini
berarti A dihasilkan pada oktaf ketiga, dengan durasi 1/4 dan kecepatan
dan rilis 64.
MENDEFINISIKAN ATRIBUT CATATAN
Atribut catatan ditentukan dengan menuliskannya di dalam tanda kurung siku yang
mengikuti nama catatan, tanpa spasi. Sebuah catatan dapat memiliki paling banyak empat atribut dan
setiap tipe atribut mungkin hanya memiliki satu nilai.
Atribut harus didefinisikan dalam urutan berikut:
oktaf
kecepatan
lamanya
melepaskan
Jika ketiga atribut tidak ditentukan, nilai default digunakan untuk atribut yang hilang.
Berikut adalah beberapa contoh catatan dengan atribut:
C[2, 50+60/2, 240*4,] - memainkan C pada oktaf kedua, dengan kecepatan 80,
durasi 960 (minimal dengan resolusi 480) dan rilis 64 (default
nilai);
Db[4,,,] - memainkan D datar pada oktaf keempat, menggunakan nilai default untuk
kecepatan, durasi dan pelepasan;
F#[,,,] - gunakan nilai default untuk semua atribut;
Contoh yang salah adalah:
Db[3, 127, 960, 64, x] - terlalu banyak atribut (x adalah variabel).
JEDA
Jeda adalah kategori lain dari simbol terminal di GRAMophone. Mereka ditunjukkan oleh
huruf R dan hanya mengambil atribut tipe durasi. Jika tidak ditentukan, resolusi default
nilai digunakan. Atribut didefinisikan dengan cara yang sama seperti untuk catatan.
Berikut adalah beberapa contoh jeda:
R[480/2] - jeda dengan durasi 240;
R[] - gunakan nilai default untuk atribut durasi tipe.
ANAK-ANAK
Akor adalah kategori terakhir dari simbol terminal yang digunakan di GRAMophone. Sebuah akord adalah sebuah seri
not yang dimainkan secara bersamaan. Di GRAMophone, not yang dimainkan dalam akord terlampir
antara dua simbol '^'.
Berikut adalah beberapa contoh chord:
^C[,,,]E[,,,]G[,,,]^ - memainkan akord C mayor, menggunakan nilai default setiap not.
^A[2,80,240,]C[2,,240,]E[2,]^ - memainkan akord A minor dengan durasi 240/1, dengan
semua nada pada oktaf kedua dan kecepatan 64 (nilai default), dengan nada pertama
dari akord dimainkan dengan kecepatan 80 dan dua sisanya dengan kecepatan 64
(nilai bawaan).
PERAN R DALAM CHORDS KOMPLEKS
Catatan akord tidak selalu memiliki durasi yang sama. Misalnya mungkin
bahwa, ketika nada C[2,,1920,] berdurasi 4/4 dimainkan, pemusik harus memainkan empat
crotchets dengan urutan sebagai berikut: C[,,,], E[,,,], G[,,,], Bb[,,,]. Pasti ada jalan
memberitahu GRAMophone bahwa nada C[2,,1920,] dan C[,,,] harus dimulai pada waktu yang sama,
bahwa E[,,,] harus dimulai setelah jeda 1/4, G[,,,] setelah 2/4 dan Bb[,,,] setelah 3/4. Di dalam
GRAMophone ini ditulis sebagai berikut:
^C[2,,1920,]C[,,,]R[]E[,,,]R[960]G[,,,]R[1440]Bb[,,,]^
Dengan kata lain, setiap nada dalam akord dapat didahului dengan definisi jeda yang mewakili
waktu untuk menunggu sebelum memainkan not. Tidak masalah urutan mana yang Anda tulis
nada-nada dalam akord. Akord pada contoh di atas juga dapat ditulis:
^R[]E[,,,]C[2,,1920,]R[1440]Bb[,,,]C[,,,]R[960]G[,,,]^
IDENTIFIKASI
Beberapa entitas bahasa, variabel, makro, dan simbol non-terminal GRAMophone di
Tata bahasa Chomsky misalnya, harus memiliki nama yang dengannya mereka dapat diidentifikasi. Nama-nama ini
disebut pengidentifikasi dan dipilih oleh komposer. Pengidentifikasi GRAMophone mengikuti
sistem pengenal yang digunakan dalam bahasa pemrograman Pascal. Sebenarnya pengenal
terdiri dari huruf yang diikuti oleh urutan huruf atau angka. GRAMophone
pengenal juga harus ditulis dalam huruf kecil.
Tata Bahasa Chomsky
SIMBOL NON-TERMINAL
Dalam tata bahasa Chomsky, simbol non-terminal digunakan untuk memberikan struktur atau 'gaya' ke
komposisi musik. Mereka ditulis dengan '@' segera diikuti oleh pengenal.
Tata bahasa Chomsky yang digunakan oleh GRAMophone bebas konteks sehingga kepala produksi dapat
hanya menjadi non-terminal.
SIMBOL NON-TERMINAL @komposisi
Simbol non-terminal ini, yang sesuai dengan komposisi akhir pemain tunggal,
adalah wajib.
OPERATOR PRODUKSI
Ini ditentukan oleh urutan karakter '->' dan memisahkan kepala produksi
dari tubuh.
BADAN PRODUKSI
Ini mungkin berisi urutan terminal (not, jeda dan akord) dan non-terminal
simbol. Setiap produksi harus diakhiri dengan titik koma.
| (ATAU) OPERATOR
Sebuah produksi mungkin non-deterministik: dengan kata lain mungkin menyajikan dua atau lebih pilihan
selama generasi. Tubuh produksi non-deterministik terdiri dari berbagai
pilihan dipisahkan oleh | operator. Sebagai contoh
@non_det->A[,,,]B[,,,]@Seq1|^A[,,,]B[,,,]C[,,,]^@Seq2R[]C[,,,];
adalah produksi non-deterministik.
MAKNA ITUTERASI DALAM CHOMSKY GRAMMAR
Dalam tata bahasa Chomsky, sebuah produksi dapat mencakup siklus, yaitu badan produksi yang mengandung non-
simbol terminal yang mengacu pada produksi yang sebenarnya sedang diproduksi. Sebagai contoh:
@Sequenza1->B[,,,]A[,,,]C[,,,]@Sequenza1;
Untuk menghindari infinite loop selama pembuatan, simbol non-terminal @Sequenza1 adalah
diproses dalam jumlah yang sama dengan parameter iterasi.
Tata Bahasa Lindenmayer
Tata bahasa Lindenmayer hanya berurusan dengan simbol terminal dan versi GRAMophone dapat
bebas konteks atau bekerja dalam konteks polifonik. Oleh karena itu, nada tunggal atau akord dapat muncul
di kepala produksi. Semua produksi dipisahkan oleh titik koma.
AXIOM
Ini adalah produksi awal dari mana generasi dimulai. Ini adalah wajib. PRODUKSI
OPERATOR
Ini ditentukan oleh urutan karakter '->' dan memisahkan kepala produksi
dari tubuh.
| (ATAU) OPERATOR
Sebuah produksi mungkin non-deterministik: dengan kata lain mungkin menyajikan dua atau lebih pilihan
selama generasi. Tubuh produksi non-deterministik terdiri dari berbagai
pilihan dipisahkan oleh | operator. Sebagai contoh
A[,,,]->A[,,,]B[,,,]|C[,,,]D[,,,];
adalah produksi non-deterministik.
MAKNA PERATURAN DALAM GRAMMAR LINDENMAYER
Pada setiap langkah, semua produksi tata bahasa diterapkan secara bersamaan ke string nada.
Dalam hal ini parameter iterasi mewakili jumlah langkah yang harus dilakukan.
Penggunaan variabel
DEKLARASI DAN INISIALISASI VARIABEL
GRAMophone mampu mengontrol atribut catatan secara parametrik melalui penggunaan
variabel. Variabel-variabel ini dideklarasikan di bagian deklarasi pemain dan mungkin dari
jenis berikut: oktaf, kecepatan, durasi dan msb. Sebuah variabel dideklarasikan dengan menulis
jenisnya diikuti oleh satu atau lebih pengidentifikasi yang dipisahkan oleh koma. Deklarasi harus
diakhiri dengan titik koma. Pengenal pemain harus dideklarasikan hanya sekali.
Berikut ini adalah pernyataan yang benar:
kecepatan x, y;
oktaf okt, z;
durasi w;
Berikut ini adalah pernyataan yang salah:
kecepatan x, x;
oktaf z;
durasi z;
Mengikuti bagian deklarasi dan sebelum tata bahasa dimungkinkan untuk inisialisasi
variabel dengan menggunakan operator =.
Berikut ini adalah contoh deklarasi dan inisialisasi:
kecepatan x;
x = 0;
MENGGUNAKAN VARIABEL DENGAN CATATAN
Variabel digunakan dalam ekspresi atribut note. GRAMophone mengontrol jenis di dalam
ekspresi, jadi tidak mungkin menambahkan variabel oktaf ke variabel kecepatan, untuk
contoh.
Berikut ini adalah contoh dari variabel catatan:
kecepatan x;
durasi z, w;
SEBUAH[4,x,z+w,].
CONTOH
komposisi "Crescendo" dari "Schroeder" {
//komposisi ini menghasilkan nada 64 A dengan kecepatan yang terus bertambah
tata bahasa chomsky
waktu 120
tanda_waktu 4/4
iterasi 64
%
pemain Schroeder {
instrumen 40
%
kecepatan x=0;
@komposisi->A[,x=x+1,,]@komposisi;
}
}
KONDISI
Dalam tata bahasa Chomsky dan Lindenmayer, dimungkinkan untuk mendefinisikan kondisi untuk
variabel dalam badan produksi. Jika kondisinya benar, produksi dijalankan;
jika tidak. Suatu kondisi ditentukan segera setelah nama produksi
melalui '?' simbol, diikuti oleh satu atau lebih ekspresi Boolean.
Operator Boolean adalah:
! bukan
&& dan
|| atau
Operator relasional adalah:
== ugual
!= beragam
< kecil
> maggiore
<= minor atau uguale
>= maggiore atau uguale
Berikut ini adalah contoh produksi bersyarat.
@battuta?x!=0->A[,x=x-10,,]@battuta;
yang artinya: selama x tidak sama dengan nol, hasilkan produksi @battuta; jika tidak lakukan
tidak.
Diskografi, perpustakaan GRAMophone
GRAMophone dapat menyertakan perpustakaan eksternal, yang disebut diskografi. Untuk memasukkan
diskografi dalam file sumber, gunakan kata kunci diskografi diikuti dengan nama filenya. A
diskografi dapat dimasukkan kapan saja dalam file sumber, selama isinya cocok
posisi sumber di mana ia telah dimasukkan.
Macro
Makro dapat didefinisikan menggunakan kata kunci define, diikuti dengan pengenal huruf kecil dan a
string ditempatkan dalam koma terbalik. Makro harus ditentukan di awal sumber
komposisi, sebelum kata kunci komposisi. Misalnya, untuk sekadar menulis
alih-alih A[,,,], makro berikut harus didefinisikan: tentukan "A[,,,]"
Fungsi di GRAMophone
FUNGSI pengulangan ()
Fungsi repeat() mengambil nilai tipe msb ditambah urutan Chomsky atau Lindenmayer. Dia
memungkinkan urutan yang disertakan untuk diulang beberapa kali yang sama dengan msb
nilai tipe.
FUNGSI rand()
Fungsi Rand() mengambil ekspresi dan mengembalikan nilai acak yang kurang dari
nilai ekspresi.
Operator melodi di GRAMophone
mengubah urutan()
Operator transpose() mengambil nilai tipe msb ditambah urutan Chomsky atau Lindenmayer.
Ini menghasilkan urutan di mana semua catatan dalam urutan yang relevan dialihkan oleh
sejumlah semitone sama dengan nilai tipe msb.
inversi()
Operator inversion() mengambil urutan Chomsky atau Lindenmayer. Ini menghasilkan urutan
di mana interval antara nada pertama dan nada lainnya dalam urutan yang diambil adalah
dihitung secara terbalik.
mundur()
Operator retrograde() mengambil urutan Chomsky atau Lindenmayer. Ini menghasilkan urutan
yang merupakan kebalikan dari urutan yang dimasukkan.
Gunakan gramophone2 online menggunakan layanan onworks.net