pembuatan komposer lagu pada pc

116
PROYEK AKHIR PEMBUATAN KOMPOSER (LAGU) PADA PERSONAL COMPUTER (PC) BERBASIS DIGITAL SIGNAL PROCESSING (DSP) (Dengan NADA-nada tunggal) Devi Dyah Palupi NRP. 7203 030 015 Dosen Pembimbing : Tri Budi Santoso, ST, MT NIP. 132 128 464 Bima Sena Bayu Dewantara, SST NIP. 132 232 762 JURUSAN TEKNIK TELEKOMUNIKASI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA S U R A B A Y A 2006

Upload: anggar55

Post on 07-Jun-2015

5.604 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: pembuatan komposer lagu pada pc

PROYEK AKHIR

PEMBUATAN KOMPOSER (LAGU) PADA PERSONAL COMPUTER (PC) BERBASIS

DIGITAL SIGNAL PROCESSING (DSP) (Dengan NADA-nada tunggal)

Devi Dyah Palupi

NRP. 7203 030 015

Dosen Pembimbing :

Tri Budi Santoso, ST, MT NIP. 132 128 464

Bima Sena Bayu Dewantara, SST

NIP. 132 232 762

JURUSAN TEKNIK TELEKOMUNIKASI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA

S U R A B A Y A 2006

Page 2: pembuatan komposer lagu pada pc

PEMBUATAN KOMPOSER (LAGU) PADA PERSONAL COMPUTER (PC) BERBASIS DIGITAL SIGNAL PROCESSING (DSP)

(Dengan Nada-nada Tunggal)

Oleh: Devi Dyah Palupi

7203 030 015

Proyek Akhir ini Diajukan Sebagai Salah Satu Syarat Untuk Memperoleh Gelar Ahli Madya (A.Md)

di Politeknik Eletronika Negeri Surabaya

Institut Teknologi Sepuluh Nopember Surabaya

Disetujui Oleh : Tim Penguji Proyek Akhir: Dosen Pembimbing: 1. Drs. Miftahul Huda, MT 1. Tri Budi Santoso, MT NIP. 132 055 257 NIP. 132 128 464 2. Sritusta Sukaridhoto, ST 2.Bima Sena Bayu D, SST NIP. 132 300 372 NIP. 132 232 762 3. Ari Wijayanti, ST NIP. 132 303 877

Mengetahui

Ketua Jurusan Tekomunikasi

Drs. Miftahul Huda, MT

NIP. 132 055 257

ii

Page 3: pembuatan komposer lagu pada pc

ABSTRAK

Komposer adalah sistem yang mampu memadukan dan mengolah nada-nada tunggal menjadi sebuah lagu ataupun hanya sebuah intro lagu saja. Pada saat ini komposer masih bisa dibuat pada handphone saja. Dengan perpaduan Pengolahan Sinyal Digital (DSP) dan Bahasa Pemrograman Visual C++ dan Snack-Tcl/Tk akan diperoleh sebuah software yang mampu mengolah nada-nada tunggal menjadi sebuah lagu. Langkah pertama yang dilakukan adalah penentuan frekuensi dari nada-nada tunggal dari piano yang nantinya disesuaikan dengan formulasi yang akhirnya bisa dihasilkan bunyi dari nada-nada tunggal yang diinginkan. Formulasi tersebut akan diproses dengan menggunakan program Visual C++ dan Snack-Tcl/Tk. Nada-nada tunggal tersebut akan digabungkan agar bisa menjadi sebuah lagu. Lagu ini nantinya akan disimpan dalam bentuk WAV dan di putar pada media yang sesuai seperti Windows Media Player atau media lain yang sesuai.

Kata kunci : Komposer, nada-nada tunggal,Pengolah sinyal digital,

frekuensi sampling

iii

Page 4: pembuatan komposer lagu pada pc

ABSTRACT Composer is a system that capable to combine and process the single tones become a song or a part of song. At the moment, the composer can be made at the mobile phone only. With the Digital Signal Processing, Visual C++, and Snack-Tcl/Tk Programming can be created a software that capable to process single tones become a song. The first step is determine the frequency of single tone of piano which is accommodated with a formulation that can be produced a sound of the desired single tones. The formulation will be processed by using visual C++ and Snack-Tcl/Tk programming. The single tones will be merged in order to be a song. It will be saved in WAV form and played at the appropriate media, such as Windows Media Player or the others. Key word : Composer, single tones, digital signal processor, sampling

frequency

iv

Page 5: pembuatan komposer lagu pada pc

KATA PENGANTAR Assalamu’alaikum WR.Wb.

Alhamdulillah! Kami panjatkan puji syukur kehadirat Allah SWT atas rahmat dan hidayah-Nya sehingga saya dapat menyelesaikan proyek akhir ini yang berjudul judul :

PEMBUATAN KOMPOSER (LAGU) PADA PERSONAL COMPUTER (PC) BERBASIS DIGITAL SIGNAL PROCESSING (DSP)

(DENGAN NADA-NADA TUNGGAL)

Proyek Akhir ini kami susun guna memenuhi salah satu syarat untuk memperoleh gelar Ahli Madya (A.Md.) di Politeknik Elektronika Negeri Surabaya, Institut Teknologi Sepuluh Nopember Surabaya (ITS).

Dalam menyelesaikan proyek akhir ini, kami melaksanakan berdasarkan teori-teori yang telah kami peroleh dalam perkuliahan, literature dan bimbingan dari dosen pembimbing serta pihak pihak lain yang telah memberi semangat dan bantuan.

Kami menyadari bahwa masih banyak kesalahan dan kekurangan dalam penyusunan dan pembuatan buku laporan Proyek Akhir ini. Seperti halnya pepatah yang berbunyi “Tiada Gading yang Tak Retak” . Oleh karena itu kami mengharapkan kritik dan saran dari pembaca. Kami juga mengharapkan semoga buku ini dapat memberikan manfaat bagi para mahasiswa Politeknik Elektronika Negeri Surabaya pada umumnya dan dapat memberikan nilai lebih untuk para pembaca pada khususnya. Wassalamu’alaikum Wr.Wb.

Surabaya, Agustus 2006 Penulis

v

Page 6: pembuatan komposer lagu pada pc

UCAPAN TERIMA KASIH

Pada kesempatan yang membahagiakan ini, penulis ingin mengucapkan terima kasih kepada semua pihak yang telah membantu penulis dalam menyelesaikan Proyek Akhir ini. Semua pihak tersebut antara lain :

1. Allah SWT, Alhamdulillahirrabbil Alamin atas segala berkah, rahmat, karunia dan pertolongan-Nya yang tiada henti yang diberikan kepada semua hamba-Nya, dan semua petunjuk-Nya yang kadang tak sanggup dilihat.

2. Shalawat serta salam tercurah selalu kepada junjungan besar Nabi Muhammad SAW yang mengajarkan kebenaran-kebenaran hakiki.

3. Bapak, Ibu, dan Kakak-kakakku tercinta, terima kasih atas semua cinta, kasih sayang, doa dan dukungan yang terus-menerus mengalir. Semoga saya selalu menjadi anak yang shaleh dan berbakti.

4. Dr. Titon Dutono, M.Eng, selaku direktur Politeknik Elektronika Negeri Surabaya - Institut Teknologi sepuluh Nopember.

5. Bapak Drs. Miftahul Huda, MT, selaku ketua jurusan Teknik Telekomunikasi Politeknik Elektronika Negeri Surabaya. Terima kasih telah membimbing kami dengan penuh kesabaran dan atas semua yang bapak berikan kepada kami.

6. Bapak Tri Budi Santoso, ST, MT, selaku dosen pengajar dan pebimbing Proyek Akhir. Terima kasih atas waktu yang telah Bapak sediakan dan ilmu serta bimbingan yang telah Bapak berikan.

7. Bapak Bima Sena Bayu Dewantara, SST, selaku dosen pembimbing Proyek Akhir. Terima kasih atas ilmu, bimbingan dan waktu yang diberikan, terutama saat penyelesaian proyek akhir ini.

8. Semua dosen dan staf Politeknik Elektronika Nageri Surabaya - ITS, bidang keahlian Telekomunikasi atas didikannya dan dukungan selama ini. Insya Allah ilmu akan selalu diterapkan.

9. Seluruh warga jurusan Teknik Telekomunikasi PENS – ITS. Terima Kasih atas seluruh dukungannya.

10. Teman-teman Lab Propagasi yang telah memberi bantuan, semangat, dukungan, dan do’annya dalam penyelesaian PA ini.

vi

Page 7: pembuatan komposer lagu pada pc

11. Buat Fathir yang selalu menemani, membantu, memberi dukungan, semangat, dan do’anya selama penyelesaian PA ini.

12. Teman-teman seperjuangan untuk proyek akhir atas bantuan, dukungan, kekompakan, dan do’anya selama proses pembuatan Proyek Akhir ini.

13. Serta semua pihak yang ikut membantu kelangsungan tugas akhir ini yang tidak dapat kami sebutkan satu per satu.

Penulis berharap semoga Allah SWT membalas segala kebaikan yang diberikan dengan yang lebih baik lagi

Surabaya, Agustus 2006

Penulis

vii

Page 8: pembuatan komposer lagu pada pc

DAFTAR ISI

JUDUL…………………………………………………………….. i PENGESAHAN ………………………………..……………….... ii ABSTRAK………………………………………………………… iii ABSTRACT…...…………………………………………………... iv KATA PENGANTAR..……………………………………………. v UCAPAN TERIMA KASIH………………………………………. vi DAFTAR ISI.…………………………………………………..….. viii DAFTAR GAMBAR……………………………………………… x DAFTAR TABEL…………………………………………………. xi BAB I. PENDAHULUAN………………………………………… 1

1.1. Latar Belakang ……………...…………………………. 1 1.2. Tujuan ... ………..……………………………………... 2 1.3. Perumusan Masalah .………..…………………............. 2 1.4. Batasan Masalah ………………………………............ 2 1.5. Metodologi ………………….……………………......... 3 1.6. Sistematika Pembahasan ..……………………………... 3

BAB II. TEORI PENUNJANG …………………………………… 5 2.1. Umum……………………….......................................... 5 2.2. Pemrograman Snack-Tcl/Tk ........................................... 5 2.2.1. Snack 2.2 .................................................................. 5 2.2.2. Tcl/Tk 8.3.0 .............................................................. 5 2.3. Pemrograman Visual C++ …………………………….. 9 2.4. Frekuensi Suara Musik ................................................... 10 2.5. Pengenalan Not Musik ………………………………… 12

2.5.1 Sistem Not Angka ……………………………… 12 2.5.2 Sistem Not Balok ……………………………….. 12

BAB III. PERENCANAAN DAN PERANGKAT LUNAK ........... 13 3.1. Perencanaan Sistem ....................................................... 13 3.2. Pembuatan Ekstensi…………………………………... 14 3.3. Pembangkitan Nada-Nada Tunggal ............................... 17 3.3.1. Pembangkitan Nada dengan Software Visual C++ . 17 3.3.2. Pembangkitan Nada dengan Software Tcl/Tk ......... 20

3.3.3. Penggabungan Nada-nada pada Visual C++ .......... 21 3.3.4. Pemanggilan Gabungan pada Tcl/Tk ..................... 22

viii

Page 9: pembuatan komposer lagu pada pc

3.3.5. Penyimpanan Gabungan Nada-nada dalam WAV . 22 3.3.6. Pembuatan Tampilan .............................................. 23 BAB IV. PENGUJIAN PERANGKAT LUNAK ............................ 27 4.1. Gambaran Umum .................................................................................................................... 27 4.2. Pengujian Sistem ........................................................... 27

4.2.1. Pengujian Nada-nada Tunggal dengan Jumlah Data 27 4.2.2. Pengujian Penggabungan Nada-nada Tunggal ........ 31

4.3. Analisa Hasil Pengujian ................................................ 44 4.3.1. Analisa Pengujian Nada-nada Tunggal dengan

Jumlah Data ............................................................ 44

4.3.2. Analisa Pengujian Penggabungan Nada-Nada Tunggal ................................................................... 44

