pembuatan komposer lagu pada pc

Post on 07-Jun-2015

5.604 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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.

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.

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.

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

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]

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.

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

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.

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 :

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.

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.

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

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\

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

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

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++) {

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;

}

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.

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

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);

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

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

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

25

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

26

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

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

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

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

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

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

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

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

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

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 :

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

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 :

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

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

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

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

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

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 :

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

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.

46

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

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

48

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

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

50

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

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

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

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);

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;

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]);

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];

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++) {

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;

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. */

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; }

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

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);

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;

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]);

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];

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++) {

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;

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. */

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; }

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

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);

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;

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]);

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];

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++) {

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;

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. */

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; }

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

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);

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;

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]);

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];

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++) {

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;

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; }

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) {

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);

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);

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; }

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

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

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

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

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

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

LAMPIRAN C Tampilan :

97

98

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

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

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

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

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

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

104

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

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).

top related