BAB V. PENUTUP........................................................................... 47 5.1. Kesimpulan……………………………………………. 47 5.2. Saran ………………………………………………….. 47 DAFTAR PUSTAKA........................................................................ 49 LAMPIRAN...................................................................................... RIWAYAT HIDUP ..........................................................................

ix

Page 10: pembuatan komposer lagu pada pc

DAFTAR GAMBAR

Gambar 2.1 Wish Interpreter ………................................................ 6 Gambar 2.2 Contoh pembuatan button.............................................. 7 Gambar 2.3 Contoh pembuatan button ............................................. 8 Gambar 2.4 Contoh pembuatan button ............................................. 8 Gambar 2.5 Contoh pembuatan button ............................................. 9 Gambar 2.6 Contoh tampilan piano ………………………………. 12 Gambar 3.1 Blok Diagram Pembuatan Komposer ………………... 13 Gambar 3.2 Blok Diagram Pembuatan Ekstensi…………………... 14 Gambar 3.3 Spesifikasi lokasi dari file Snack dan Tcl include ........ 15 Gambar 3.4 Spesifikasi stubs ........................................................... 15 Gambar 3.5 Spesifikasi library dari Snack dan Tcl .......................... 16 Gambar 3.6 Output dalam bentuk dll ............................................... 16 Gambar 3.7 Contoh Tampilan .......................................................... 23 Gambar 4.1 Sinyal nada C’ untuk jumlah data 1000 ....................... 26 Gambar 4.2 Sinyal nada C’ untuk jumlah data 2000 ....................... 26 Gambar 4.3 Sinyal nada C’ untuk jumlah data 3000 ....................... 26 Gambar 4.4 Sinyal nada C’ untuk jumlah data 4000 ....................... 27 Gambar 4.5 Sinyal nada C’ untuk jumlah data 5000 ....................... 27 Gambar 4.6 Sinyal nada C’ untuk jumlah data 6000 ....................... 27 Gambar 4.7 Sinyal nada C’ untuk jumlah data 7000 ....................... 28 Gambar 4.8 Sinyal nada C’ untuk jumlah data 8000 ....................... 28 Gambar 4.9 Sinyal nada C’ untuk jumlah data 9000 ....................... 28 Gambar 4.10 Sinyal nada C’ untuk jumlah data 10000 ................... 29 Gambar 4.11 Sinyal lagu Indonesia Raya dengan jumlah data 1000 31 Gambar 4.12 Sinyal lagu Gugur Bunga dengan jumlah data 1000 .. 33 Gambar 4.13 Sinyal lagu Indonesia Raya dengan jumlah data 5000 35 Gambar 4.14 Sinyal lagu Gugur Bunga dengan jumlah data 5000 .. 37 Gambar 4.15 Sinyal lagu Indonesia Raya dengan jumlah data

10000 ....................................................................... 40

Gambar 4.16 Sinyal lagu gugur Bunga dengan jumlah data 10000 . 42

x

Page 11: pembuatan komposer lagu pada pc

DAFTAR TABEL

Tabel 2.1 Sejumlah ekstensi yang dibangkitkan oleh C++........... 17 Tabel 2.2 Tabel Frekuensi Tiap Oktaf Dengan Ketentuan Nilai

Dasar ............................................................................. 22

xi

Page 12: pembuatan komposer lagu pada pc

BAB I PENDAHULUAN

1.1 LATAR BELAKANG

Dewasa ini komputer memegang peranan penting dalam

perkembangan produksi teknologi audio. Dengan penerapan hardware dan software yang tepat sistem komputer dapat digunakan untuk pembuatan lagu, perekaman, pengeditan, mixing, mastering dan streaming di internet. Hal ini mebuat penerapan pengolahan sinyal audio seperti equalizer dan digital audio effect dengan sistem komputer semakin luas [1].

Demikian halnya dengan pengolahan sinyal secara digital yang telah diterapkan begitu luas. Dari peralatan instrumentasi dan kontrol, peralatan musik, peralatan kesehatan dan peralatan lainnya [2]. Sebagai penerapan dari pengolahan sinyal digital menggunakan sistem komputer, untuk itu pembuatan komposer (lagu) pada personal komputer menggunakan digital signal processing dengan nada-nada tunggal ini merupakan salah satu aplikasi dari perkembangan teknologi pengolahan sinyal

Komposer adalah seseorang yang menulis musik, dalam hal ini orang tersebut menulis musik dalam bentuk not-not musik yang memungkinkan orang lain untuk memainkannya [3]. Tetapi dalam proyek akhir ini yang dimaksud dengan komposer adalah sebuah software yang dapat memadukan not-not musik menjadi sebuah lagu Saat ini komposer hanya dapat dibuat pada mobile phone. Dengan pengolahan sinyal digital, bahasa pemrograman Snack Tcl/tk dan visual C++ akan diperoleh sebuah software dimana komposer atau lagu tersebut dapat ditampilkan pada personal komputer .

Pembuatan sebuah lagu dapat dilakukan melalui proses pembangkitan frekuensi dari not-not musik yang kemudian diolah dengan bahasa pemrograman Snack Tcl/tk dan visual C++. Dengan mengolah frekuensi-frekuensi tersebut akan diperoleh suara yang berlainan dari tiap nada. Dari nada-nada tersebut akan diatur dan dipadukan sehingga akan menghasilkan sebuah lagu.

Proyek akhir ini menggunakan tampilan alat musik piano. Bentuk alat musik piano dapat dibuat menggunakan script Snack tcl/tk dan pembangkitan suara dari tiap-tiap notnya menggunakan bahasa pemrograman visual C++, dimana kedua program tersebut telah di-

1

Page 13: pembuatan komposer lagu pada pc

2

ektensi terlebih dahulu. Nada-nada tunggal yang telah dibangkitkan tersebut (nada) kemudian digabungkan sehingga dapat menjadi sebuah lagu dengan nada-nada tunggal maupun dengan penambahan effect. 1.2 TUJUAN

Proyek Akhir yang kami kerjakan ini memiliki tujuan yaitu :

a. Pengolahan input berupa frekuensi-frekuensi nada-nada tunggal yang kemudian dihasilkan bunyi-bunyi yang bernada atau disebut komposer.

b. Komposer ini dapat ditampilkan pada Personal Computer (PC) baik melalui tampilan yang dibuat sendiri maupun melalui WAV.

c. Yang tidak kalah pentingnya menjadikan sebagai alat untuk berlatih bagi pemula yang ingin menambah ilmu dalam bidang musik.

1.3 PERUMUSAN MASALAH

Dari pembahasan di atas maka permasalahan yang mungkin akan

terjadi yaitu bagaimana dengan membangun sebuah aplikasi untuk menampilkan suara musik pada Personal Computer (PC) dengan program bantu Visual C++ dan Snack-Tcl/Tk dan dapat didengarkan dengan enak oleh pendengar dengan menggabungkan nada-nada tunggal yang saling berkaitan satu dengan yang lainnya. Hasil dari Komposer ini nantinya akan ditampilkan pada Personal Computer (PC).

1.4 BATASAN MASALAH Batasan masalah pada Proyek Akhir ini yaitu :

1. Program bantu yang digunakan dalam menyelesaikan pembuatan komposer ini adalah software script Snack-Tcl/Tk dan Visual C++.

2. Pembuatan komposer ini hanya menggunakan nada-nada tunggal saja.

3. Pembuatan komposer ini hanya dibatasi pada alat musik piano untuk 4 oktaf.

4. Tampilan yang digunakan pada komposer ini berupa tuts-tuts piano dan langsung diputar dalam 1 intro lagu.

Page 14: pembuatan komposer lagu pada pc

3

1.5 METODOLOGI Penyelesaian proyek akhir ini dilakukan dengan langkah-langkah

sebagai berikut: a) Perancangan Sistem

Perancangan sistem didasarkan blok diagram pembuatan komposer seperti pada Gambar 3.1 dan diharapkan dapat mempermudah dalam membuat perangkat lunak yang diharapkan.

b) Studi Literatur Pada study literatur Proyek Akhir ini penulis memakai teori tentang bahasa pemrograman Visual C++ dan Snack-Tcl/Tk, dan teori frekuensi suara musik.

c) Pembuatan Software Dari hasil perancangan sistem dan teori yang menunjang, akan diwujudkan suatu perangkat lunak berdasarkan perencanaan tersebut.

d) Eksperimen dan Analisa Sistem Perangkat lunak yang telah jadi akan diuji untuk kerjanya. Pengujian akan dilakukan untuk semua not-not dasar berikut performa masing-masing untuk kemudian diperbaiki dan disempurnakan bila masih ada kekurangan. Beberapa penambahan fitur akan dilakukan jika memungkinkan.

1.6 SISTEMATIKA PEMBAHASAN Sistematika pembahasan Proyek Akhir ini disusun dengan kerangka

pembahasan yang saling berkaitan yaitu sebagai berikut :

1. BAB I PENDAHULUAN Bab ini berisi tentang latar belakang, tujuan, perumusan masalah, batasan masalah, metodologi, dan sistematika pembahasan.

2. BAB II TEORI PENUNJANG

Bab ini berisi tentang teori-teori yang berkaitan dalam proses pembuatan proyek akhir, yaitu meliputi teori tentang frekuensi musik, program bantu Visual C++ dan Snack Tcl/Tk.

Page 15: pembuatan komposer lagu pada pc

4

3. BAB III PERENCANAAN DAN PEMBUATAN PERANGKAT LUNAK Bab ini berisi tentang proses perancangan dan pembuatan perangkat lunak (software) dari sistem keseluruhan mulai dari proses menginputkan nilai frekuensi ke dalam formulasi pada visual C++, pembangkitan bunyi nada-nada tunggal, penggabungan nada-nada tunggal sampai didapatkan sebuah musik yang diharapkan.

4. BAB IV PENGUJIAN PERANGKAT LUNAK

Membahas tentang pengujian nada-nada tunggal dengan berbagai jumlah data dan pengujiannya dalam lagu, serta analisanya.

5. BAB V PENUTUP Berisi kesimpulan dari keseluruhan apa yang dikerjakan dalam proyek akhir dan saran-saran untuk memperbaiki kelemahan sistem yang telah dibuat demi pengembangan dan kesempurnaan hasil Proyek Akhir ini di waktu mendatang.

Page 16: pembuatan komposer lagu pada pc

BAB II TEORI PENUNJANG

2.1 UMUM

Pada bab ini akan dibahas tentang teori dasar yang melandasi

permasalahan dan penyelesaiannya yang diangkat dalam Proyek Akhir ini. Teori dasar yang diberikan meliputi: pemrograman Snack-Tcl/tk, frekuensi nada-nada tunggal, tanda kunci, dan hal-hal yang berkaitan dengan musik. Selanjutnya akan dibahas secara detail dalam bab ini. 2.2 PEMROGRAMAN SNACK-TCL/TK 2.2.1 Snack 2.2

Snack adalah tool pengolahan suara yang didesain sebagai

ekstensi untuk bahasa script. Saat ini Snack bekerja dengan bahasa script Tcl/Tk, Phyton dan Ruby. Snack memiliki perintah-perintah untuk play, record, process dan memvisualisasi suara. Snack menyediakan obyek suara tingkat tinggi, dengan manajemen penyimpanan yang fleksibel dan streaming support. Snack dapat bekerja pada banyak format file suara.

Dengan software yang merupakan hasil integrasi dari Tcl/Tk dan Snack, maka dapat diberikan beberapa dasar-dasar dari program tersebut.[4] 2.2.2 Tcl/Tk 8.3.0

Tcl adalah bahasa perintah berbasis string. Bahasa tersebut

memiliki beberapa konstruksi dasar dan relatif sedikit sintaks, yang membuatnya mudah dipelajari. Tcl didesain untuk melekatkan blok-blok program assembly pada aplikasi. Tcl akan diinterpretasikan saat aplikasi berjalan. Interpreter membuatnya mudah untuk membangun dan memperbaiki aplikasi kita dalam bentuk yang interaktif. Mekanisme dasar adalah semuanya berhubungan dengan string dan pergantian string, sehingga sangat mudah untuk ditampilkan apa yang sedang dilakukan oleh interpreter. Tcl singkatan dari Tool Command Language. Sebuah perintah yang mengerjakan sesuatu, seperti mengeluarkan string, menghitung ekspresi matematika, atau menampilkan widget pada layar. Tk adalah Graphical Toolkit extension dari Tcl, menyediakan

5

Page 17: pembuatan komposer lagu pada pc

6

bermacam-macam item standar antarmuka GUI untuk memfasilitasi secara cepat, pengembangan aplikasi tingkat tinggi.[4]

Berikut beberapa program dasar yang nantinya diaplikasikan dalam proyek akhir ini, diantaranya:

Perintah Dasar Tcl / Tk dan Snack Bekerja dengan menggunakan wish interpreter

Untuk bekerja dengan menggunakan Tcl console, maka jalankan

interpreter wish. Wish singkatan dari “Windows Shell”. Ini adalah sebuah interpreter Tcl dimana Tk sekaligus termasuk di dalamnya, sehingga wish bisa memahami perintah Tcl dan Tk. Untuk menggunakan wish interpreter, maka bukalah Start – Program – Tcl – Wish. Kemudian akan muncul tampilan gambar dibawah ini :

Gambar 2.1 Wish Interpreter

Pada saat wish interpreter dijalankan, maka tampil dua window. Satu window adalah Console, dimana kita dapat mengetikkan perintah setelah prompt %. Window yang lain adalah sebuah “toplevel” window, dimana beberapa elemen grafik dari perintah tcl/tk seperti button, listbox dll akan terlihat. Toplevel menunjukkan berbagai macam widget Tk untuk membangun GUI (Graphical User Interface), sebagai hasil pengetikan script tcl/tk pada Console.[4]

Page 18: pembuatan komposer lagu pada pc

7

Syntax

Tcl/Tk adalah sebuah bahasa pemrograman berorientasi text. Tcl/Tk memperlakukan semua perintah dan argument sebagai text. Untuk menulis sebuah program Tcl/Tk, kita secara mudah menulis satu perintah setelah satu lainnya. Sebuah perintah bisa berupa perintah Tcl/Tk yang tersedia secara langsung ataupun membuat prosedur tersendiri. Syntax dasar dari Tcl/Tk adalah sebuah perintah diikuti argument :[4] Command arg1 arg2 arg3….. Contoh : % puts stdout “Hello World” • Hello World Catatan : tanda % adalah prompt, jadi tidak perlu diketikkan sendiri. Menciptakan Button % button .b –text “Push Me” • .b % pack .b Hasilnya dalam toplevel window adalah sebagai berikut :

Gambar 2.2 Contoh pembuatan button

• Perintah button Tk memiliki bentuk : % button name options?

Perintah adalah button, argumen adalah name dan berbagai option. Pada contoh ini, nama widget adalah .b dan –text adalah option yang menunjukkan teks yang akan dimunculkan pada button.

Page 19: pembuatan komposer lagu pada pc

8

• Perintah pack memiliki bentuk : % pack name options?

Perintah adalah pack, argumen adalah name dan berbagai option. Nama argumen sangat dibutuhkan, tetapi option tambahan tidak digunakan dalam contoh ini. Contoh perintah dengan banyak option : % button .c -relief raised -activebackground lightblue –activeforeground red-disabledforeground grey -text "Push Me" % button .b1 –foreground black –background white % button .b2 –foreground blue –background white % pack .b1 .b2 Hasilnya adalah :

Gambar 2.3 Contoh pembuatan button Packing Widgets % button .b1 –text play % button .b2 –text record % button .b3 –text exit % pack .b1 .b2 .b3 –side left Hasilnya adalah :

Gambar 2.4 Contoh pembuatan button

Page 20: pembuatan komposer lagu pada pc

9

Frame Widgets % pack [frame .f1] % pack [frame .f2] % pack [frame .f3] % button .f1.bplay -text Play -command {s play} % button .f1.brecord -text Record -command {s record} % button .f1.bstop -text Stop -command {s stop} % button .f1.bexit -text Exit -command exit % pack .f1.bplay .f1.brecord .f1.bstop .f1.bexit -side left -padx 5 -pady 5 % entry .f2.entry -textvariable filename % button .f2.bsave -text Save -command {s write data_wav\\$filename.wav} % pack .f2.entry .f2.bsave -side left -padx 5 -pady 5 % button .f3.b1 -text "Standarisasi" -command {std;y length 1000;y sign;y play} % button .f3.b2 -text "Test" -command {go;x length 1000;x sign;x play} % pack .f3.b1 .f3.b2 -side left -padx 5 Hasilnya adalah :

Gambar 2.5 Contoh pembuatan button

2.3 PEMROGRAMAN VISUAL C++

Visual C++ menggunakan perangkat pengembangan aplikasi

yang menggunakan C++ sebagai bahasa pemrogaman dan dapat digunakan untuk membuat aplikasi berbasis Windows maupun berbasis teks (aplikasi konsol). Perangkat ini menyediakan lingkungan yang dinamakan IDE ( Integrated Development Enviroment) yang memungkinkan pemakai membuat, mengkompalisasi, menggabungkan, dan menguji program dengan cepat dan mudah.

Page 21: pembuatan komposer lagu pada pc

10

Beberapa komponen penting dalam Visual C++ adalah sebagai berikut [6] :

Ekstensi Keterangan .dsp Berkas ini berisi definisi dasar sebuah proyek,

berisi informasi tentang bagaimana aplikasi diciptakan berdasarkan berkas-berkas yang terdapat pada project workspace.

.dsw Berisi informasi tentang isi proyek.

.opt Berisi data tentang pengaturan-pengaturan dalam proyek; misalnya, menyimpan informasi tentang kemungkinan aplikasi bisa di debug atau tidak.

.cpp Berisi kode sumber C++

.h Merupakan berkas judul (header file), yang umumnya berisi definisi kelas atau berisi prototipe fungsi.

.rc Berisi resource Microsoft Windows (ikon, bitmap, dan berbagai kontrol) yang digunakan oleh aplikasi

.ico Berkas ikon untuk aplikasi

.exe Berkas yang dapat dieksekusi secara langsung (executable).

Tabel 2.1 Sejumlah ekstensi yang dibangkitkan oleh C++

2.4 FREKUENSI SUARA MUSIK Dengan menggunakan rumus untuk mencari nilai dari frekuensi,

maka kita dapat mencari nada dasar yang kita butuhkan yaitu dengan rumus [8]:

12/2440][ nHzFrequency ×=

Dimana :

Page 22: pembuatan komposer lagu pada pc

11

Hz = Frekuensi dari nada 440 = Ketentuan nilai untuk nada dasar A n = langkah (oktaf) dari kunci-kunci yang akan di cari C sampai

B pada tabel 12 = jumlah keseluruhan langkah yang ada tabel untuk mencari

nilai frekuensi

Sebagai contoh untuk mencari nilai frekuensi dari nilai sebelumnya adalah dengan menggunakan nilai dari nilai angka dasar 440 mengurangi nilai langkah pada nilai n sebagai contoh :

Hzf 2290.3942440 12/4 =×= −

Dengan menggunakan nada dasar A4 dengan nilai 440 kita dapat

dengan mudah mencari kunci-kunci dasar yang lain sesuai pada tabel berikut

Frekuensi Note

Oktaf 1 Oktaf 2 Oktaf 3 Oktaf 4 Oktaf 5 C 130.8 261.7 523.3 1046.6 2093.2 C# 138.6 277.2 554.4 1108.8 2217.7 D 146.8 293.7 587.4 1174.8 2349.6 D# 155.6 311.2 622.3 1244.6 2489.3 E 164.8 329.7 659.3 1318.6 2637.3 F 174.6 349.2 698.5 1397.0 2794.0

F# 185.0 370.0 740.0 1480.0 2960.1 G 196.0 392.0 784.0 1568.0 3136.0

G# 207.6 415.3 830.6 1661.2 3322.5 A 220.0 440.0 880.0 1760.0 3520.0 A# 233.1 466.2 932.3 1864.6 3729.2 B 246.9 493.9 987.7 1975.5 3951.0

Tabel 2.2 Tabel Frekuensi Tiap Oktaf Dengan Ketentuan Nilai Dasar.

Page 23: pembuatan komposer lagu pada pc

12

Gambar 2.6 Contoh tampilan piano

2.5 PENGENALAN NOT MUSIK Dalam penulisan musik (notasi) dikenal ada dua sistem, yaitu [9]:

2.5.1 Sistem Not Angka

Sistem ini menggunakan angka-angka, dengan sebutannya masing-masing : 2.5.2 Sistem Not Balok

1 2 3 4 5 6 7 1 d i f l l i d

Sistem not balok ini merupakan perpaduan yang terdiri dari beberapa unsur yang saling mendukung satu sama lainnya dengan sebutan abjad, yaitu :

c d e f g a b c’ Dari kedua sistem tersebut diatas, yang banyak dikenal secara menyeluruh adalah sistem not balok. Oleh karena itu dalam memperlajari cara menulis dan membaca not balok berikut ini, akan dibantu dengan not angka.

Page 24: pembuatan komposer lagu pada pc

BAB III PERENCANAAN DAN PEMBUATAN

PERANGKAT LUNAK

3.1 PERENCANAAN SISTEM Perancangan sistem pembuatan komposer dengan

menggunakan nada-nada tunggal pada proyek akhir ini, merupakan pembuatan instrumen musik dengan input frekuensi suara musik dan diolah menggunakan software Visual C++ dan Tcl/Tk. Perancangan sistem dalam proyek akhir ini dibentuk dalam blok diagram seperti yang ditunjukkan dalam Gambar 3.1 di bawah ini :

Gambar 3.1 Blok Diagram Pembuatan Komposer

Adapun keterangan dari Blok diagram di atas adalah sebagai berikut : 1. Menentukan frekuensi nada-nada tunggal. Frekuensi ini

diperoleh dari rumus , di mana sebagai standartnya adalah nada A = 440 kHz. Lebih lengkapnya telah dijelaskan dalam bab sebelumnya dalam teori penunjang.

12/

2440][n

HzFrequency ×=

2. Setelah diketahui frekuensi nada-nada tunggal tersebut maka frekuensi-frekuensi tersebut diolah dalam suatu formulasi dengan menggunakan software Visual C++ dan Snack-Tcl/Tk.

3. Selanjutnya nada-nada tunggal yang telah dibangkitkan akan digabungkan melalui software Visual C++ dan Snack-Tcl/Tk.

4. Hasil dari penggabungan nada-nada tunggal tersebut dihasilkan sebuah intro lagu atau bahkan sebuah lagu.

13

Page 25: pembuatan komposer lagu pada pc

14

3.2 PEMBUATAN EKSTENSI Dibawah ini adalah tuntunan langkah demi langkah untuk pemakai Windows menggunakan MS Visual C++ 6.0.

Gambar 3.2 Blok Diagram Pembuatan Ektensi Keterangan dari Blok Diagram di atas adalah sebagai berikut : 1. Membuat Win32 Dynamic-Link Library project. (File/New...)

Beri nama 'Square' dan klik Ok kemudian Finish. 2. Tambahkan file square.c ke project (Project/Add to

project/Files...) 3. Menetapkan lokasi dari file Snack dan Tcl include.

(Project/Settings..., C/C++ tab, Category: Preprocessor, Additional include directories.) Dengan instalasi default C:\Program Files\Tcl\include\,C:\Program Files\Snack2.0\include\

Page 26: pembuatan komposer lagu pada pc

15

Gambar 3.3 Spesifikasi lokasi dari file Snack dan Tcl include 4. Spesifikasi stubs (Project/Settings... C/C++ tab, Category:

General, Preprocessor definitions.) USE_SNACK_STUBS, USE_TCL_STUBS, USE_TK_STUBS

Gambar 3.4 Spesifikasi stubs 5. Spesifikasi librari dari Snack dan Tcl (Link tab, Category: Input,

Object/library modules) tclstub83.lib tkstub83.lib

Page 27: pembuatan komposer lagu pada pc

16

snackstub20.lib dan lokasinya (Additional library path). C:\Program Files\Tcl\lib\,C:\Program Files\Snack2.0\lib\.

Gambar 3.5 Spesifikasi library dari Snack dan Tcl

6. Nama file output dalam bentuk .dll, missal libsquare.dll (Category: General, Output file name)

Gambar 3.6 Output dalam bentuk dll

Page 28: pembuatan komposer lagu pada pc

17

7. Membangun Ekstensi 8. Menjalankan Ekstensi menggunakan script. Untuk lebih jelasnya

telah dipaparkan dalam teori penunjang pada bab sebelumnya. 3.3 PEMBANGKITAN NADA - NADA TUNGGAL 3.3.1 Pembangkitan Nada Dengan Software Visual C++

Pada pemrograman Snack, kita bisa mendefinisikan beberapa

obyek perintah baru yang berhubungan dengan Snack sound dan mengubah traknya. Hal ini dapat diwujudkan dengan menggunakan Snack C library. #include "snack.h" #include "math.h"

struct data {

float x[50000]; };

struct data dat;

int C(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {

FILE *gabung; Sound *sound; int i; float frek; float x[50000]; frek=130.8; if(fopen("gabungan.txt","r")==NULL)

gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) {

Page 29: pembuatan komposer lagu pada pc

18

x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]);

} fclose(gabung); return TCL_OK;

} /* Initialize the square package and create a new sound command 'square'. The syntax is: sndName square */ EXPORT(int, Square_Init)(Tcl_Interp *interp) {

#ifdef USE_TCL_STUBS if (Tcl_InitStubs(interp, "8", 0) == NULL) { return TCL_ERROR; } #endif #ifdef USE_TK_STUBS if (Tk_InitStubs(interp, "8", 0) == NULL) { return TCL_ERROR; } #endif #ifdef USE_SNACK_STUBS if (Snack_InitStubs(interp, "2", 0) == NULL) { return TCL_ERROR; } #endif if (Tcl_PkgProvide(interp, "square", "1.0") !=

TCL_OK) { return TCL_ERROR; } Snack_AddSubCmd(SNACK_SOUND_CMD,"C",

(Snack_CmdProc *) C, NULL); return TCL_OK;

}

Page 30: pembuatan komposer lagu pada pc

19

Untuk pembangkitan 1 nada tunggal itu sendiri misalnya saja nada C dapat diambil dari program :

int C(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {

FILE *gabung; Sound *sound; int i; float frek; float x[50000]; frek=130.8; if(fopen("gabungan.txt","r")==NULL)

gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) {

x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]);

} fclose(gabung); return TCL_OK;

}

Untuk nada-nada yang lain dibuat dengan menggunakan program yang sama. Perubahan yang dilakukan hanya pada pemanggilan nama nada dan pada frekuensi yang digunakan oleh nada tersebut. Misalnya, pada program nada C di atas kita menggunakan int C maka untuk nada yang lain hanya mengganti nama C dengan nama lain, misalmya D. Untuk masing-masing nada menggunakan frekuensi yang berbeda-beda. Oleh karena itu, untuk membedakan suara dari nada-nada tersebut harus mengganti frekuensi dari nada yang digunakan. Selain itu, untuk memanggil nada-nada tersebut juga dilakukan perintah yang berbeda.

Page 31: pembuatan komposer lagu pada pc

20

//Pemanggilan Nada C Snack_AddSubCmd(SNACK_SOUND_CMD,"C", (Snack_CmdProc *) C, NULL); //Pemanggilan Nada D Snack_AddSubCmd(SNACK_SOUND_CMD,"D", (Snack_CmdProc *) D, NULL); 3.3.2 Pembangkitan Nada Dengan Software Tcl/Tk

Software yang dibuat pada Tcl/Tk merupakan script

menggunakan ekstensi. File script dapat dibuat dari berbagai editor. Dalam hal ini bisa digunakan editor notepad, wordpad, dsb. Untuk penyimpanan file, pada akhir nama file harus ditambahkan “.tcl”. #/usr/local/bin/wish # 'info sharedlibext' returns .dll on Windows and .so on most Unix systems load square set f [snack::filter generator 440.0 30000 0.0 sine 5000] snack::sound s snack::sound u wm resizable . 0 0 proc Beep {freq} { $::f configure $freq s stop s play -filter $::f } Pemanggilan serta tampilan untuk nada C pada software Tcl/Tk adala sebagai berikut : s length 5000 pack [button .b1 -text C -height 10 -width 3 -background white -command {s C;s play}] -side left -pady 10 Sedangkan untuk memanggil nada C dari software Visual C++ adalah dengan menggunakan perintah -command {s C;s play}]. Nama pemanggilan nadanya harus disesuaikan dengan

Page 32: pembuatan komposer lagu pada pc

21

nada yang dituliskan pada Visual C++. Misalnya, pada Visual C++ dituliskan int C maka pemanggilan pada Tcl/Tk juga harus sama yaitu s C. 3.3.3 Penggabungan Nada-nada Pada Visual C++

Penggabungan pada Visual C++ disimpan dalam bentuk

File.txt. Dalam program Visual C++ menggunakan perintah sebagai berikut :

FILE *gabung;

Selain perintah di atas juga terdapat perintah yang lain yaitu : if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); Maksud dari program di atas adalah jika nada yang ditekan belum ada maka akan dibuat file baru, tetapi jika nada tersebut sudah ada maka akan disimpan dalam satu file secara berurutan. Penggabungan nantinya akan dipanggil dalam software Tcl/Tk. Program pada Visual C++ yang akan dipanggil adalah sebagai berikut : int Gabung(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; float x[50000]; gabung=fopen("gabungan.txt","r"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) fscanf(gabung,"%f",&dat.x[i]); fclose(gabung);

Page 33: pembuatan komposer lagu pada pc

22

return TCL_OK; } Kemudian program di atas akan dibaca dengan program sebagai berikut. Jika tidak ditambah program Baca maka program, gabung tidak akan bisa bekerja. int Baca(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { int i; Sound *sound; Sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) Snack_SetSample(sound,0, i, 1000*dat.x[i]); return TCL_OK; } Pemanggilan 2 program di atas tergabung dalam satu perintah pada Tcl/Tk. Pemanggilan ini dimaksudkan agar penggabungan nada-nada tunggal tersebut bisa dibaca oleh software Tcl/Tk. 3.3.4 Pemanggilan Gabungan Pada Tcl/Tk

Program Gabung pada Visual C++ nantinya akan dipanggil

pada Tcl/Tk. Program yang digunakan juga seperti halnya pemanggilan nada-nada. Programnya adalah sebagai berikut :

u button .agabungan -text Gabung -command {u gabung;u baca} pack .agabungan -side bottom -pady 5 3.3.5 Penyimpanan Gabungan Nada-Nada Dalam WAV

Program nada-nada yang telah digabungkan nantinya akan

diputar dalam bentuk WAV. Program untuk menyimpan penggabungan nada-nada tersebut sehingga menjadi WAV dan dapat

Page 34: pembuatan komposer lagu pada pc

23

diputar menggunakan Windows Media Player dibuat pada software Tcl/Tk. Program tersebut adalah sebagai berikut :

u length 60000 button .agabungan -text Gabung -command {u gabung;u baca;u write hasil.wav} pack .agabungan -side bottom -pady 5 Program ini merupakan lanjutan dari program pemanggilan program Gabungan pada Visual C++. Sehingga program tersebut dapat ditulis dalam satu baris. 3.3.6 Pembuatan Tampilan

Untuk membuat tampilan pada Proyek Akhir ini 100%

menggunakan software Tcl/Tk. Tampilan yang dibuat adalah seperti di bawah ini.

Gambar 3.7 Contoh Tampilan Program yang digunakan untuk membuat tuts-tuts piano tersebut misalnya adalah sebagai berikut : pack [button .b1 -text C -height 10 -width 3 -background white -command {s C;s play}] -side left -pady 10 Program di atas adalah program untuk membuat tombol dari nada C. Program tersebut langsung digabung jadi satu dengan program pemanggil suara nada C pada software Visual C++. Maksuddari perintah-perintah di atas adalah sebagai berikut : -text C digunakan untuk menuliskan teks pada tombol

Page 35: pembuatan komposer lagu pada pc

24

-height 10 digunakan untuk membuat panjang tombol (vertikal) -width 3 digunakan untuk membuat lebar tombol (horisontal) -background white digunakan untuk warna tombol -side left digunakan untuk posisi tombol yang berurutan ke kiri -pady 10 digunakan untuk membuat jarak antar tombol Sedangkan untuk membuat tuts-tuts piano yang berwrna hitam harus mengatur posisinya dengan menentukan nilai posisinya, misalnya yaitu sebagai berikut : pack [button .b30 -text Cis -height 4 -width 1 -background black -command {s Cis;s play}] -side left -pady 10 place .b30 -relx 0.023 -rely 0.04 Begitu tuts-tuts yang berwarna hitam, programnya juga sama digabung jadi satu dengan program pemanggil suara nadanya pada software Visual C++. Perintah-perintah yang digunakan juga sama hanya saja -background white diganti dengan -background black untuk membuat warna hitam pada tombol. Untuk membuat teks di bawah tuts-tuts piano digunakan perintah yang lain, yaitu sebagai berikut : label .a1 -text "Created By DEVI DYAH PALUPI" -foreground darkgoldenrod pack .a1 -side bottom -before .agabungan -padx 5 label .a2 -text "7203.030.015" -foreground darkgoldenrod pack .a2 -side bottom -before .a1 -padx 5 label .a3 -text "Jurusan Telekomunikasi" -foreground darkgoldenrod pack .a3 -side bottom -before .a2 -padx 5 label .a4 -text "Poleteknik Elektronika Negeri Surabaya (PENS)" -foreground darkgoldenrod pack .a4 -side bottom -before .a3 -padx 5 label .a5 -text "Institut Teknolologi Sepuluh Nopember (ITS)" -foreground darkgoldenrod

Page 36: pembuatan komposer lagu pada pc

25

pack .a5 -side bottom -before .a4 -padx 5 label .a6 -text "Surabaya 2006" -foreground darkgoldenrod pack .a6 -side bottom -before .a5 -padx 5

Page 37: pembuatan komposer lagu pada pc

26

*****Halaman ini sengaja dikosongkan*****

Page 38: pembuatan komposer lagu pada pc

BAB IV PENGUJIAN PERANGKAT LUNAK

Bab IV merupakan hasil pengujian perangkat lunak sekaligus

analisa proses kerja Proyek Akhir apakah telah sesuai dengan keinginan yang diharapkan.

4.1 GAMBARAN UMUM

Pembuatan Komposer ini memungkinkan pengguna dapat

membuat intro atau reff sebuah lagu dengan mudah, bahkan dapat berupa lagu yang utuh. Pengguna hanya menginputkan nada-nada dari lagu tersebut. Caranya adalah menekan tuts-tuts piano yang ditampilkan pada computer (PC). Setelah nada-nada yang diinginkan tersebut selesai ditekan, selanjutnya ditekan tombol atau button gabung untuk menggabungkan nada-nada tersebut menjadi sebuah lagu.

4.2 PENGUJIAN SISTEM

Pengujian sistem akan dilakukan dengan pembuatan beberapa

intro lagu. Seperti yang dijelaskan di atas intro lagu ini akan dibuat dari nada-nada tunggal yang nantinya akan digabungkan dengan melalui beberapa proses. Pengujian yang dilakukan antara lain : 1. Pengujian nada-nada tunggal dengan menggunakan beberapa nilai

jumlah data (panjang nada). 2. Pengujian penggabungan nada-nada tunggal. 4.2.1 Pengujian Nada-Nada Tunggal dengan Jumlah Data

Pengujian nada-nada tunggal dapat dilakukan dengan

menggunakan beberapa nilai jumlah data. Pengujian nada-nada tunggal dengan menggunakan jumlah data (panjang nada) 1000 sampai dengan 10000. pengujiannya dilakukan dengan mengganti jumlah data pada program Tcl/Tk dengan nilai 1000 - 10000. Sebagai hasilnya panjangnya nada akan didengarkan pada speaker dengan menekan tombol nada pada tampilan piano. Untuk penekanan satu nada diperoleh nilai-nilai yang ditampilkan dalam bentuk file .txt sepanjang jumlah data yang digunakan tersebut, dan salah satunya dapat dilihat pada lampiran. Sebagai contoh, pengujian dilakukan pada nada C’. Sedangkan untuk

27

Page 39: pembuatan komposer lagu pada pc

28

sinyal yang diperoleh dari pengujian nada C’ dengan jumlah data 1000 adalah sebagai berikut :

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah data

Ampl

itudo

Gambar 4.1 Sinyal nada C’ untuk jumlah data 1000 Untuk sinyal-sinyal yang diperoleh dari pengujuian nada C’ dengan menggunakan jumlah data 2000 – 10000 adalah sebagai berikut :

-15

-10

-5

0

5

10

15

0 500 1000 1500 2000 2500

Jumlah Data

Am

plitu

do

Gambar 4.2 Sinyal nada C’ untuk jumlah data 2000

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000

Jumlah Data

Am

plitu

do

Gambar 4.3 Sinyal nada C’ untuk jumlah data 3000

Page 40: pembuatan komposer lagu pada pc

29

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000

Jumlah Data

Am

plitu

do

Gambar 4.4 Sinyal nada C’ untuk jumlah data 4000

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

Gambar 4.5 Sinyal nada C’ untuk jumlah data 5000

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000

Jumlah Data

Am

plitu

do

Gambar 4.6 Sinyal nada C’ untuk jumlah data 6000

Page 41: pembuatan komposer lagu pada pc

30

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000

Jumlah Data

Ampl

itudo

Gambar 4.7 Sinyal nada C’ untuk jumlah data 7000

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000

Jumlah Data

Ampl

itudo

Gambar 4.8 Sinyal nada C’ untuk jumlah data 8000

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000

Jumlah Data

Ampl

itudo

Gambar 4.9 Sinyal nada C’ untuk jumlah data 9000

Page 42: pembuatan komposer lagu pada pc

31

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Ampl

itudo

Gambar 4.10 Sinyal nada C’ untuk jumlah data 10000

4.2.2 Pengujian Penggabungan Nada-Nada Tunggal

Setelah pengujian pembangkitan nada-nada tunggal selanjutnya dilakukan pengujian penggabungan nada-nada tunggal yang telah dibangkitkan. Pengujian penggabungan nada-nada tunggal akan dilakukan dengan menggunakan jumlah data 1000, 5000, dan 10000. pengujian dilakukan pada beberapa lagu.

1. Jumlah Data 1000

b. Untuk lagu Indonesia Raya Nada-nada tunggal dari lagu Indonesia Raya yang akan diinputkan dalam pengujian ini adalah sebagai berikut :

NO Nada Sinyal

1 C’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah data

Am

plitu

do

2 C’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah data

Am

plitu

do

Page 43: pembuatan komposer lagu pada pc

32

3 F’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Ampl

itudo

4 A’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Am

plitu

do

5 A’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Am

plitu

do

6 A’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Am

plitu

do

7 A’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Ampl

itudo

8 A’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Am

plitu

do

Page 44: pembuatan komposer lagu pada pc

33

9 G’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Ampl

itudo

10 E’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Am

plitu

do

11 E’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Am

plitu

do

12 E’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Am

plitu

do

Sinyal yang diperoleh dari nada-nada reff lagu Indonesia Raya yang telah digabung dengan jumlah data 1000 adalah sebagai berikut :

-15

-10

-5

0

5

10

15

0 5000 10000 15000

Jumlah Data

Am

plitu

do

Gambar 4.11 Sinyal lagu Indonesia Raya dengan jumlah data 1000

Page 45: pembuatan komposer lagu pada pc

34

b. Untuk lagu Gugur Bunga Nada-nada tunggal dari lagu Gugur Bunga yang akan diinputkan dalam pengujian ini adalah sebagai berikut :

NO Nada Sinyal

1 E’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Am

plitu

do

2 G’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Ampl

itudo

3 F’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Ampl

itudo

4 E’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Am

plitu

do

5 F’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Ampl

itudo

Page 46: pembuatan komposer lagu pada pc

35

6 D’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Ampl

itudo

7 F’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Ampl

itudo

8 E’

-15

-10

-5

0

5

10

15

0 200 400 600 800 1000 1200

Jumlah Data

Am

plitu

do

Bentuk sinyal yang dihasilkan dari pengujian dari lagu Gugur Bunga dengan jumlah data 1000 adalah sebagai berikut :

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000

Jumlah Data

Ampl

itudo

Gambar 4.12 Sinyal lagu Gugur Bunga dengan jumlah data 1000 2. Jumlah Data 5000

a. Untuk lagu Indonesia Raya Nada-nada tunggal dari lagu Indonesia Raya yang akan diinputkan dalam pengujian ini adalah sebagai berikut :

Page 47: pembuatan komposer lagu pada pc

36

NO Nada Sinyal

1 C’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

2 C’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

3 F’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

4 A’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

5 A’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

6 A’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

7 A’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

Page 48: pembuatan komposer lagu pada pc

37

8 A’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

9 G’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

10 E’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

11 E’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

12 E’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

Sinyal yang diperoleh dari nada-nada reff lagu Indonesia Raya yang telah digabung dengan jumlah data 5000 adalah sebagai berikut :

Page 49: pembuatan komposer lagu pada pc

38

-15

-10

-5

0

5

10

15

0 10000 20000 30000 40000

Jumlah Data

Ampl

itudo

Gambar 4.12 Sinyal lagu Indonesia Raya dengan jumlah data 5000

b. Untuk lagu Gugur Bunga Nada-nada tunggal dari lagu Gugur Bunga yang akan diinputkan dalam pengujian ini adalah sebagai berikut :

NO Nada Sinyal

1 E’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

2 G’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

3 F’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

4 E’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

Page 50: pembuatan komposer lagu pada pc

39

5 F’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

6 D’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

7 F’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

8 E’

-15

-10

-5

0

5

10

15

0 1000 2000 3000 4000 5000 6000

Jumlah Data

Ampl

itudo

Bentuk sinyal yang dihasilkan dari pengujian dari lagu Gugur Bunga dengan jumlah data 5000 adalah sebagai berikut :

-15

-10

-5

0

5

10

15

0 10000 20000 30000 40000

Jumlah Data

Ampl

itudo

Gambar 4.13 Sinyal lagu Gugur Bunga dengan jumlah data 5000

Page 51: pembuatan komposer lagu pada pc

40

3. Jumlah Data 10000 a. Untuk lagu Indonesia Raya

Nada-nada tunggal dari lagu Indonesia Raya yang akan diinputkan dalam pengujian ini adalah sebagai berikut :

NO Nada Sinyal

1 C’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Am

plitu

do

2 C’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Am

plitu

do

3 F’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Am

plitu

do

4 A’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Ampl

itudo

5 A’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Ampl

itudo

6 A’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Ampl

itudo

Page 52: pembuatan komposer lagu pada pc

41

7 A’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Ampl

itudo

8 A’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Ampl

itudo

9 G’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Ampl

itudo

10 E’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Am

plitu

do

11 E’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Am

plitu

do

12 E’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Ampl

itudo

Page 53: pembuatan komposer lagu pada pc

42

Sinyal yang diperoleh dari nada-nada reff lagu Indonesia Raya yang telah digabung dengan jumlah data 10000 adalah sebagai berikut :

-15

-10

-5

0

5

10

15

0 10000 20000 30000 40000

Jumlah Data

Am

plitu

do

Gambar 4.14 Sinyal lagu Indonesia Raya dengan jumlah data 10000

b. Untuk lagu Gugur Bunga Nada-nada tunggal dari lagu Gugur Bunga yang akan diinputkan dalam pengujian ini adalah sebagai berikut :

NO Nada Sinyal

1 E’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Am

plitu

do

2 G’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Ampl

itudo

Page 54: pembuatan komposer lagu pada pc

43

3 F’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Ampl

itudo

4 E’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Am

plitu

do

5 F’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Ampl

itudo

6 D’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Am

plitu

do

7 F’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Ampl

itudo

8 E’

-15

-10

-5

0

5

10

15

0 2000 4000 6000 8000 10000 12000

Jumlah Data

Am

plitu

do

Bentuk sinyal yang dihasilkan dari pengujian dari lagu Gugur Bunga dengan jumlah data 10000 adalah sebagai berikut :

Page 55: pembuatan komposer lagu pada pc

44

-15

-10

-5

0

5

10

15

0 10000 20000 30000 40000

Jumlah Data

Amplitu

do

Gambar 4.15 Sinyal lagu Gugur Bunga dengan jumlah data 10000

4.3 ANALISA HASIL PENGUJIAN 4.3.1 Analisa Pengujian Nada-Nada Tunggal dengan Jumlah Data

Setelah diadakan pengujian nada-nada tunggal dengan merubah

jumlah datanya dapat diketahui bahwa jumlah data akan mempengaruhi panjang pendeknya nada. Semakin besar jumlah data yang digunakan maka nada yang dihasilkan akan semakin panjang. Semakin besar jumlah data juga akan mempengaruhi sinyal yang dihasilkan. Sinyal nada yang dihasilkan akan semakin rapat. Hal ini dikarenakan data yang dihasilkan dalam file .txt semakin banyak tetapi skala yang digunakan untuk semua sinyal tetap. Sehingga bentuk sinyal yang dihasilkan hanya terlihat seperti kotak.

4.3.2 Analisa Pengujian Penggabungan Nada-Nada Tunggal

Seperti halnya yang diketahui di atas, bahwa panjang pendeknya

nada dipengaruhi oleh jumlah data yang digunakan. Hal ini akan menyebabkan banyak sedikitnya nada yang bisa tertampung pada memori Tcl/Tk. Misalnya saja, bila kita menggunakan jumlah data 1000 maka nada yang bisa dihasilkan adalah 60 nada. Sebaliknya apabila kita menggunakan jumlah data 10000 maka nada yang bisa tertampung hanya 6 nada saja. Hal ini dikarenakan memori Tcl/Tk terbatas. Memori Tcl/Tk maksimal yang bisa digunakan dalam proyek akhir ini adalah 60000. Jadi, jika kita menggunakan kecil yang semakin kecil maka daya tampungnya akan semakin besar. Hal inilah yang menyebabkan kendala dalam proyek akhir ini tidak bisa menghasilkan satu lagu utuh. Untuk

Page 56: pembuatan komposer lagu pada pc

45

mengatasi hal tersebut adalah dengan penambahan memori, yaitu dengan cara menambahkan perintah calloc pada program Visual C++, sehingga jumlah data pada Tcl/Tk dapat ditambah. Dengan demikian, durasi waktunya bisa diatur dari penambahan perintah tersebut.

Selain jumlah data mempengaruhi panjang pendeknya nada, juga akan mempengaruhi kualitas gabungan nada-nada yang telah dihasilkan. Jika kita menggunakan jumlah data yang kecil maka tempo gabungan nada yang dihasilkan sangat cepat. Jika sebuah lagu yang dihasilkan sangat cepat maka akan tidak enak didengar. Sebaliknya jika jumlah data yang digunakan itu besar maka lagu yang dihasilkan akan terdengar lamban. Lagu seperti ini juga kurang enak didengar. Dalam pengujian penggabungan nada-nada tunggal dalam proyek akhir ini, jumlah data yang paling sesuai digunakan adalah jumlah data 10000. Akan tetapi penggunaan jumlah data juga harus disesuaikan dengan tempo yang digunakan dalam sebuah lagu.

Pada proyek akhir ini dilakukan pengujian terhadap 2 lagu yaitu lagu Indonesia Raya dan Gugur Bunga. Indonesia Raya merupakan lagu dengan tempo yang lebih cepat daripada lagu Gugur Bunga. Oleh karena itu, lagu Indonesia Raya memerlukan jumlah data yang lebih kecil daripada lagu Gugur Bunga. Nilai jumlah data yang sangat kecil akan menghasilkan kualitas lagu yang kurang baik karena temponya sangat cepat, sehingga suaranya tidak seperti lagu yang diharapkan.

Dari pengujian yang dilakukan dapat diketahui bahwa kesalahan terjadi pada pengujian penggabungan nada-nada tunggal adalah terdapat pada sinyal yang dihasilkan pada gabungan nada-nada dengan jumlah data 5000 dan 10000. sinyalnya terpotong hanya sampai jumlah data ke 30000.

Page 57: pembuatan komposer lagu pada pc

46

*****Halaman ini sengaja dikosongkan*****

Page 58: pembuatan komposer lagu pada pc

BAB V PENUTUP

Pada bab kelima ini merupakan akhir dari penulisan Proyek Akhir.

Dari berbagai uraian dan pernyataan dalam bab-bab sebelumnya, ada beberapa hal yang perlu dicatat sebagai kesimpulan dan juga saran-saran untuk perbaikan dan pengembangan perangkat lunak ini di masa yang akan datang.

5.1 KESIMPULAN

Berdasarkan uji coba yang dilakukan, hasil dari komposer ini akan menghasilkan intro dari sebuah lagu berdasarkan nada-nada yang telah ditentukan, yaitu nada-nada yang telah ditekan pada tampilan piano pada komputer yang telah digabung dan diputar pada Windows Media Player dalam bentuk WAV.

Kegagalan dalam proyek akhir ini adalah belum bisa membuat lagu dengan ketukan.

5.2 SARAN

Dalam pembuatan intro lagu dengan input nada-nada tunggal lebih mudah menggunakan program Visual C++ dan program Snack-Tcl/Tk dengan menentukan formulasi dari nada-nada tunggal tersebut beserta dengan frekuensi yang digunakan.

Dengan penggunaan nada-nada tunggal mungkin di masa yang akan datang akan lebih dikembangkan dengan menggunakan atau menambahkan fitur-fitur yang lainnya, agar Proyek Akhir yang akan dibuat sesuai dengan yang diharapkan dan hasil yang memuaskan.

47

Page 59: pembuatan komposer lagu pada pc

48

*****Halaman ini sengaja dikosongkan*****

Page 60: pembuatan komposer lagu pada pc

DAFTAR PUSTAKA

[1] Ratnawati Linda, “Pembuatan 10 Channel Digital Audio

Equalizer dan Digital Audio Effects Berbasis Perangkat Lunak” , Proyek Akhir PENS-ITS. 2004

[2] http://wiryana.pandu.org/artikel/dsp_02/[3] http://en.wikipedia.org/wiki/Composer [4] Bima Sena Bayu Dewantara, “Pelatihan Digital Signal

Processing”, PENS – ITS. 2004 [5] Dwinardani Shinta, “Perangkat Lunak Untuk kompresi Audio

Dengan Differential PCM”, Proyek Akhir PENS-ITS. 2005 [6] Syarif Iwan, Sigit Riyanto, Helen Afrida, Sa’adah Umi, Muso

Toru, “Pemrograman 2 (Pemrograman C)” .PENS-ITS.2001 [7] http://library.thinkquest.org/18160/frequency.htm [8] Lynn Ashley, “Equally Tempered Scale”,

http://ashley.net/music/notefreq.htm, 2001 [9] Ds. Soewito M, “Teknik Termudah Menulis dan Membaca Not

Balok”, Bogor.1993

49

Page 61: pembuatan komposer lagu pada pc

50

*****Halaman ini sengaja dikosongkan*****

Page 62: pembuatan komposer lagu pada pc

LAMPIRAN A

Listing Program Pada Visual C++ #include "snack.h" #include "math.h" struct data { float x[50000]; }; struct data dat; int C(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; float frek; float x[50000]; frek=130.8; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; }

51

Page 63: pembuatan komposer lagu pada pc

52

int D(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=146.8; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int E(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; float frek; float x[50000]; frek=164.8; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else

Page 64: pembuatan komposer lagu pada pc

53

gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int F(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=174.6; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung);

Page 65: pembuatan komposer lagu pada pc

54

return TCL_OK; } int G(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=196.0; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int A(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=220.0;

Page 66: pembuatan komposer lagu pada pc

55

if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int B(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=246.9; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]);

Page 67: pembuatan komposer lagu pada pc

56

Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int C1(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=261.7; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int D1(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000];

Page 68: pembuatan komposer lagu pada pc

57

frek=293.7; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int E1(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=329.7; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) {

Page 69: pembuatan komposer lagu pada pc

58

x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int F1(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=349.2; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int G1(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung;

Page 70: pembuatan komposer lagu pada pc

59

Sound *sound; int i; int frek; float x[50000]; frek=392.0; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int A1(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=440.0; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */

Page 71: pembuatan komposer lagu pada pc

60

sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int B1(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=493.9; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; }

Page 72: pembuatan komposer lagu pada pc

61

int C2(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=523.3; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int D2(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=587.4; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else

Page 73: pembuatan komposer lagu pada pc

62

gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int E2(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=659.3; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung);

Page 74: pembuatan komposer lagu pada pc

63

return TCL_OK; } int F2(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=698.5; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int G2(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=784.0;

Page 75: pembuatan komposer lagu pada pc

64

if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int A2(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=880.0; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]);

Page 76: pembuatan komposer lagu pada pc

65

Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int B2(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=987.7; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int C3(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000];

Page 77: pembuatan komposer lagu pada pc

66

frek=1046.6; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int D3(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=1174.8; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) {

Page 78: pembuatan komposer lagu pada pc

67

x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int E3(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=1318.6; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int F3(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung;

Page 79: pembuatan komposer lagu pada pc

68

Sound *sound; int i; int frek; float x[50000]; frek=1397.0; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int G3(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=1568.0; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */

Page 80: pembuatan komposer lagu pada pc

69

sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int A3(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=1760.0; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; }

Page 81: pembuatan komposer lagu pada pc

70

int B3(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=1975.5; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int C4(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=2093.2; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else

Page 82: pembuatan komposer lagu pada pc

71

gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Nol(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=0; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung);

Page 83: pembuatan komposer lagu pada pc

72

return TCL_OK; } int Cis(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=138.6; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Dis(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=155.6;

Page 84: pembuatan komposer lagu pada pc

73

if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Fis(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=185.0; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]);

Page 85: pembuatan komposer lagu pada pc

74

Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Gis(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=207.6; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Ais(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000];

Page 86: pembuatan komposer lagu pada pc

75

frek=233.1; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Cis1(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=277.2; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) {

Page 87: pembuatan komposer lagu pada pc

76

x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Dis1(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=311.2; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Fis1(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung;

Page 88: pembuatan komposer lagu pada pc

77

Sound *sound; int i; int frek; float x[50000]; frek=370.0; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Gis1(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=415.3; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */

Page 89: pembuatan komposer lagu pada pc

78

sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Ais1(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=466.2; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; }

Page 90: pembuatan komposer lagu pada pc

79

int Cis2(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=554.4; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Dis2(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=622.3; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else

Page 91: pembuatan komposer lagu pada pc

80

gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Fis2(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=740.0; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung);

Page 92: pembuatan komposer lagu pada pc

81

return TCL_OK; } int Gis2(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=830.6; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Ais2(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=932.3;

Page 93: pembuatan komposer lagu pada pc

82

if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Cis3(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=1108.8; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]);

Page 94: pembuatan komposer lagu pada pc

83

Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Dis3(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=1244.6; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Fis3(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000];

Page 95: pembuatan komposer lagu pada pc

84

frek=1480.0; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Gis3(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=1661.2; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) {

Page 96: pembuatan komposer lagu pada pc

85

x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Ais3(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; int frek; float x[50000]; frek=1864.6; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Cis4(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung;

Page 97: pembuatan komposer lagu pada pc

86

Sound *sound; int i; int frek; float x[50000]; frek=2217.7; if(fopen("gabungan.txt","r")==NULL) gabung=fopen("gabungan.txt","w"); else gabung=fopen("gabungan.txt","a"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) { x[i]=20*sin(2*3.14*frek/32000*i)*cos(2*3.14*frek/32000*i); fprintf(gabung,"%f\n",x[i]); Snack_SetSample(sound,0, i, 1000*x[i]); } fclose(gabung); return TCL_OK; } int Gabung(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { FILE *gabung; Sound *sound; int i; float x[50000]; gabung=fopen("gabungan.txt","r"); /* Get the sound structure for this sound. */ sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) fscanf(gabung,"%f",&dat.x[i]); fclose(gabung); return TCL_OK; }

Page 98: pembuatan komposer lagu pada pc

87

int Baca(ClientData cdata, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { int i; Sound *sound; sound = Snack_GetSound(interp, Tcl_GetStringFromObj(objv[0], NULL)); for (i = 0; i < Snack_GetLength(sound); i++) Snack_SetSample(sound,0, i, 1000*dat.x[i]); return TCL_OK; } /* Initialize the square package and create a new sound command 'square'. The syntax is: sndName square */ EXPORT(int, Square_Init)(Tcl_Interp *interp) { #ifdef USE_TCL_STUBS if (Tcl_InitStubs(interp, "8", 0) == NULL) { return TCL_ERROR; } #endif #ifdef USE_TK_STUBS if (Tk_InitStubs(interp, "8", 0) == NULL) { return TCL_ERROR; } #endif #ifdef USE_SNACK_STUBS if (Snack_InitStubs(interp, "2", 0) == NULL) { return TCL_ERROR; } #endif if (Tcl_PkgProvide(interp, "square", "1.0") != TCL_OK) {

Page 99: pembuatan komposer lagu pada pc

88

return TCL_ERROR; } Snack_AddSubCmd(SNACK_SOUND_CMD, "C", (Snack_CmdProc *) C, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "D", (Snack_CmdProc *) D, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "E", (Snack_CmdProc *) E, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "F", (Snack_CmdProc *) F, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "G", (Snack_CmdProc *) G, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "A", (Snack_CmdProc *) A, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "B", (Snack_CmdProc *) B, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "C1", (Snack_CmdProc *) C1, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "D1", (Snack_CmdProc *) D1, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "E1", (Snack_CmdProc *) E1, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "F1", (Snack_CmdProc *) F1, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "G1", (Snack_CmdProc *) G1, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "A1", (Snack_CmdProc *) A1, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "B1", (Snack_CmdProc *) B1, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "C2", (Snack_CmdProc *) C2, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "D2", (Snack_CmdProc *) D2, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "E2", (Snack_CmdProc *) E2, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "F2", (Snack_CmdProc *) F2, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "G2", (Snack_CmdProc *) G2, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "A2", (Snack_CmdProc *) A2, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "B2", (Snack_CmdProc *) B2, NULL);

Page 100: pembuatan komposer lagu pada pc

89

Snack_AddSubCmd(SNACK_SOUND_CMD, "C3", (Snack_CmdProc *) C3, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "D3", (Snack_CmdProc *) D3, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "E3", (Snack_CmdProc *) E3, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "F3", (Snack_CmdProc *) F3, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "G3", (Snack_CmdProc *) G3, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "A3", (Snack_CmdProc *) A3, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "B3", (Snack_CmdProc *) B3, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "C4", (Snack_CmdProc *) C4, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Nol", (Snack_CmdProc *) Nol, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Cis", (Snack_CmdProc *) Cis, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Dis", (Snack_CmdProc *) Dis, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Fis", (Snack_CmdProc *) Fis, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Gis", (Snack_CmdProc *) Gis, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Ais", (Snack_CmdProc *) Ais, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Cis1", (Snack_CmdProc *) Cis1, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Dis1", (Snack_CmdProc *) Dis1, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Fis1", (Snack_CmdProc *) Fis1, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Gis1", (Snack_CmdProc *) Gis1, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Ais1", (Snack_CmdProc *) Ais1, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Cis2", (Snack_CmdProc *) Cis2, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Dis2", (Snack_CmdProc *) Dis2, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Fis2", (Snack_CmdProc *) Fis2, NULL);

Page 101: pembuatan komposer lagu pada pc

90

Snack_AddSubCmd(SNACK_SOUND_CMD, "Gis2", (Snack_CmdProc *) Gis2, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Ais2", (Snack_CmdProc *) Ais2, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Cis3", (Snack_CmdProc *) Cis3, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Dis3", (Snack_CmdProc *) Dis3, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Fis3", (Snack_CmdProc *) Fis3, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Gis3", (Snack_CmdProc *) Gis3, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Ais3", (Snack_CmdProc *) Ais3, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "Cis4", (Snack_CmdProc *) Cis4, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "gabung", (Snack_CmdProc *) Gabung, NULL); Snack_AddSubCmd(SNACK_SOUND_CMD, "baca", (Snack_CmdProc *) Baca, NULL); return TCL_OK; }

Page 102: pembuatan komposer lagu pada pc

LAMPIRAN B Listing Program Pada Tcl/Tk #/usr/local/bin/wish # 'info sharedlibext' returns .dll on Windows and .so on most Unix systems load square set f [snack::filter generator 440.0 30000 0.0 sine 5000] snack::sound s snack::sound u wm resizable . 0 0 proc Beep {freq} { $::f configure $freq s stop s play -filter $::f } pack [frame .a] -side left u length 60000 button .agabungan -text Gabung -command {u gabung;u baca;u write hasil.wav} pack .agabungan -side bottom -pady 5 label .a1 -text "Created By DEVI DYAH PALUPI" -foreground darkgoldenrod pack .a1 -side bottom -before .agabungan -padx 5 label .a2 -text "7203.030.015" -foreground darkgoldenrod pack .a2 -side bottom -before .a1 -padx 5 label .a3 -text "Jurusan Telekomunikasi" -foreground darkgoldenrod pack .a3 -side bottom -before .a2 -padx 5 label .a4 -text "Poleteknik Elektronika Negeri Surabaya (PENS)" -foreground darkgoldenrod pack .a4 -side bottom -before .a3 -padx 5

91

Page 103: pembuatan komposer lagu pada pc

92

label .a5 -text "Institut Teknolologi Sepuluh Nopember (ITS)" -foreground darkgoldenrod pack .a5 -side bottom -before .a4 -padx 5 label .a6 -text "Surabaya 2006" -foreground darkgoldenrod pack .a6 -side bottom -before .a5 -padx 5 pack [frame .b] s length 10000 pack [button .b1 -text C -height 10 -width 3 -background white -command {s C;s play}] -side left -pady 10 pack [button .b2 -text D -height 10 -width 3 -background white -command {s D;s play}] -side left -pady 10 pack [button .b3 -text E -height 10 -width 3 -background white -command {s E;s play}] -side left -pady 10 pack [button .b4 -text F -height 10 -width 3 -background white -command {s F;s play}] -side left -pady 10 pack [button .b5 -text G -height 10 -width 3 -background white -command {s G;s play}] -side left -pady 10 pack [button .b6 -text A -height 10 -width 3 -background white -command {s A;s play}] -side left -pady 10 pack [button .b7 -text B -height 10 -width 3 -background white -command {s B;s play}] -side left -pady 10 pack [button .b8 -text C' -height 10 -width 3 -background white -command {s C1;s play}] -side left -pady 10 pack [button .b9 -text D' -height 10 -width 3 -background white -command {s D1;s play}] -side left -pady 10 pack [button .b10 -text E' -height 10 -width 3 -background white -command {s E1;s play}] -side left -pady 10 pack [button .b11 -text F' -height 10 -width 3 -background white -command {s F1;s play}] -side left -pady 10

Page 104: pembuatan komposer lagu pada pc

93

pack [button .b12 -text G' -height 10 -width 3 -background white -command {s G1;s play}] -side left -pady 10 pack [button .b13 -text A' -height 10 -width 3 -background white -command {s A1;s play}] -side left -pady 10 pack [button .b14 -text B' -height 10 -width 3 -background white -command {s B1;s play}] -side left -pady 10 pack [button .b15 -text C'' -height 10 -width 3 -background white -command {s C2;s play}] -side left -pady 10 pack [button .b16 -text D'' -height 10 -width 3 -background white -command {s D2;s play}] -side left -pady 10 pack [button .b17 -text E'' -height 10 -width 3 -background white -command {s E2;s play}] -side left -pady 10 pack [button .b18 -text F'' -height 10 -width 3 -background white -command {s F2;s play}] -side left -pady 10 pack [button .b19 -text G'' -height 10 -width 3 -background white -command {s G2;s play}] -side left -pady 10 pack [button .b20 -text A'' -height 10 -width 3 -background white -command {s A2;s play}] -side left -pady 10 pack [button .b21 -text B'' -height 10 -width 3 -background white -command {s B2;s play}] -side left -pady 10 pack [button .b22 -text C''' -height 10 -width 3 -background white -command {s C3;s play}] -side left -pady 10 pack [button .b23 -text D''' -height 10 -width 3 -background white -command {s D3;s play}] -side left -pady 10 pack [button .b24 -text E''' -height 10 -width 3 -background white -command {s E3;s play}] -side left -pady 10 pack [button .b25 -text F''' -height 10 -width 3 -background white -command {s F3;s play}] -side left -pady 10 pack [button .b26 -text G''' -height 10 -width 3 -background white -command {s G3;s play}] -side left -pady 10

Page 105: pembuatan komposer lagu pada pc

94

pack [button .b27 -text A''' -height 10 -width 3 -background white -command {s A3;s play}] -side left -pady 10 pack [button .b28 -text B''' -height 10 -width 3 -background white -command {s B3;s play}] -side left -pady 10 pack [button .b29 -text C'''' -height 10 -width 3 -background white -command {s C4;s play}] -side left -pady 10 pack [button .b52 -text nol -height 10 -width 3 -background grey -command {s Nol;s play}] -side left -pady 10 pack [button .b30 -text Cis -height 4 -width 1 -background black -command {s Cis;s play}] -side left -pady 10 pack [button .b31 -text Dis -height 4 -width 1 -background black -command {s Dis;s play}] -side left -pady 10 pack [button .b32 -text Fis -height 4 -width 1 -background black -command {s Fis;s play}] -side left -pady 10 pack [button .b33 -text Gis -height 4 -width 1 -background black -command {s Gis;s play}] -side left -pady 10 pack [button .b34 -text Ais -height 4 -width 1 -background black -command {s Ais;s play}] -side left -pady 10 pack [button .b35 -text Cis' -height 4 -width 1 -background black -command {s Cis1;s play}] -side left -pady 10 pack [button .b36 -text Dis' -height 4 -width 1 -background black -command {s Dis1;s play}] -side left -pady 10 pack [button .b37 -text Fis' -height 4 -width 1 -background black -command {s Fis1;s play}] -side left -pady 10 pack [button .b38 -text Gis' -height 4 -width 1 -background black -command {s Gis1;s play}] -side left -pady 10 pack [button .b39 -text Ais' -height 4 -width 1 -background black -command {s Ais1;s play}] -side left -pady 10

Page 106: pembuatan komposer lagu pada pc

95

pack [button .b40 -text Cis'' -height 4 -width 1 -background black -command {s Cis2;s play}] -side left -pady 10 pack [button .b41 -text Dis'' -height 4 -width 1 -background black -command {s Dis2;s play}] -side left -pady 10 pack [button .b42 -text Fis'' -height 4 -width 1 -background black -command {s Fis2;s play}] -side left -pady 10 pack [button .b43 -text Gis'' -height 4 -width 1 -background black -command {s Gis2;s play}] -side left -pady 10 pack [button .b44 -text Ais'' -height 4 -width 1 -background black -command {s Ais2;s play}] -side left -pady 10 pack [button .b45 -text Cis''' -height 4 -width 1 -background black -command {s Cis3;s play}] -side left -pady 10 pack [button .b46 -text Dis''' -height 4 -width 1 -background black -command {s Dis3;s play}] -side left -pady 10 pack [button .b47 -text Fis''' -height 4 -width 1 -background black -command {s Fis3;s play}] -side left -pady 10 pack [button .b48 -text Gis''' -height 4 -width 1 -background black -command {s Gis3;s play}] -side left -pady 10 pack [button .b49 -text Ais''' -height 4 -width 1 -background black -command {s Ais3;s play}] -side left -pady 10 pack [button .b50 -text Cis'''' -height 4 -width 1 -background black -command {s Cis4;s play}] -side left -pady 10 place .b30 -relx 0.023 -rely 0.04 place .b31 -relx 0.056 -rely 0.04 place .b32 -relx 0.123 -rely 0.04 place .b33 -relx 0.156 -rely 0.04 place .b34 -relx 0.190 -rely 0.04 place .b35 -relx 0.255 -rely 0.04 place .b36 -relx 0.290 -rely 0.04 place .b37 -relx 0.355 -rely 0.04 place .b38 -relx 0.390 -rely 0.04 place .b39 -relx 0.423 -rely 0.04 place .b40 -relx 0.488 -rely 0.04

Page 107: pembuatan komposer lagu pada pc

96

place .b41 -relx 0.523 -rely 0.04 place .b42 -relx 0.588 -rely 0.04 place .b43 -relx 0.623 -rely 0.04 place .b44 -relx 0.656 -rely 0.04 place .b45 -relx 0.723 -rely 0.04 place .b46 -relx 0.756 -rely 0.04 place .b47 -relx 0.822 -rely 0.04 place .b48 -relx 0.855 -rely 0.04 place .b49 -relx 0.888 -rely 0.04 place .b50 -relx 0.955 -rely 0.04

Page 108: pembuatan komposer lagu pada pc

LAMPIRAN C Tampilan :

97

Page 109: pembuatan komposer lagu pada pc

98

*****Halaman ini sengaja dikosongkan*****

Page 110: pembuatan komposer lagu pada pc

LAMPIRAN D Nilai nada C’ dengan jumlah data 1000 0.000000 1.025367 2.039925 3.032980 3.994062 4.913040 5.780227 6.586482 7.323304 7.982928 8.558399 9.043651 9.433570 9.724043 9.912010 9.995489 9.973600 9.846574 9.615749 9.283559 8.853506 8.330124 7.718929 7.026364 6.259730 5.427110 4.537279 3.599618 2.624011 1.620743 0.600390 -0.426292 -1.448480 -2.455399 -3.436434

-4.381244 -5.279869 -6.122835 -6.901258 -7.606930 -8.232414 -8.771115 -9.217354 -9.566429 -9.814658 -9.959426 -9.999206 -9.933578 -9.763235 -9.489972 -9.116671 -8.647265 -8.086704 -7.440896 -6.716649 -5.921599 -5.064125 -4.153268 -3.198629 -2.210272 -1.198614 -0.174322 0.851808 1.868959 2.866408 3.833641 4.760461 5.637098 6.454312 7.203487

7.876726 8.466932 8.967884 9.374300 9.681896 9.887430 9.988735 9.984743 9.875496 9.662147 9.346943 8.933207 8.425302 7.828581 7.149335 6.394723 5.572701 4.691934 3.761707 2.791826 1.792514 0.774306 -0.252064 -1.275777 -2.286041 -3.272206 -4.223878 -5.131023 -5.984080 -6.774054 -7.492620 -8.132202 -8.686057 -9.148349 -9.514202

-9.779760 -9.942225 -9.999883 -9.952127 -9.799460 -9.543491 -9.186919 -8.733503 -8.188022 -7.556226 -6.844776 -6.061171 -5.213672 -4.311213 -3.363307 -2.379946 -1.371497 -0.348591 0.677991 1.697425 2.698966 3.672055 4.606436 5.492257 6.320181 7.081481 7.768131 8.372892 8.889391 9.312181 9.636806 9.859845 9.978945 9.992852 9.901418

9.705608 9.407485 9.010194 8.517920 7.935855 7.270133 6.527773 5.716599 4.845164 3.922653 2.958792 1.963740 0.947987 -0.077759 -1.102685 -2.115988 -3.106984 -4.065228 -4.980618 -5.843505 -6.644792 -7.376033 -8.029519 -8.598361 -9.076562 -9.459083 -9.741890 -9.922003 -9.997522 -9.967652 -9.832707 -9.594110 -9.254376 -8.817087 -8.286851

99

Page 111: pembuatan komposer lagu pada pc

100

0.000000 1.025367 2.039925 3.032980 3.994062 4.913040 5.780227 6.586482 7.323304 7.982928 8.558399 9.043651 9.433570 9.724043 9.912010 9.995489 9.973600 9.846574 9.615749 9.283559 8.853506 8.330124 7.718929 7.026364 6.259730 5.427110 4.537279 3.599618 2.624011 1.620743 0.600390 -0.426292 -1.448480 -2.455399 -3.436434 -4.381244 -5.279869 -6.122835 -6.901258 -7.606930

-8.232414 -8.771115 -9.217354 -9.566429 -9.814658 -9.959426 -9.999206 -9.933578 -9.763235 -9.489972 -9.116671 -8.647265 -8.086704 -7.440896 -6.716649 -5.921599 -5.064125 -4.153268 -3.198629 -2.210272 -1.198614 -0.174322 0.851808 1.868959 2.866408 3.833641 4.760461 5.637098 6.454312 7.203487 7.876726 8.466932 8.967884 9.374300 9.681896 9.887430 9.988735 9.984743 9.875496 9.662147

9.346943 8.933207 8.425302 7.828581 7.149335 6.394723 5.572701 4.691934 3.761707 2.791826 1.792514 0.774306 -0.252064 -1.275777 -2.286041 -3.272206 -4.223878 -5.131023 -5.984080 -6.774054 -7.492620 -8.132202 -8.686057 -9.148349 -9.514202 -9.779760 -9.942225 -9.999883 -9.952127 -9.799460 -9.543491 -9.186919 -8.733503 -8.188022 -7.556226 -6.844776 -6.061171 -5.213672 -4.311213 -3.363307

-2.379946 -1.371497 -0.348591 0.677991 1.697425 2.698966 3.672055 4.606436 5.492257 6.320181 7.081481 7.768131 8.372892 8.889391 9.312181 9.636806 9.859845 9.978945 9.992852 9.901418 9.705608 9.407485 9.010194 8.517920 7.935855 7.270133 6.527773 5.716599 4.845164 3.922653 2.958792 1.963740 0.947987 -0.077759 -1.102685 -2.115988 -3.106984 -4.065228 -4.980618 -5.843505

-6.644792 -7.376033 -8.029519 -8.598361 -9.076562 -9.459083 -9.741890 -9.922003 -9.997522 -9.967652 -9.832707 -9.594110 -9.254376 -8.817087 -8.286851 7.310482 7.971585 8.548654 9.035608 9.427312 9.719637 9.909503 9.994906 9.974948 9.849839 9.620896 9.290535 8.862236

99 8.340516 7.730874 7.039736 6.274389 5.442900 4.554034 3.617161 2.642158 1.639303 0.619166 -0.407497 -1.429865

Page 112: pembuatan komposer lagu pada pc

101

-2.437160 -3.418763 -4.364327 -5.263884 -6.107952 -6.887632 -7.594706 -8.221720 -8.762065 -9.210043 -9.560933 -9.811036 -9.957716 -9.999425 -9.935725 -9.767287 -9.495886 -9.124385 -8.656697 -8.097755 -7.453450 -6.730574 -5.936747 -5.080337 -4.170373 -3.216446 -2.228613 -1.217288 -0.193129 0.833064 1.850477 2.848382 3.816260 4.743910 5.621551 6.439933 7.190427 7.865123 8.456908 8.959545

9.367734 9.677172 9.884598 9.987825 9.985764 9.878438 9.666978 9.353613 8.941646 8.435420 7.840272 7.162475 6.409174 5.588311 4.708538 3.779130 2.809884 1.811017 0.793059 -0.233258 -1.257117 -2.267724 -3.254425 -4.206820 -5.114868 -5.968998 -6.760205 -7.480149 -8.121240 -8.676721 -9.140736 -9.508393 -9.775817 -9.940189 -9.999775 -9.953948 -9.803191 -9.549093 -9.194333 -8.742650

-8.198806 -7.568534 -6.858477 -6.076122 -5.229715 -4.328178 -3.381016 -2.398212 -1.390128 -0.367389 0.659222 1.678884 2.680848 3.654552 4.589731 5.476527 6.305592 7.068187 7.756271 8.362593 8.880759 9.305309 9.631766 9.856689 9.977707 9.993545 9.904035 9.710121 9.413848 9.018337 8.527760 7.947286 7.283036 6.542011 5.732023 4.861611 3.939950 2.976755 1.982181 0.966712

-0.058949 -1.083987 -2.097599 -3.089099 -4.048035 -4.964298 -5.828230 -6.630723 -7.363318 -8.018292 -8.588741 -9.068651 -9.452964 -9.737627 -9.919641 -9.997086 -9.969146 -9.836116 -9.599398 -9.261487 -8.825946 -8.297365 -7.681318 -6.984297 -6.213651 -5.377503 -4.484668 -3.544558 -2.567082 -1.562546 -0.541538 0.485179 1.506782 2.512500 3.491733 4.434158 5.329839 6.169336 6.943798 7.645062

8.265735 8.799275 9.240056 9.583432 9.825785 9.964558 9.998289 9.926623 9.750314 9.471222 9.092289 8.617508 8.051886 7.401384 6.672860 5.873994 5.013207 4.099572 3.142722 2.152743 1.140070 0.115379 -0.910528 -1.926837 -2.922833 -3.888019 -4.812219 -5.685690 -6.499226 -7.244249 -7.912907 -8.498151 -8.993810 -9.394661 -9.696478 -9.896078 -9.991359 -9.981314 -9.866052 -9.646785

Page 113: pembuatan komposer lagu pada pc

102

-9.325827 -8.906560 -8.393403 -7.791767 -7.107994 -6.349292 -5.523658 -4.639796 -3.707023 -2.735172 -1.734489 -0.715521 0.310989 1.334221 2.343389 3.327853 4.277236 5.181531 6.031205 6.817300 7.531530 8.166366 8.715116 9.171995 9.532186 9.791894 9.948380 9.999994 9.946193 9.787544 9.525718 9.163477 8.704638 8.154038 7.517483 6.801681 6.014179 5.163279 4.257949 3.307734

2.322650 1.313082 0.289672 -0.736792 -1.755489 -2.755680 -3.726822 -4.658677 -5.541423 -6.365754 -7.122979 -7.805118 -8.404978 -8.916236 -9.333504 -9.652382 -9.869508 -9.982595 -9.990449 -9.892989 -9.691241 -9.387332 -8.984466 -8.486890 -7.899849 -7.229531 -6.483003 -5.668133 -4.793513 -3.868361 -2.902431 -1.905905 -0.889287 0.136704 1.161255 2.173565 3.162961 4.119015 5.031649 5.891240

6.688729 7.415709 8.064515 8.628309 9.101146 9.478044 9.755028 9.929179 9.998661 9.962741 9.821799 9.577319 9.231880 8.789122 8.253713 7.631297 6.928435 6.152537 5.311782 4.415032 3.471740 2.491852 1.485695 0.463876 -0.562832 -1.583607 -2.587689 -3.564492 -4.503720 -5.395472 -6.230347 -6.999545 -7.694956 -8.309250 -8.835952 -9.269510 -9.605352 -9.839939 -9.970797 -9.996548

-9.916920 -9.732752 -9.445985 -9.059643 -8.577798 -8.005530 -7.348871 -6.614743 -5.810886 -4.945773 -4.028524 -3.068808 -2.076742 -1.062783 -0.037622 0.987936 2.003080 2.997109 3.959543 4.880237 5.749486 6.558126 7.297634 7.960213 8.538879 9.027532 9.421021 9.715197 9.906960 9.994288 9.976261 9.853069 9.626010 9.297477 8.870935 8.350879 7.742792 7.053084 6.289025 5.458670

4.570773 3.634692 2.660296 1.657856 0.637940 -0.388701 -1.411245 -2.418912 -3.401079 -4.347394 -5.247881 -6.093047 -6.873983 -7.582456 -8.210998 -8.752983 -9.202699 -9.555403 -9.807379 -9.955970 -9.999609 -9.937837 -9.771304 -9.501767 -9.132066 -8.666099 -8.108778 -7.465977 -6.744474 -5.951873 -5.096531 -4.187462 -3.234252 -2.246947 -1.235956 -0.211937 0.814317 1.831987 2.830345 3.798866

Page 114: pembuatan komposer lagu pada pc

103

4.727342 5.605984 6.425530 7.177341 7.853492 8.446855 8.951174 9.361134 9.672414 9.881731 9.986879 9.986750 9.881345 9.671775 9.360249 8.950052 8.445508 7.851934 7.175589 6.423602 5.603900 4.725125 3.796539 2.827932 1.829514 0.811810 -0.214452 -1.238453 -2.249399 -3.236633 -4.189747 -5.098695 -5.953895 -6.746331 -7.467651 -8.110250 -8.667354 -9.133091 -9.502551 -9.771839

-9.938117 -9.999631 -9.955734 -9.806887 -9.554661 -9.201714 -8.751766 -8.209561 -7.580815 -6.872155 -6.091052 -5.245739 -4.345128 -3.398713 -2.416470 -1.408754 -0.386187 0.640451 1.660337 2.662721 3.637036 4.573011 5.460778 6.290981 7.054867 7.744384 8.352263 8.872096 9.298403 9.626691 9.853498 9.976434 9.994203 9.906617 9.714601 9.420177 9.026449 8.537569 7.958690 7.295913

6.556227 5.747427 4.878041 3.957232 2.994708 2.000615 0.985433 -0.040138 -1.065285 -2.079203 -3.071202 -4.030827 -4.947960 -5.812934 -6.616630 -7.350577 -8.007037 -8.579091 -9.060708 -9.446810 -9.733329 -9.917243 -9.996614 -9.970605 -9.839490 -9.604652 -9.268566 -8.834774 -8.307850 -7.693349 -6.997747 -6.228379 -5.393353 -4.501474 -3.562141 -2.585258 -1.581123 -0.560320 0.466390 1.488183

2.494288 3.474100 4.417289 5.313913 6.154521 6.930250 7.632923 8.255133 8.790322 9.232846 9.578043 9.822271 9.962958 9.998619 9.928880 9.754474 9.477241 9.100103 8.627036 8.063027 7.414021 6.686859 5.889207 5.029474 4.116723 3.160574 2.171109 1.158756 0.134189 -0.891794 -1.908375 -2.904839 -3.870681 -4.795721 -5.670206 -6.484918 -7.231269 -7.901391 -8.488221 -8.985571

-9.388199 -9.691861 -9.893356 -9.990559 -9.982446 -9.869103 -9.651724 -9.332600 -8.915097 -8.403614 -7.803544 -7.121213 -6.363813 -5.539329 -4.656451 -3.724487 -2.753261 -1.753012 -0.734283 0.292187 1.315576 2.325097 3.310108 4.260226 5.165433 6.016189 6.803526 7.519142 8.155495 8.705876 9.164484 9.526483 9.788059 9.946453 9.999997 9.948124 9.791383 9.531426 9.170992 8.713882

Page 115: pembuatan komposer lagu pada pc

104

*****Halaman ini sengaja dikosongkan*****

Page 116: pembuatan komposer lagu pada pc

RIWAYAT HIDUP

Penyusun lahir di Tulungagung, pada tanggal 20 Desember 1984. Sebagai anak ketiga dari 3 bersaudara dari seorang ayah bernama purnomo dan ibu bernama Tri Kristiani. Saat ini bertempat tinggal di Kendal, Gondang, Tulungagung.

Riwayat pendidikan formal yang pernah ditempuh: • SD Negeri Karanganom III (1991-1997) • SLTP Negeri 1 Gondang lulus tahun 2000 (1997-2000) • SMU Negeri 1 Boyolangu lulus tahun 2003 (2000-2003) D3 Jurusan Telekomunikasi, Politeknik

Elektronika Negeri Surabaya, Institut Teknologi Sepuluh Nopember Surabaya (ITS) (2003-2006)

Pada tanggal 2 Agustus 2006 mengikuti Seminar Proyek Akhir sebagai salah satu persyaratan untuk mendapatkan gelar Ahli Madya (A.Md.) di Politeknik Elektronika Negeri Surabaya, Institut Teknologi Sepuluh Nopember Surabaya (ITS).