Aplikasi Mini Piano Menggunakan Microsoft Visual Basic 6.0

(1)

APLIKASI MINI PIANO MENGGUNAKAN

MICROSOFT VISUAL BASIC 6.0

TUGAS AKHIR

DIAN MARIANA SILAEN

102406041

D3 TEKNIK INFORMATIKAFAKULTAS MATEMATIKA DAN

ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN


(2)

PERSETUJUAN

Judul : APLIKASI MINI PIANO MENGGUNAKAN

MICROSOFT VISUAL BASIC 6.0

Kategori : TUGAS AKHIR

Nama : DIAN MARIANA SILAEN

Nomor Induk Mahasiswa : 102406041

Program Studi : DIPLOMA (D3) TEKNIK INFORMATIKA

Departemen : MATEMATIKA

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN

ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA

Diluluskan di Medan, Juli 2013

Diketahui/Disetujui oleh

Departemen Matematika FMIPA USU

Ketua Pembimbing

Prof. Dr. Tulus, M.Si Drs. Gim Tarigan M.Si NIP. 19620901 198803 1 002 NIP. 19550202 198601 1 001


(3)

PERNYATAAN

APLIKASI MINI PIANO MENGGUNAKAN MICROSOFT VISUAL BASIC 6.0

TUGAS AKHIR

Saya mengakui bahwa tugas akhir ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Juli 2013

DIAN MARIANA SILAEN 102406041


(4)

PENGHARGAAN

Segala puji dan syukur penulis ucapkan kepada Tuhan Yesus Kristus oleh karena anugerah dan kasihNya yang telah memberikan kemampuan, kebijaksanaan dan kesehatan sehingga penulis dapat menyelesaikan tugas akhir ini.

Adapun judul dari tugas akhir ini adalah ”APLIKASI MINI PIANO MENGGUNAKAN MICROSOFT VISUAL BASIC 6.0”

Penulis sepenuhnya menyadari bahwa penyelesaian Tugas Akhir ini akan terwujud tanpa adanya dukungan dan bantuan berbagai pihak. Penulis mengucapkan terima kasih dan penghargaan yang setinggi-tingginya kepada :

1. Bapak Drs. Gim Tarigan M.Si selaku Dosen Pembimbing Tugas Akhir yang telah memberikan bimbingan dan arahan selama ini kepada senulis dalam menyelesaikan tuga akhir ini.

2. Bapak Prof. Dr. Tulus Vordipl. Math., M.Si., Ph.Dselaku Ketua Departemen Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara.

3. Bapak Syahriol Sitorus, S.Si. MIT selaku Ketua Program Studi D3 Teknik Informatika.

4. Ayahanda Akp. MP. Silaen, Ibunda KG. Siagian, abang Santoso Silaen, kak Basaria Silaen, abang Agus Sirait, Adik Handoko Silaen, Adik Theresia Silaen terima kasih atas kasih sayang, semangat, doa, inspirasi dan dukungan baik secara material maupun spiritual.

5. Seluruh dosen pengajar Program Studi D3 Teknik Informatika Fakultas MIPA Universitas Sumatera Utara yang telah memberikan ilmu yang bermanfaat kepada penulis selama masa perkuliahan.

6. Kak Rika Paduri, kak Roita Panggabean, kak Dina Nadapdap, kak Eka Manao, adik-adik Kelompok PA ku, Kelompok PA Kairos, team di Campus Movement


(5)

Student Influencer (CMSI) dan seluruh staf LPMI WIB, terima kasih atas dukungan doa dan semangatnya.

7. Sahabat-sahabatku terkasih DBC yaitu Maria M. Sinaga, Desi Triyani kaban, Dewi Anastasia Pandiangan, Nova Esterina Silitonga dan Arshita Febrina Silalahi. Terima kasih buat setiap kebersamaan, saling memotivasi, saling mendukung yang telah kita jalani bersama.

8. Seluruh staf pegawai administrasi Departemen Matematika yang telah membantu penulis selama pekuliahan dalam menyelesaikan segala kelengkapan administrasi. 9. Rekan-rekan seangkatan D3 Teknik Informatika stambuk 2010, terkhusus KOM

C’10.

Penulis menyadari bahwa tugas akhir ini masih jauh dari sempurna. Oleh karena itu, saran dan kritik yang membangun sangat penulis harapkan dari para pembaca untuk penulisan selanjutnya. Akhir kata, penulis berharap semoga tugas akhir ini bermanfaat bagi para pembacanya.


(6)

APLIKASI MINI PIANO MENGGUNAKAN MICROSOFT VISUAL BASIC 6.0

ABSTRAK

Perkembangan ilmu dan teknologi di era modern ini semakin berkembang pesat. Aplikasi Piano yang lebih kompleks dan tampilan menarik. Khususnya bagi mereka yang gemar bermain piano. Apalagi saat ini hampir segala sesuatu menggunakan computer untuk belajar. Dengan memanfaatkan teknologi komputer yang sedang berkembang saat ini para penggemar piano tidak harus membeli piano yang mahal, cukup menggunakan aplikasi ini. Maka penulis tertarik untuk membuat Aplikasi Mini Piano menggunakan Microsoft Visual Basic 6.0. penulis berharap bahwa aplikasi ini dapat mendidik, menghibur, dan membuat user (pengguna) menjadi lebih kreatif.


(7)

DAFTAR ISI

Halaman

Persetujuan i

Pernyataan ii

Penghargaan iii

Abstrak v

Daftar Isi vi

Daftar Tabel vii

Daftar Gambar viii

Bab 1. Pendahuluan

1.1 Latar Belakang 1

1.2 Rumusan Masalah 3

1.3 Batasan Masalah 4

1.4 Tujuan Perancangan 4

1.5 Metodologi Penelitian 5

1.6 Sistematika Penulisan 6

Bab 2. Landasan Teori

2.1 Pengertian Perangkat Lunak 8

2.2 Pengertian Program Aplikasi 9

2.3 Proses Perangkat Lunak 9

2.4 Mengenal Microsoft Visual Basic 6.0 11 2.4.1 Pemrograman Even Driven 11

2.4.2 Memahami Objek 12

2.4.3 Pengertian dari Objek 13

2.4.4 Pembuatan Objek 13

2.4.5 Property 13


(8)

2.5 Menjalankan Microsoft Visual Basic 6.0 14

2.6 Flowchart 21

Bab 3. Perancangan Sistem

3.1 Gambaran Umum Sistem Perancangan 23

3.2 Perancangan Mini Piano 24

3.3 Mebuat Antarmuka 24

3.4 Flowchart 33

Bab 4. Implementasi Sistem

4.1 Implementasi Sistem 34

4.2 Kebutuhan Sistem 36

4.3 Prosedur Penggunaan Program 38

Bab 5. Kesimpulan dan Saran

5.1 Kesimpulan 40

5.2 Saran 40

Daftar Pustaka


(9)

DAFTAR TABEL

Halaman Tabel 2.1 Simbol-Simbol Flowchart 21 Tabel 3.1 Properties Mini Piano 25


(10)

DAFTAR GAMBAR

Halaman

Gambar 2.1 IDE Visual Basic 15

Gambar 2.2 Tampilan Awal Standard EXE 15

Gambar 2.3 Windows Properties 16

Gambar 2.4 Windows Form 17

Gambar 2.5 Windows Project 18

Gambar 2.6 ToolBar 18

Gambar 2.7 ToolBox 19

Gambar 3.1 Membuat Form Baru 24

Gambar 3.2 Flowchart Mini Piano 33


(11)

APLIKASI MINI PIANO MENGGUNAKAN MICROSOFT VISUAL BASIC 6.0

ABSTRAK

Perkembangan ilmu dan teknologi di era modern ini semakin berkembang pesat. Aplikasi Piano yang lebih kompleks dan tampilan menarik. Khususnya bagi mereka yang gemar bermain piano. Apalagi saat ini hampir segala sesuatu menggunakan computer untuk belajar. Dengan memanfaatkan teknologi komputer yang sedang berkembang saat ini para penggemar piano tidak harus membeli piano yang mahal, cukup menggunakan aplikasi ini. Maka penulis tertarik untuk membuat Aplikasi Mini Piano menggunakan Microsoft Visual Basic 6.0. penulis berharap bahwa aplikasi ini dapat mendidik, menghibur, dan membuat user (pengguna) menjadi lebih kreatif.


(12)

BAB 1

PENDAHULUAN

1.1 Latar Belakang Masalah

Piano berasal dari kata pianoforte yang diambil dari bahasa Italia. seorang bernama Bartolomeo Cristofori pada tahun 1720-an membuat sebuah piano. Model tradisional pertama kali diciptakan pada tahun 1709. dengan nama “gravicembalo col pian e forte” dalam bahasa Italia (“harpsichord with soft and loud”), yang kira-kira berarti Alat Musik Hapsichord (yang bisa dimainkan ) dengan lembut dan keras. Prinsip kerja alat musik ini diambil dari prinsip kerja bilah kunci harpsichord and clavichord dikombinasikan dengan pemukul dan string dari alat musik “dulcimer”. Alat ini pertama kali diciptakan oleh Bartolomeo Cristofori, seorang pembuat harpsichord dari Italia.

Bartolomeo Cristofori terkenal sebagai perintis pembuatan piano. Dua dari ciptaannya yang terkenal masih tersimpan sampai sekarang, Pertama di Metropolitan Museum of Art, New York 1720. Dan yang kedua buatan tahun 1726 tersimpan di museum Leipzig, Germany. Pada awal mula diciptakan, suaranya tidak sekeras piano yang dapat didengar pada abad 20-an. Hal ini dikarenakan tegangan tuts piano saat itu tidak sekuat piano yang ada sekarang.


(13)

Pada awalnya, piano dikembangkan dari alat musik kecapi, namun perbedaannya terletak pada cara bermainnya. Kecapi dimainkan dengan dipetik, sedangkan piano dimainkan dengan cara menekan tuts-tuts nya.

Alat musik piano kini mulai dikenal di berbagai macam kalangan, dari berbagai tingkat kesejahteraan. Piano kini dikenal sebagai alat musik yang selalu hadir di setiap pertunjukan music popular Maupun klasik, di televisi maupun konser-konser off air yang diselenggarakan di berbagai kota. Hal ini menandakan bahwa piano sudah tidak dipandang lagi sebagai alat musik ekslusif hanya untuk kalangan atas saja. Piano memiliki wilayah nada yang luas,sehingga pemain piano bisa memainkan lagu dengan berbagai macam unsur di dalamnya, yaitu bass, rhythm dan melodi secara lengkap dan bersamaan. Seiring dengan ketenaran alat musik ditengah-tengah masyarakat khususnya dikalangan siswa dan mahasiswa, maka penulis tertarik membuat aplikasi Mini Piano yang bias dimainkan menggunakan komputer. Karena perkembangan computer pada masa sekarang ini sangat pesat ditengah-tengah masyarakat khususnya pada pendidikan.

Pada awalnya komputer dititikberatkan pada proses pengolahan data, tetapi karena teknologi yang sangat pesat, saat ini teknologi komputer sudah menjadi sarana informasi dan pendidikan khususnya teknologi internet. Dalam hal pendidikan, komputer dapat dipergunakan sebagai alat bantu (media) dalam proses belajar mengajar baik untuk guru maupun siswa yang mempunyai fungsi sebagai media tutorial, alat peraga dan juga alat uji dimana tiap fungsi tersebut masing-masing mempunyai kelebihan dan kekurangan.


(14)

Sekarang peran lain dari komputer yaitu bisa dijadikan sebagai alat musik yaitu Mini Piano. Aplikasi Mini Piano merupakan program yang digunakan untuk bermain piano. Mini Piano ini terdiri dari tuts-tuts yang berwarna hitam dan putih, dan nada-nada yang berirama, saat kita menekan keyboard computer sesuai dengan petunjuk di tuts-tuts piano, maka piano akan mengeluarkan suara sesuai nada solmisasi. Masyarakat terkhususnya siswa dan mahasiswa banyak yang hobi bermain piano tapi terkadang mereka tidak bisa bermain piano karena piano mahal.

Untuk mengatasi masalah tersebut, penulis membuat sebuah “Aplikasi Mini Piano menggunakan Microsoft Visual Basic 6.0”, supaya siswa dan mahasiswa bias bermain piano menggunakan computer atau laptop sehingga tidak perlu membeli alat music piano yang mahal, cukup menggunakan Aplikasi Mini Piano ini apalagi dalam proses pembelajaran.

1.2 Rumusan Masalah

Aplikasi perancangan mini piano ini memiliki cakupan hanya untuk bermain piano saja. Terkadang masyarakat mempunyai hobi bermain piano tetapi susah mendapatkannya. Untuk itu, penulis membuat aplikasi mini piano menggunakan Microsoft Visual Basic 6.0 untuk mempermudah para pecinta piano untuk bermain piano.


(15)

1.3 Batasan Masalah

Agar pembahasan masalah tidak menyimpang dari tujuan penelitian, maka berikut adalah beberapa batasan yang perlu dibuat, yaitu :

1. Aplikasi ini di operasikan dalam system operasi windows. 2. Membuat Mini piano dengan desain yang menarik.

3. Pada Mini Piano ada beberapa jenis suara dan tangga oktaf.

4. Software yang digunakan untuk merancang Mini Piano ini adalah Microsoft Visual Basic 6.0.

1.4 Tujuan Perancangan

Tujuan penulis merancang Mini Piano ini adalah untuk memberikan kemudahan dalam bermain piano sehingga tidak perlu membeli alat musik piano yang mahal, cukup menggunakan mini piano ini apalagi untuk proses pembelajaran.

1. Bagi Mahasiswa

Mempermudah mahasiswa yang menyukai alat musik piano bisa bermain piano disela-sela waktunya saat mengerjakan tugas dilaptopnya.

2. Bagi Siswa

Melatih siswa pemula untuk mengenal nada-nada solmisasi, dan bermain dengan kreatif.


(16)

3. Bagi Kalangan Umum

Aplikasi ini dapat dijadikan sebagai hiburan yang dimainkan dalam komputer.

1.5 Metodologi Penelitian

Adapun metodologi penelitian yang dibuat dalam penyusunan tugas akhir ini adalah sebagai berikut:

1. Penelitian Pustaka

Penelitian yang dilakukan penulis diperpustakaan untuk mendapatkan data yang teoritis. Dalam hal ini yang harus diperhatikan adalah subjek yang diteliti, yaitu pada buku bacaan yang membahas tentang pemrograman visual basic. Pada bagian ini, terdapat berbagai informasi kepustakaan, tidak terbatas pada buku tapi juga pada kepustakaan digital seperti suara, gambar dan sebagainya.

2. Pengumpulan Data

Pada bagian ini setelah melakukan metode kepustakaan kemudian dilakukan pengumpulan data yang akan digunakan sebagai sumber dalam pembuatan Mini Piano. Metode pengumpulan data yang dilakukan meliputi pencarian di website dan studi pustaka, mencari buku yang berhubungan dengan masalah penulis.


(17)

Kemudian tahap selanjutnya adalah analisis dan perancangan yaitu bagaimana mini piano dimainkan, dan merancang sistem yang digunakan dalam Mini Piano, desaininterface, interaksinya dengan pengguna dan sebagainya. Metode perancangan yang digunakan adalah waterfall yang singkat memiliki tahap analisis, desain,implementasi dan testing.

4. Implementasi dan Evaluasi

Setelah analisis dan perancangan, maka perlu dilakukan implementasi atau uji coba Mini Piano kemudian evaluasi dilakukan untuk pengembangan atau perbaikan dalam pembuatan Mini Piano bila masih ditemukan kekurangan.

1.6 Sistematika Penulisan

Sistematika penulisan tugas akhir ini dibagi menjadi 5 (lima) bab yaitu sebagai berikut :

BAB 1 PENDAHULUAN

Bab ini berisikan tentang latar belakang permasalahan, identifikasi masalah, batasan masalah, tujuan penulisan, kontribusi penelitian, dan sitematika penulisan daari tugas akhir.

BAB 2 LANDASAN TEORI

Bab ini mengungkapkan konsep dasar dan teori-teori yang mendukung pembahasan untuk tema penulisan ini yang di dapat dari beberapa literatur.


(18)

BAB 3 PERANCANGAN SISTEM

Bab ini membahas tentang perancangan dan pembuatan Mini Piano dan gambaran umum rancangan.

BAB 4 IMPLEMENTASI SISTEM

Bab ini membahas analisa hasil dan pembahasan Mini Piano yang dirancang, pembuatan program yang diajukan, tampilan dari program dan pengujian Mini Piano.

BAB 5 KESIMPULAN DAN SARAN


(19)

BAB 2

LANDASAN TEORI

2.1 Pengertian Perangkat Lunak

Perangkat lunak adalah Perintah ( program computer ) yang bila di eksekusi memberikan fungsi dan unjuk kerja seperti yang diinginkan. Struktur data yang memungkinkan program memanipulasi informasi secara proporsional, dan dokumen yang menggambarkan operasi dan kegunaan program. Tidak ada lagi definisi yang dan kegunaan program. ( Perssman, 2002 )

Analisa kebutuhan adalah langkah awal untuk menentukan perangkat lunak yang dihasilkan. Perangkat lunak yang baik dan sesuai dengan kebutuhan pengguna sangat tergantung kepada keberhasilan dalam melakukan analisa kebutuhan. Jika terjadi kesalahan dalam analisakebutuhan, maka perangkat lunak dibuat menjadi tidak berguna. Perangkat lunak mempunyai dua peran, di satu sisi berfungsi sebagai sebuah produk dan sisi lain sebagai pengontrol pembuatan sebuah produk. Sebagai produk, perangkat lunak mengahantarkan potensi perhitungan yang dibangun oleh perangkat lunak computer. Perangkat lunak merupakan transformasi yang memproduksi, memperoleh, memodifikasi, menampilkan atau memancarkan informasi dimana pekerjaan ini menjadi sesederhana suatu bit tunggal atau sekompleks sebuah simulasi multimedia.


(20)

2.2 Pengertian Program Aplikasi

Program adalah kata, ekspresi, pernyataan atau kombinasi yang disusun dan dirangkai menjadi satu kesatuan prosedur yang berupa urutan langkah untuk menyelesaikan masalah yang diimplementasikan dengan menggunakan bahasa pemrograman sehingga dapat dieksekusi oleh komputer. Dalam pembuatan program tidak dapat terlepas dari tata cara sintaks yaitu aturan gramatikal yang mengatur tata cara penulisan kata, ekspresi dan peryataan. Selain itu, semantik juga berperan dalam penulisan program yaitu aturan untuk menyatakan suatu arti agar dapat dieksekusi dan menghasilkan output yang sesuai dengan yang diinginkan. ( Sutedjo, Budi dan AN, Michael : 2000).

Jadi Program aplikasi adalah program siap pakai. Program yang direka untuk melaksanakan suatu fungsi bagi pengguna atau aplikasi lain. Aplikasi akan menggunakan sistem operasi (OS) komputer dan aplikasi yang lainnya yang mendukung.

2.3 Proses Perangkat Lunak

Serangkaian kegiatan dan hasil yang berhubungan dengan proses perangkat lunak, yang menuju pada produk perangkat lunak yang dihasilkan. Proses pengembangan perangkat lunak sama seperti proses rakayasa keteknikan lainnya. Sebuah model mengenai proses pengembangan perangkat lunak yang diturunkan dari aktivitas rekayasa keteknikan yang diterima oleh manajemen proyek perangkat lunak karena menawarkan cara membuat pengembangan yang lebih baik. (Pengembangan


(21)

perangkat lunak Model Air Terjun, Roger S Pressman, . “Software Engineering A Practitioner’s Approach, McGraw-Hill”)

Kegiatan-kegiatan mendasar yg umum bagi semua proses Perangkat Lunak :

1. Spesifikasi Perangkat Lunak  Fungsionalitas perangkat lunak dan batasan kemampuan operasinya harus didefinisikan.

2. Pengembangan (Perancangan dan Implementasi) Perangkat Lunak  Perangkat lunak yang memenuhi spesifikasi harus di produksi.

3. Validasi Perangkat Lunak  Perangkat lunak harus divalidasi untuk menjamin bahwa perangkat lunak bekerja sesuai dengan apa yang diinginkan oleh pelanggan.

Definisi dan Analisis kebutuhan

Integarasi dan Sistem Testing

Implementasi dan Unit Testing

Perancangan Desain Sistem dan Perangkat lunak


(22)

4. Evolusi Perangkat Lunak  Perangkat lunak harus berkembang untuk memenuhi kebutuhan pelanggan.

2.4 Mengenal Microsoft Visual Basic 6.0

Microsoft Visual Basic adalah sebuah aplikasi yang digunakan untuk pengembangan dengan memanfaatkan keistimewaan konsep-konsep antarmuka grafis dalam Microsoft Windows. Aplikasi yang dihasilkan Visual Basic berakaitan erat dengan windows itu sendiri sehingga dibutuhkan pengetahuan bagaimana cara kerja windows.

Dalam pemrograman Visual banyak istilah dan konsep untuk menyebuit seusatu yang membentuk sebuah aplikasi. Istilah-istilah tersebut memiliki arti yang sama dalam lingkungan pemrograman visual lainnya, seperti misalnya Objek, Property, dan Event.

2.4.1 Pemrograman Event Driven

Pemrograman Event Driven telah ada sebelum GUI ( Grafical User Interface ) atau pemrograman antar muka dibuat dan diimplementasikan dalam beberapa cara. Dengan diperkenalkannya mouse, pemrograman Even Driven lebih banyak disukai oleh pemakai dan perancang program. Sebelum ada pemrograman Event Driven, pemrograman top – down digunakan untuk membuat kode yang menangani banyak pemrosesan. Selain itu aplikasi yang dirancang dengan teknik ini mudah untuk diperbaiki, disamping kodenya menjadi luwes. Namun aplikasi yang dibuat dengan


(23)

metode ini biasanya memiliki menu kompleks yang tergabung erat pada proses yang ada dalam program.

Pemrograman Event Driven tidak mencoba menggantikan pemrograman procedural, namun melengkapi dengan kerangka yang dapat membedakan antara user interface dan proses tertentu dalam aplikasi. Visual Basic dan aplikasi Event Driven lainnya menyediakan keranghka tersebut sehingga programmer lebih terkonsentrasi pada masalah aplikasinya.

Kunci pokok dalam Even Driven adalah bagaimana menentukan event yang harus ditangani lebih lanjut. Saat bekerja dengan windows banyak sekali event yang muncul, namun hanya event tertentu uyang harus diproses, yaitu berhubungan dengan aplikasi.

2.4.2 Memahami Objek

Istilah objek telah sedikit berubah sejak diperkenalkan pertama kali dalam pemrograman objek. Kata objek sekarang digunakan lebih bebas karena banyak aplikasi yang menggunakan istilah ini untuk menyatakan diri sebagai aplikasi berorientasi objek.


(24)

2.4.3 Pengertian dari Objek

Definisi dari sebuah objek adalah suatu yang dapat melakukan hal-hal tertentu. Di dalam Visual Basic contoh dari objek misalnya, Command Button, Label, List Box, dan lain-lain. Objek adalah komponen-komponen yang membuat aplikasi.

2.4.4 Pembuatan Objek

Pemrograman Visual merupakan dimensi baru dalam pembuatan aplikasi karena dapat langsung menggambarkan objek-objek ke layar sebelum di eksekusi. Dalam pengembangan Visual, sekarang objek yang anda buat dapat langsung ditampilkan dilayar. Objek yang dibuat tersebut akan sama hasilnya pada saat program dijalankan, dengan demikian tidak perlu lagi melakukan pengubahan kode program secara manual. Setelah objek diletakan dalam form, maka semua atribut objek tersebut akan disimpan sebagai suatu kode program yang dapat langsung dijalankan.

2.4.5 Property

Selain memiliki kemampuan untukl menanggapi Event, objek memiliki property. Dalam property antara lain didapatkan informasi mengenai warna, tinggi, lebar dan posisi sebuah objek. Nilai pada tiap property dapat mempengaruhi cara objek ditampilkan atau cara objek bekerja.


(25)

Bagi sebuah objek property mirip dengan variable local dalam prosedur. Property langsung berkaitan dengan objek dan digunakan oleh proses-proses yang digunakan dalam objek.

2.4.6 Event

Semua aplikasi windows memakai metode Event Driven untuk mengelola interaksi antar program dan pemakainya. Semua event yang muncul ditimbulkan oleh pemakai atau oleh suatu aplikasi dalam sistem windows sendiri. Kebanyakan kode program yang ditulis dalam Visual Basic digunakan untuk menangani event dari pemakai atau dari sistem. Dalam Visual Basic prosedur untuk menangani event disebut sebagai penanganan event ( Event handle ).

2.5 Menjalankan Microsoft Visual Basic

Langkah awal dari belajar menjalankan program Microsoft Visual Basic adalah mengenal IDE ( Intergrated Develoment Environment ) Microsoft Visual Basic merupakan lingkungan pengembangan terpadu bagi programmer bagi pengembangan aplikasinya. Dengan menggunakan IDE, programmer dapat membuat user interface, melakukan kode program, melakukan testing dan debugging, serta mengompilasi program menjadi executable. Penguasaan IDE akan sangat membantu programmer bekerja secara efisien.


(26)

Salah satu cara untuk mengaktifkan IDE Microsoft Visual Basic adalah menjalankannya dari menu Start > Microsoft Visual Studio > Microsoft Visual Basic 6.0.

Gambar 2.1 IDE Visual Basic


(27)

Sebagai langkah awal dari proses belajar adalah memilih Project Standard EXE. IDE Visual Basic 6.0 menggunakan model MDI (Multiple Document Interface). Tidak semua jendela akan digunakan, tetapi hanya beberapa yang penting, sedangkan yang lainnya bersifat khusus.

Adapun jendela-jendela yang perlu diperhatikan adalah sebagai berikut :

1. Windows Property

Windows property dalam visual Basic ini merupakan mekanisme normal yang menjelaskan atribut-atribut dari objek. Setiap objek Visual Basic memiliki property tertentu yang settingannya mengontrol tampilan dari objek dalam suatu aplikasi. Beberapa property terbatas pada nilai-nilai tertentu, contohnya propertyVisible hanya bisa diatur dengan True atau False saja. Untuk mengaktifkan Windows Property ini dapat dilakukan dengan beberapa cara. Cara yang pertama yaitu pilih menu Views kemudian pilih Sub Menu Properties dan cara yang kedua yaitu pilih objek yang akan diatur propertynya kemudian tekan tombol kunci F4 dan cara yang terakhir yaitu pilih objek yang akan diatur propertynya kemudian tekan tombol kanan mouse, setelah itu pilih property.


(28)

2. Windows Form

Sebuah form adalah adalah area yang berhubungan dengtan sebuah jendela yang akan dilihat ketika aplikasi berjalan. Ketika memulai sebuah proyek baru, Visual Basic menciptakan sebuat form kosong dan memberinya judul form1. Pada saat mendesain suatu aplikasi maka form merupakan canvas tempat menggambarkan berbagai bagian aplikasi. Dalam form ini dapat ditempatkan beberapa kontrol untuk keperluan aplikasi. Berikut gambar dari form beserta penjelasannya.

Control Menu Caption atau judul Form Tombol Minimize

Form Area Tombol Maximize dan Close

Gambar 2.4 Windows Form

3. Windows Project

Pada dasarnya project adalah sekumpulan Form, Module, Class dan file sumber yang membentuk sebuah aplikasi. Jadi windows project merupakan windows yang menampilkan listing semua file pembentuk project. File form berisi deksripsi dari


(29)

form dan kode-kode yang berhubungan dengannya. Sedangkan modul berisi deklarasi dan prosedur. File class memuat karakteristik-karakteristik tertentu dalam class meliputi property dan metodenya. Dua tombol yang terdapat pada sisi atas windows project digunakan untuk menampilkan windows Form atau ViewForm dan menampilkan windows kodenya ( Tombol View Code ).

Gambar 2.5 Windows Project

4. ToolBar

ToolBar merupakan kumpulan tombol-tombol yang mempunyai tugas untuk pengaksesan terhadap aplikasi yang berada dibawah kendalinya dengan cepat, berikut ini gambar dari ToolBar.


(30)

5. ToolBox

Jendela toolbox merupakan jendela yang sangat penting. Dari jendela inilah kita akan memilih kontrol-kontrol ( objek, komponen ) yang nantinya diperlukan untuk diintegrasikan ke dalam aplikasi kita. Setiap kontrol mewakili fungsi masing-masing. Dibawah ini gambar dari ToolBox :

Gambar 2.7 ToolBox Keterangan :

1. Pointer bukan merupakan control. Pointer digunakan ketika ingin memilih control yang berada pada form.

2. PictureBox adalah control yang digunakan untuk menampilkan image dalam format BMP, DIB ( bitmap ), ICO (icon), CUR ( cursor ), WMF ( metafile ), EMF ( enchanced metafile ), GIF, dan JPEG.

3. Label adalah control nyang digunakan untuk menampilkan teks yang tidak dapat diperbaiki oleh pemakai.


(31)

4. TextBox adalah control yang mengandung string yang dapat diperbaiki oleh pemakai, bisa berupa satu baris tunggal, atau banyak baris.

5. Frame adalah control yang digunakan sebagai container bagi control lainnya. 6. Command Button merupakan control yang terdapat pada hampir semua form dan

digunakan untuk membangkitkan event proses tertentu ketika pemakai melakukan klik padanya.

7. CheckBox digunakan untuk opsi yang isinya bernilai Yes/No dan True/False. 8. OptionButton sering digunakan lebih dari satu sebagai pilihan terhadap beberapa

opsi yang hanya dapat dipilih satu.

9. ListBox mengandung sejumlah item, dan user dapat memilih lebih dari satu (bergantung pada property multiselect).

10.ComboBox merupakan kombinasi dari textbox dan suatu listbox, dimana pemasukkan data dapat dilakukan dengan pengetikan maupun pemilihan.

11.HScrollBar dan VScrollBar digunakan untuk membentuk scrollbar yang berdiri sendiri.

12.Timer digunakan nuntuk memproses background yang diaktifkan berdasarkan interval waktu tertentu yang merupakan kontrol Nonvisual.

13.DriveListBox, DirListBox, dan FileListBox sering digunakan untuk membentuk dialog box yang berkaitan dengan file.

14.Shape dan line digunakan untuk menampilkan bentuk seperti garis, persegi, bulatan, dan oval.

15.Image berfungsi menyerupai image box, tetapi tidak dapat digunakan sebagai control container bagi control lainnya. Sesuatu yang perlu diketahui bahwa control image menggunakan resource yang lebih kecil dibandingkan dengan PictureBox. 16.Data digunakan untuk data binding.


(32)

17.OLE dapat digunakan sebagai tempat bagi program, eksternal seperti Microsoft Excel, Word, an lain-lain.

2.6 Flowchart

Flowchart adalah sekumpulan symbol yang menunjukkan atau menggambarkan rangkaian kegiatan-kegiatan program dari awal hingga akhir, jadi flowchart juga digunakan untuk menggambarkan urutan langkah-langkah pekerjaan di suatu algoritma. Penjelasan arti lambing-lambang flowchart dapat didefinisikan sebagai berikut :

Tabel 2.1 Simbol-Simbol Flowchart

No Simbol Fungsi

1 Terminator, untuk memulai dan mengakhiri program.

2 Process, suatu simbol yang menunjukkan setiap pengolahan yang dilakukan oleh komputer.

3 Data, untuk memasukkan data maupun

menunjukkan hasil dari suatu proses.

4 Decision, suatu kondisi yang menghasilkan beberapa kemungkinan jawaban atau pilihan.


(33)

5 Preparation, suatu symbol untuk menyediakan tempat-tempat pengolahan data dalam storage.

6 Connector, adalah symbol untuk masuk dan keluarnya suatu prosedur pada lembar kerja yang sama

7 Off-page Connector, merupakan simbol untuk masuk dan keluarnya suatu prosedur pada lembar kertas lain.

8 Ars atau flow, prosedur yang dapat dilakukan dari atas ke bawah, bawah ke atas, dari kiri ke kanan, atau dari kana ke kiri.

9 Document, merupakan symbol untuk data yang berbentuk informasi.

10 Predefined Process, untuk menyatakan sekumpulan langkah proses yang ditulis sebagai prosedur.

11 Display, untuk output yang ditunjukkan suatu device, seperti monitor.


(34)

BAB 3

PERANCANGAN SISTEM

3.1 Gambaran Umum Sistem Perancangan

Secara umum perancangan sistem ini adalah untuk membuat sebuah Aplikasi Mini Piano menggunakan Microsoft Visual Basic 6.0 untuk bermain musik melalui komputer.

Desain yang userfriendly sangat diperlukan oleh semua aplikasi. Program aplikasi ini dikemas secara userfriendly baik desain tampilan warnannya maupun letak tool-tool aplikasi ini. Diharapkan user dapat menggunakan aplikasi ini dengan mudah, cepat serta dapat membuat user betah berlama-lama di depan aplikasi.

Perancangan sistem merupakan pemaparan tentang program yuang telah dibuat agar program lebih mudah dimengerti. Desain yang userfriendly membuat user betah berlama-lama menggunakan aplikasi, kesesuaian tampilan yang diharapkan juga dapat mempermudah user untuk menggunakan sebuah aplikasi yang masih baru dikenalnya. Program ini diharapkan mudah dipergunakan oleh berbagai kalangan.

Perancangan system dipergunakan untuk menyajikan sebuah program menjadi sebuah system uyang dapat menjadi sebuah aplikasi yang mempermudah manusia untuk bermain piano. Program ini dapat dipergunakan menggunakan PC sehingga user dapat dengan mudah bermain piano.


(35)

3.2 Perancangan Mini Piano

Untuk mempermudah dan memperlancar pembuatan Mini Piano, hal yang harus diperhatikan dan perlu diperisapkan sebelum membuat Mini Piano antara lain :

1. Membuat satu folder khusus untuk memuat semua file atau folder lain yang mendukung Aplikasi Mini Piano.

2. Membuat form tampilan Aplikasi Mini Piano.

3.3Membuat Antarmuka

Adapun langkah-langkah untuk mebuat antarmuka menu utama adalah sebagai berikut :

1. Buka program Visual Basic 6.0, dengan cara menekan Start > Microsoft Visual Basic 6.0.

2. Akan tampil kotak dialog New Project, pilih Standard EXE, tekan tombol Ok.

Pilih Standard EXE Tekan Ok


(36)

3. Setelah Itu, lakukan pengaturan properties untuk komponen-komponen. Tabel 3.1 Properties Mini Piano

Nama Kontrol Nama Properties Value/Nilai

Form Piano AutoRedraw False

BackColor &H008080FF& BorderStyle 0 - None

Caption -

Height 5100

MinButton False

ScaleMode 1 - Twip

StartUpPosition 2 – CenterScreen

Width 12900

Image1 Appearance 1-3D

Height 2700

Left 1440

Top -1080

Width 10095

Shape0, Shape5, Shape11, Shape16, Shape21, Shape26, Shape31

BorderColor &H00808080&

BorderWidth 1

FileColor &H00000000& FillStyle 1 – Transprant

Height 2055

Left 2400

Top 1560

Width 495

Shape2, Shape12, Shape17, Shape23,

BorderColor &H0000FFFF&


(37)

Shape28, Shape33 FileColor &H00000000& FillStyle 1 – Transprant

Height 2055

Left 2400

Top 1560

Width 495

BorderColor &H0000FF00&

BorderWidth 1

FileColor &H00000000& FillStyle 1 – Transprant

Height 2055

Left 2400

Top 1560

Width 495

Shape4, Shape,9 Shape14, Shape19, Shape24, Shape29, Shape35

BorderColor &H0000FFFF&

BorderWidth 1

FileColor &H00000000& FillStyle 1 – Transprant

Height 2055

Left 2400

Top 1560

Width 495

Shape1, Shape3, Shape6, Shape8, Shape10, Shape13, Shape15, Shape18, Shape20, Shape22

BackColor &H00000000&

BorderWidth 1

FileColor &H00000000& FillStyle 1 – Transprant

Height 1335


(38)

Top 1560

Width 495

Label1 Appearance 0 – Flat

AutoSize False

BackColor &H00C0C0C0& FillStyle 1 – Opaque

Height 975

Left 8040

Label2 Appearance 0 - Flat

AutoSize False

FillStyle 1 – Opaque

Height 135

Left 4800

Label3 Appearance 1 – 3D

AutoSize False

BackColor &H8000000F&

Caption D3 Teknik Informatika Universitas Sumatera Utara

Font Lucida Handwriting

FortColor &H0000FF00&

Height 491

Left 2400

Label4 Appearance 1 – 3D

FillStyle 0 – Transparent

Caption S

Font Microsoft Sans Serif ForeColor &H0000012&


(39)

Label6 Caption G

Label7 Caption H

Label 8 Caption J

Label9 Caption L

Label10 Caption :

Label11 Caption 2

Label12 Caption 4

Label13 Caption 5

Label14 Caption 6

Label15 Caption 7

Label16 Caption 9

Label17 Caption 0

Label18 Caption -

Label19 Caption Z

Label20 Caption X

Label21 Caption C

Label22 Caption V

Label 23 Caption B

Label 24 Caption N

Label25 Caption M

Label26 Caption <

Label27 Caption >

Label28 Caption ?

Label29 Caption Q

Label30 Caption W

Label31 Caption E

Label32 Caption R


(40)

Label34 Caption Y

Label35 Caption U

Label36 Caption I

Label37 Caption O

Label38 Caption P

Label39 Caption {

Lblauthor BackStyle 0 – Transprent

Caption By : Dian Mariana Silaen

Font Lucida Handwriting

ForeColor &H0000FFFF& LblBlank(0) BackColor &H00808080&

Caption 1

BackStyle 0 - Opaque

Font Small Fonts

ForeColor &H008FF808&

Height 495

Left 9560

LblBlank(1) Caption 2

LblBlank(2) Caption 3

LblBlank(3) Caption 4

LblBaseKey Appearance 0 – Flat

BackColor &H000000FF&

Caption C

DataDield 1 – Opaque

Height 495

Left 8640

LblBeatCtrl(0) Caption 4


(41)

FonColor &H000000C0&

Height 375

Left 4800

LblBeatCtrl(1) Caption 8

LblBeatCtrl(2) Caption ;

LblBeatCtrl(3) Caption 6

LblBeatCtrl(4) Caption <

LblDrums(0) Caption 0

Height 135

Left 4320

Top 1200

LblDrums(1) Caption 1

LblDrums(2) Caption 2

LblDrums(3) Caption 3

LblDrums(4) Caption 4

LblDrums(5) Caption 5

LblDrums(6) Caption 6

LblDrums(7) Caption 7

LblDrums(8) Caption 8

LblDrums(9) Caption 9

LblDrums(10) Caption 10

LblDrums(11) Caption 11

LblInstrument BackColor &H00808080& BackStyle 1 – Opaque

Font Snap ITC

Height 450

Left 8640


(42)

LblExit BackColor &8000000F& BackStyle 0 – Transparent

Caption ỳ

Mnubasekey(0) Caption C

Index 0

Mnubasekey(1) Caption C#

Index 1

Mnubasekey(2) Caption D

Index 2

Mnubasekey(3) Caption D#

Index 3

Mnubasekey(4) Caption E

Index 4

Mnubasekey(5) Caption F

Index 5

Mnubasekey(6) Caption F#

Index 6

Mnubasekey(7) Caption G

Index 7

Mnubasekey(8) Caption G#

Index 8

Mnubasekey(9) Caption A

Index 9

Mnubasekey(10) Caption A#

Index 10

Mnubasekey(11) Caption B

Index 11


(43)

Index 0

MnuDevice(0) Caption Device

Index 0

MnuDrum(0) Caption mnuDrum

Index 0

MnuMain(0) Caption Piano

Index 0

MnuMain(1) Caption Drum

Index 1

MnuMain(2) Caption Beat

Index 2

MnuMain(3) Caption Device

Index 3

MnuMain(4) Caption Key

Index 4

MnuPiano(0) Caption Piano

Index 0

tmrBeat Interval 150

Left 7363


(44)

Mulai

Baca Proses

Piano ?

Drum ?

Beat ?

Key ?

Selesai

Jalankan Menu Piano

Jalankan Menu Drum

Jalankan Menu Beat

Jalankan Menu Key

no

yes

yes

no

yes

no

yes

no 3.4 Flowchart Mini Piano


(45)

BAB 4

IMPLEMENTASI SISTEM

4.1Implementasi Sistem

Implementasi merupakan tahap penerapan rancangan yang sudah dibuat kedalam bahasa pemrograman yang digunakan. Dalam hal ini dilakukan beberapa hal yaitu penulisan program, kompilasi dan membuat program aplikasi yang siap pakai atau excecutable. Sebelum program aplikasi diterapkan, maka program harus di test untuk menghindari kesalahan-kesalan yang terjadi yaitu sebagai berikut :

1. Kesalahan bahasa (language error) atau kesalahan penulisan syntak error adalah penulisan kode sumber program yang tidak sesuai dengan yang telah disyaratkan. Kesalan ini mudah ditemukan, karena compiler akan memberitahukan letak kesalahan program waktu dikompilasi run.

2. Kesalahan sewatu proses (run time errors) adalah kesalahan yang terjadi sewaktu excecutable program dijalankan, dimana proses program akan berhenti sebelum selesai pada saaatnya, karena compiler menemukan kondisi-kondisi yang belum terpenuhi yang tidak bisa dijalankan.

3. Kesalahan logika (logical error) merupakan kesalahan dari logika yang dibuat. Kesalahan ini bahaya karena jika tidak disadari dan tidak ditemukan, maka hasil yang salah menyesatkan bagi yang menggunakannya. Cara mencari kesalahan logika dapat dilakukan dengan test data yaitu dengan menjalankan


(46)

program dengan menggunakan data tertentu dan membandingkan hasil pengolahannya dengan hasil yang sudah diketahui.

4. Kode sumber program (source code)

Tahap yang dilakukan setelah menganalis dan mendesain adalah penerapan atau implementasi hasil dari analisa dan desain tersebut kedalam suatu program komputer.

5. Penulisan program

Penulisan program adalah proses menulis instruksi-instruksi program yang mengimplementasikan spesifikasi perancangan program menurut kaidah-kaidah bahasa pemrograman tertentu.

6. Pengujian program

Tahapan akhir dalam pengembangan program adalah pengujian program, hal ini dilakukan untuk mengetahui apakah program yang dibuat telah sesuai dengan kebutuhan dari dibuatnya program tersebut, atau belum. Beberapa langkah pengujian program sebagai berikut :

a. Kompilasi program, yaitu proses untuk mengidentifikasi kesalah sintaks yang disebabkan oleh kesalahan pengetikan, inkonsistensi program dan kesalahan tata bahasa pemrograman. Apabila ada kesalahan sintaks maka kesalahan tersebut harus diperbaiki sehingga program tidak memiliki atau kesalahn sintaks.

b. Desk cheking, yaitu proses membaca program dan melihat kembali logika program, dilakukan untuk melihat kembali struktur atau penulisan program.


(47)

c. Pengujian program, yaitu proses pengujian yang dilakukan untuk mendeteksi kesalahan yang disebabkan penghentian program yang secara tidak normal, dan kesalahan logika program.

d. Pengujian data, yaitu identifikasi dan penganganan data yang benar dan yang salah oleh program. Meliputi batasan-batasan dalam program mengenai data yang diijinkan, biasanya dibuat program error handling. e. Link testing, yaitu pengujian program secara keseluruhan.

7. Dokumentasi program

Dokumentasi adalah penjelasan tertulis tentang program dan cara pengoperasian serta pemeliharaan program. Dokumentasi program sangat membantu dalam melakukan koneksi program dan perubahan atau pengembangan program.

4.2Kebutuhan Sistem

Sarana-sarana pendukung sangat dibutuhkan untuk memperoleh hasil dalam perancangan system yang baik. Adapun sarana-sarana pendukung itu yaitu berupa komponen[-komponen penting dalam menunjang penerapan system yang telah dirancang. Komponen-komponen tersebut adalah sebagai berikut :

1. Perangkat keras

Hardware adalah komponen-komponen yang membentuk suatu sistem komputer yang berhubungan dengan peralatan (komponen) lainnya, sehingga memungkinkan komputer dapat melakukan tugasnya. Umumnya peralatan tersebut terdiri dari tiga jenis perangkat yaitu masukan (input device), perangkat


(48)

pengolahan (processor) dan perangkat keluaran I(output device). Adapun hardware yang digunakan penulis dalam merancang system ini adalah :

a. Peralatan input, seperti : mouse, keyboard.

b. Peralatan proses, seperti : processor, RAM 1GB, motherboard, hardisk 320 GB.

c. Peralatan output, seperti : monitor, printer.

d. Serta peralatan tambahan lainnya, seperti USB Flash.

2. Perangkat Lunak (software)

Software adalah seluruh fasilitas suatu sistem pengolahan data yang bukan peralatan komputernya atau merupakan suatu susunan instruksi yang harus diberikan kepada unit pengolahan agar komputer dapat menjalankan pekerjaannya sesuai yang dibutuhkan. Fasilitas software terdiri dari sistem desain, program-program dan prosedur-prosedur. Software yang digunakan antara lain :

a. System Operasi Windows 7.

b. Microsoft Visual Basic 6.0 sebagai bahasa pemrograman. c. Photoshop sebagai perancangan desain

3. Unsur Manusia (Brainware)

Brainware merupakan aspek manusia yang menangani pengolah komputer maupun perkembangan, yang termasuk dalam brainware :

a. Analisis Sistem, yaitu orang yang membentuk dan membangun fasilitas rancangan sistem program.

b. Programmer, yaitu orang yang mengerti bahasa pemrograman yang digunakan dalam membuat dan membangun suatu program.


(49)

c. Operator (Administrator), yaitu orang yang mengoperasikan system seperti memasukan data untuk dioperasikan oleh komputer dalam mengahasilkan informasi dan lainnya.

d. Public (pengguna), yaitu orang yang memakai sistem yang telah dirancang.

4.3Prosedur Penggunaan Program

Buka Aplikasi Mini Piano pada computer Anda.

1 2 3

4 5 6 7

8 9 10 11 12 13

Gambar 4.1 Aplikasi Mini Piano Keterangan cara menggunakan Aplikasi Mini Piano ini adalah : 1. Mengatur Volume suara Mini Piano.

2. Mengatur kunci atau nada dasar piano, terdiri dari kunci C, C#, D, D#, E, F, F#, G, G#, A, A#, B.


(50)

3. Ada beberapa jenis suara piano, seperti : Electric Grand Piano, Harpsichord, MusicBox, Acoustic Nylon Guitar, dll.

4. Jenis suara piano, seperti : Ridebell, Tambourine, Cowbell, dll. 5. Mengatur kecepatan music pada piano.

6. Untuk memilih jenis suara piano.

7. Exit, untuk keluar dari memainkan piano. 8. Play, untuk memainkan music pada piano.

9. Saat music pada piano dimainkan, tombol ini berguna untuk mengatur ketukan saat memaikan piano menggunakan tut-tut piano.

10.Pause, untuk menunda suara music pada piano saat dimainkan. 11.Untuk memperlambat ketukan music piano.

12.Stop, untuk berhenti saat piano dimainkan.

13.Musik pada piano, ada 3 yaitu Disco, Rock, dan 16Beat.

Tut-tut Mini Piano ini terdapat huruf-huruf sebagai petunjuk, supaya user dengan mudah memainkannya.


(51)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan hasil penjelasan dari bab-bab sebelumnya dengan adanya Aplikasi Mini Piano, penulis dapa menyimpulkan bahwa :

1. Aplikasi Mini Piano ini digunakan untuk mempermudah masyarakat dalam bermain piano.

2. Aplikasi Mini Piano ini dapat digunakan dikomputer mana saja yang memiliki system operasi Windows.

3. Penggunaan Aplikasi Mini Piano ini sangat mudah digunakan karena tampilan yang sederhana.

5.2 Saran

Dalam pembuatan dan perancangan Aplikasi Mini Piano ini diperlukan saran-saran yang mendukung Aplikasi agar dapat dirancang dengan lebih baik, adapun sara-saran tersebut yaitu :

1. Letak tombol-tombol Aplikasi Mini Piano ini tidak tersusun rapi. 2. Desain Aplikasi Mini Piano ini terlalu full color.

3. Keterangan symbol-simbol pada tut-tut piano tidakl sesuai dengan angka solmisasi.


(52)

DAFTAR PUSTAKA

Alam M, A.J. 2003. Belajar Sendiri Microsoft Visual Basic 6.0. Jakarta: PT. Elex Media Komputindo.

Panduan Tatacara Penulisan Skripsi Tugas Akhir.2008. Dokumen Nomor :

Akad/05/2005. Medan : Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara.

Pardosi, Mico. 2005. Bahasa Pemrograman Windows dan Internet Microsoft Visual Basic 6.0. Surabaya: Dua Selaras.

Suryani, taryana. 2009. Visual Basic. Bandung : Graha Ilmu.


(53)

LISTING PROGRAM

1.FORM PIANO

Private Declare Sub ReleaseCapture Lib "user32" ()

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long

Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hrgn As Long, ByVal bRedraw As

Boolean) As Long

Dim KeyState(0 To 255) As Byte Dim KeyState1(0 To 255) As Byte Dim LastKey As Integer

Dim Keys Dim DrumKeys Dim Drums

Dim Banks(0 To 4) As Integer Dim BaseKey As Integer

Dim InstrSelect As Integer Dim DrumSelect As Integer Dim Volume As Integer Dim Record As Boolean


(54)

Dim BeatPtr As Integer Dim BeatMode As Integer Dim BeatNext As Integer

Private Sub Command1_Click()

End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

If LastKey <> KeyCode Then LastKey = KeyCode

If KeyCode >= vbKeyF1 And KeyCode <= vbKeyF4 Then lblBank_MouseDown KeyCode - vbKeyF1,

vbLeftButton, 0, 0, 0

lblBank(KeyCode - vbKeyF1).BackColor = &H808080

End If

If KeyCode >= vbKeyF5 And KeyCode <= vbKeyF9 Then lblBeatCtrl_Click KeyCode - vbKeyF5

End If

KeyState1(KeyCode) = 1 CheckKeys

End If End Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)


(55)

KeyState1(KeyCode) = 0 CheckKeys

End Sub

Private Sub Form_Load() Dim hrgn As Long

hrgn = CreateRoundRectRgn(1, 1, Me.Width /

Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY, 50, 30)

SetWindowRgn Me.hwnd, hrgn, True

'prepare keyboard keys

Keys = Array(90, 83, 88, 68, 67, 86, 71, 66, 72, 78, 74, 77, 188, 76, 190, 186, 191 _

, 81, 50, 87, 51, 69, 52, 82, 84, 54, 89, 55, 85, 73, 57, 79, 48, 80, 189, 219)

'Keys = Array(44, 31, 45, 32, 46, 47, 34, 48, 35, 49, 36, 50, 51, 38, 52, 39, 53 _

, 16, 3, 17, 4, 18, 5, 19, 20, 7, 21, 8, 22, 23, 9, 24, 10, 25, 11, 26)

DrumKeys = Array(111, 106, 109, 103, 104, 105, 100, 101, 102, 97, 98, 99)

'DrumKeys = Array(53, 55, 74, 71, 72, 73, 75, 76, 77, 79, 80, 81)

Drums = Array(49, 57, 51, 45, 47, 48, 46, 42, 44, 37, 36, 40)

'load config

On Error GoTo SkipLoadConfig

Open App.Path & "\config.dat" For Input As #1 Input #1, DeviceID


(56)

Input #1, Drums(0), Drums(1), Drums(2), Drums(3), Drums(4), Drums(5), Drums(6), Drums(7), Drums(8), Drums(9), Drums(10), Drums(11)

SkipLoadConfig: Close #1

Dim MidiCaps As MIDIOUTCAPS MidiOpen

'prepare device

N = VBMIDI.midiOutGetNumDevs For i = 0 To N

If i > 0 Then Load mnuDevice(i)

midiOutGetDevCaps i, MidiCaps, Len(MidiCaps) mnuDevice(i).Caption = MidiCaps.szPname

Next

'prepare beats LoadBeat

For i = 0 To UBound(Beats)

If i > 0 Then Load mnuBeat(i)

mnuBeat(i).Caption = Beats(i).Name Next

mnuBeat_Click 0 BeatMode = -1 BeatNext = -2

'load instrument


(57)

For i = 0 To 127 Line Input #1, S t = Split(S, vbTab)

If i > 0 Then Load mnuPiano(i) mnuPiano(i).Caption = t(1) Next

Line Input #1, S For i = 35 To 66 Line Input #1, S t = Split(S, vbTab)

If i > 35 Then Load mnuDrum(i - 35) mnuDrum(i - 35).Caption = t(1)

Next Close #1 Volume = 127

mnuPiano_Click Banks(0) End Sub

Private Sub Form_Unload(Cancel As Integer) MidiClose

'save config

On Error GoTo SkipSaveConfig

Open App.Path & "\config.dat" For Output As #1 Print #1, DeviceID


(58)

Print #1, Drums(0), Drums(1), Drums(2), Drums(3), Drums(4), Drums(5), Drums(6), Drums(7), Drums(8), Drums(9), Drums(10), Drums(11)

Close #1

SkipSaveConfig: End Sub

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

FormDrag Me End Sub

Private Sub lblBank_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

lblBank(Index).BackColor = vbYellow If Button = vbRightButton Then

mnuMain(0).Tag = CStr(Index) PopupMenu mnuMain(0)

mnuMain(0).Tag = ""

lblBank(Index).BackColor = &H808080 Else

mnuPiano_Click Banks(Index) End If

End Sub

Private Sub lblBank_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) lblBank(Index).BackColor = &H808080


(59)

Private Sub lblBaseKey_Click() PopupMenu mnuMain(4)

End Sub

Private Sub lblBeat_Click()

lblBeat.BackColor = vbYellow PopupMenu mnuMain(2)

lblBeat.BackColor = &H808080 End Sub

Private Sub lblBeatCtrl_Click(Index As Integer) Select Case Index

Case 0: BeatNext = 0 Case 1: BeatNext = 2 Case 2: BeatNext = 3 Case 3: BeatNext = 4 Case 4: BeatNext = -1 End Select

If Index < 4 And BeatMode < 0 Then BeatMode = BeatNext: BeatNext = -2

End Sub

Private Sub lblBeatCtrl_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

lblBeatCtrl(Index).BackColor = vbYellow End Sub

Private Sub lblBeatCtrl_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) lblBeatCtrl(Index).BackColor = &H808080


(60)

End Sub

Private Sub lblDevice_Click()

lblDevice.ForeColor = vbYellow PopupMenu mnuMain(3)

lblDevice.ForeColor = &HC0C0C0 End Sub

Private Sub lblDrums_Click(Index As Integer) DrumSelect = Index

PopupMenu mnuMain(1) End Sub

Private Sub lblExit_Click() Unload Me

End Sub

Private Sub lblInstrument_Click()

lblInstrument.BackColor = vbYellow PopupMenu mnuMain(0)

lblInstrument.BackColor = &H808080 End Sub

Private Sub lblRate_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

lblRate.Tag = "1"

lblRate_MouseMove Button, Shift, X, Y End Sub


(61)

Private Sub lblRate_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If lblRate.Tag = "1" Then

Y = Y - lblRatePtr.Height / 2 If Y < 0 Then Y = 0

If Y > lblRate.Height - lblRatePtr.Height Then Y = lblRate.Height - lblRatePtr.Height

lblRatePtr.Top = lblRate.Top + Y

tmrBeat.Interval = 100 * (Y / (lblRate.Height - lblRatePtr.Height)) + Val(lblRatePtr.Tag)

End If End Sub

Private Sub lblRate_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

lblRate.Tag = "0" End Sub

Private Sub lblVolume_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If lblVolume.Tag = "1" Then

X = X - lblVolumePtr.Width / 2 If X < 0 Then X = 0

If X > lblVolume.Width - lblVolumePtr.Width Then X = lblVolume.Width - lblVolumePtr.Width

lblVolumePtr.Left = lblVolume.Left + X Volume = 127 * (X / (lblVolume.Width - lblVolumePtr.Width))

End If End Sub


(62)

Private Sub lblVolume_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

lblVolume.Tag = "1"

lblVolume_MouseMove Button, Shift, X, Y End Sub

Private Sub lblVolume_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

lblVolume.Tag = "0" End Sub

Private Sub mnuBaseKey_Click(Index As Integer) BaseKey = Index

lblBaseKey = mnuBaseKey(Index).Caption MidiClose

MidiOpen End Sub

Private Sub mnuBeat_Click(Index As Integer) BeatSelect = Index

BeatPtr = 0 BeatMode = 0

lblBeat.Caption = mnuBeat(Index).Caption lblRatePtr.Tag = CStr(Beats(Index).Rate) tmrBeat.Interval = Beats(Index).Rate End Sub

Private Sub mnuDevice_Click(Index As Integer) MidiClose


(63)

MidiOpen

mnuPiano_Click InstrSelect End Sub

Private Sub mnuDrum_Click(Index As Integer) Drums(DrumSelect) = Index + 35

End Sub

Private Sub mnuPiano_Click(Index As Integer) InstrSelect = Index

If mnuMain(0).Tag <> "" Then Banks(Val(mnuMain(0).Tag)) = Index

ChangeInstrument 0, Index

lblInstrument.Caption = mnuPiano(Index).Caption End Sub

Public Sub CheckKeys()

For i = 0 To UBound(Keys) N = Keys(i)

If KeyState(N) <> KeyState1(N) Then KeyState(N) = KeyState1(N)

Debug.Print N, KeyState(N) If KeyState(N) = 1 Then shpKeys(i).BackColor =

IIf(shpKeys(i).Height < 500, RGB(100, 100, 100), RGB(200, 200, 200))

StartNote 0, i + BaseKey + 48, Volume Else


(64)

shpKeys(i).BackColor = vbBlack Else

shpKeys(i).BackColor = vbWhite End If

StopNote 0, i + BaseKey + 48 End If

End If Next

For i = 0 To UBound(DrumKeys) N = DrumKeys(i)

If KeyState(N) <> KeyState1(N) Then KeyState(N) = KeyState1(N)

If KeyState(N) = 1 Then

shpDrums(i).BackColor = &H808080 StartNote 9, Drums(i), 127

Else

shpDrums(i).BackColor = &HC0C0C0 StopNote 9, Drums(i)

End If End If Next

End Sub

Public Sub FormDrag(TheForm As Form) ReleaseCapture

Call SendMessage(TheForm.hwnd, &HA1, 2, 0&) End Sub


(65)

Private Sub tmrBeat_Timer() If BeatMode >= 0 Then

t = Beats(BeatSelect).Data t = Split(t, ";")(BeatMode) t = Split(t, "|")

N = UBound(t) t = t(BeatPtr) t = Split(t, ",")

For i = 0 To UBound(t)

StartNote 9, t(i), Volume Next

BeatPtr = BeatPtr + 1 If BeatPtr > N Then

If BeatNext < -1 Then Select Case BeatMode

Case 0, 2, 3: BeatMode = 1 Case 4: BeatMode = -1

End Select Else

BeatMode = BeatNext BeatNext = -2

End If

BeatPtr = 0 End If

End If End Sub


(66)

Public Type BeatData Name As String Rate As Integer Data As String End Type

Public Beats(2) As BeatData

Public Sub LoadBeat()

Beats(1).Name = "Rock" Beats(1).Rate = 150

Beats(1).Data = "44,35,55||44||44,40||44|;" _ & "44,35||44,35||44,40||44||44,35||44||44,40||44|;" _ &

"44,50,35|50|44,48,35|48|44,47,35|47|44,45,35|45|44,35,55 ||44||44,40||44|;" _

& "44,35||46||40,44||42|;" _ & "44||44||44||44,35,55"

Beats(2).Name = "16 Beat" Beats(2).Rate = 100

Beats(2).Data = "44|44|44|44|44|44|44|44;" _ & "44,35|44|44|44|44,40|44|44|44;" _

&

"44,40|44,40|44,40|44,40|44,40|44,40|44,40|44,40|44,35,55 |44|44|44|44,40|44|44|44;" _

& "44,35|44|44|46|40|42|44|44;" _ & "44,35,55"

Beats(0).Name = "Disco" Beats(0).Rate = 170


(67)

Beats(0).Data = "44,35,55|46|44,40,35|42;" _ & "44,35|46|44,40,35|42;" _

&

"44,35|44,35,40|44,35,40|44,35,40|44,35,55|46|44,40,35|42 ;" _

& "44,35|44,40|44,40|44,35;" _ & "44,35,55"

' Beats(0).Name = "Test" ' Beats(0).Data = Array( _ ' Array(), _

' Array(), _ ' Array(), _ ' Array(), _ ' Array() _ ' )

End Sub

3.Modul_3

Option Explicit

Public Const MAXPNAMELEN = 32

' Error values for functions used in this sample. See the function for more information

Public Const MMSYSERR_BASE = 0

Public Const MMSYSERR_BADDEVICEID = (MMSYSERR_BASE + 2) ' device ID out of range

Public Const MMSYSERR_INVALPARAM = (MMSYSERR_BASE + 11) ' invalid parameter passed

Public Const MMSYSERR_NODRIVER = (MMSYSERR_BASE + 6) ' no device driver present


(68)

Public Const MMSYSERR_NOMEM = (MMSYSERR_BASE + 7) ' memory allocation error

Public Const MMSYSERR_INVALHANDLE = (MMSYSERR_BASE + 5) ' device handle is invalid

Public Const MIDIERR_BASE = 64

Public Const MIDIERR_STILLPLAYING = (MIDIERR_BASE + 1) ' still something playing

Public Const MIDIERR_NOTREADY = (MIDIERR_BASE + 3) ' hardware is still busy

Public Const MIDIERR_BADOPENMODE = (MIDIERR_BASE + 6) ' operation unsupported w/ open mode

'User-defined variable the stores information about the MIDI output device.

Type MIDIOUTCAPS

wMid As Integer ' Manufacturer identifier of the device driver for the MIDI output device

' For a list of identifiers, see the Manufacturer Indentifier topic in the

' Multimedia Reference of the Platform SDK.

wPid As Integer ' Product Identifier Product of the MIDI output device. For a list of

' product

identifiers, see the Product Identifiers topic in the Multimedia

' Reference of the Platform SDK.

vDriverVersion As Long ' Version number of the device driver for the MIDI output device.


(69)

' The high-order byte is the major version number, and the low-order byte is

' the minor version number.

szPname As String * MAXPNAMELEN ' Product name in a null-terminated string.

wTechnology As Integer ' One of the following that describes the MIDI output device:

' MOD_FMSYNTH-The device is an FM synthesizer.

' MOD_MAPPER-The device is the Microsoft MIDI mapper.

' MOD_MIDIPORT-The device is a MIDI hardware port.

' MOD_SQSYNTH-The device is a square wave synthesizer.

' MOD_SYNTH-The device is a synthesizer.

wVoices As Integer ' Number of voices supported by an internal synthesizer device. If the

' device is a port, this member is not meaningful and is set to 0.

wNotes As Integer ' Maximum number of simultaneous notes that can be played by an internal ' synthesizer device. If the device is a port, this member is not meaningful

' and is set to 0.

wChannelMask As Integer ' Channels that an internal synthesizer device responds to, where the least


(70)

' significant bit refers to channel 0 and the most significant bit to channel

' 15. Port devices that transmit on all channels set this member to 0xFFFF.

dwSupport As Long ' One of the

following describes the optional functionality supported by

' the device: '

MIDICAPS_CACHE-Supports patch caching. '

MIDICAPS_LRVOLUME-Supports separate left and right volume control.

'

MIDICAPS_STREAM-Provides direct support for the midiStreamOut function.

' MIDICAPS_VOLUME-Supports volume control. '

' If a device

supports volume changes, the MIDICAPS_VOLUME flag will be set

' for the dwSupport member. If a device supports separate volume changes on ' the left and right channels, both the MIDICAPS_VOLUME and the

' MIDICAPS_LRVOLUME flags will be set for this member.

End Type

Declare Function midiOutGetNumDevs Lib "winmm" () As Integer

Declare Function midiOutGetDevCaps Lib "winmm.dll" Alias "midiOutGetDevCapsA" (ByVal uDeviceID As Long, lpCaps As MIDIOUTCAPS, ByVal uSize As Long) As Long


(71)

Declare Function midiOutClose Lib "winmm.dll" (ByVal hMidiOut As Long) As Long

Declare Function midiOutOpen Lib "winmm.dll" (lphMidiOut As Long, ByVal uDeviceID As Long, ByVal dwCallback As Long, ByVal dwInstance As Long, ByVal dwFlags As Long) As Long

Declare Function midiOutShortMsg Lib "winmm.dll" (ByVal hMidiOut As Long, ByVal dwMsg As Long) As Long

Public Declare Function GetTickCount Lib "kernel32" () As Long

Public hMidi As Long Public DeviceID As Long Dim rc As Long

Dim midimsg As Long

Public Sub MidiOpen()

rc = midiOutOpen(hMidi, DeviceID, 0, 0, 0) If rc <> 0 Then MsgBox "Open MIDI Out failed" End Sub

Public Sub MidiClose()

rc = midiOutClose(hMidi)

If rc <> 0 Then MsgBox "Close MIDI Out failed" End Sub

Public Sub StartNote(ByVal Channel As Integer, ByVal Index As Integer, ByVal Volume As Integer)

midimsg = &H90 + (Index * &H100) + (Volume * &H10000) + Channel


(72)

End Sub

Public Sub StopNote(ByVal Channel As Integer, ByVal Index As Integer)

midimsg = &H80 + (Index * &H100) + Channel midiOutShortMsg hMidi, midimsg

End Sub

Public Sub ChangeInstrument(ByVal Channel As Integer, ByVal Inst As Integer)

midiOutShortMsg hMidi, &HB0 + Channel

midiOutShortMsg hMidi, 32 * &H100 + &HB0 + Channel midiOutShortMsg hMidi, Inst * &H100 + &HC0 + Channel End Sub

Public Sub Delay(S As Long) Dim N As Long

N = GetTickCount + S Do

DoEvents

Loop Until GetTickCount >= N End Sub


(1)

Beats(0).Data = "44,35,55|46|44,40,35|42;" _ & "44,35|46|44,40,35|42;" _

&

"44,35|44,35,40|44,35,40|44,35,40|44,35,55|46|44,40,35|42 ;" _

& "44,35|44,40|44,40|44,35;" _ & "44,35,55"

' Beats(0).Name = "Test" ' Beats(0).Data = Array( _ ' Array(), _

' Array(), _ ' Array(), _ ' Array(), _ ' Array() _ ' )

End Sub

3.Modul_3

Option Explicit

Public Const MAXPNAMELEN = 32

' Error values for functions used in this sample. See the function for more information

Public Const MMSYSERR_BASE = 0

Public Const MMSYSERR_BADDEVICEID = (MMSYSERR_BASE + 2) ' device ID out of range

Public Const MMSYSERR_INVALPARAM = (MMSYSERR_BASE + 11) ' invalid parameter passed

Public Const MMSYSERR_NODRIVER = (MMSYSERR_BASE + 6) ' no device driver present


(2)

Public Const MMSYSERR_NOMEM = (MMSYSERR_BASE + 7) ' memory allocation error

Public Const MMSYSERR_INVALHANDLE = (MMSYSERR_BASE + 5) ' device handle is invalid

Public Const MIDIERR_BASE = 64

Public Const MIDIERR_STILLPLAYING = (MIDIERR_BASE + 1) ' still something playing

Public Const MIDIERR_NOTREADY = (MIDIERR_BASE + 3) ' hardware is still busy

Public Const MIDIERR_BADOPENMODE = (MIDIERR_BASE + 6) ' operation unsupported w/ open mode

'User-defined variable the stores information about the MIDI output device.

Type MIDIOUTCAPS

wMid As Integer ' Manufacturer identifier of the device driver for the MIDI output device

' For a list of identifiers, see the Manufacturer Indentifier topic in the

' Multimedia Reference of the Platform SDK.

wPid As Integer ' Product Identifier Product of the MIDI output device. For a list of

' product

identifiers, see the Product Identifiers topic in the Multimedia

' Reference of the Platform SDK.

vDriverVersion As Long ' Version number of the device driver for the MIDI output device.


(3)

' The high-order byte is the major version number, and the low-order byte is

' the minor version number.

szPname As String * MAXPNAMELEN ' Product name in a null-terminated string.

wTechnology As Integer ' One of the following that describes the MIDI output device:

' MOD_FMSYNTH-The device is an FM synthesizer.

' MOD_MAPPER-The device is the Microsoft MIDI mapper.

' MOD_MIDIPORT-The device is a MIDI hardware port.

' MOD_SQSYNTH-The device is a square wave synthesizer.

' MOD_SYNTH-The device is a synthesizer.

wVoices As Integer ' Number of voices supported by an internal synthesizer device. If the

' device is a port, this member is not meaningful and is set to 0.

wNotes As Integer ' Maximum number of simultaneous notes that can be played by an internal ' synthesizer device. If the device is a port, this member is not meaningful

' and is set to 0.

wChannelMask As Integer ' Channels that an internal synthesizer device responds to, where the least


(4)

' significant bit refers to channel 0 and the most significant bit to channel

' 15. Port devices that transmit on all channels set this member to 0xFFFF.

dwSupport As Long ' One of the

following describes the optional functionality supported by

' the device: '

MIDICAPS_CACHE-Supports patch caching. '

MIDICAPS_LRVOLUME-Supports separate left and right volume control.

'

MIDICAPS_STREAM-Provides direct support for the midiStreamOut function.

' MIDICAPS_VOLUME-Supports volume control. '

' If a device

supports volume changes, the MIDICAPS_VOLUME flag will be set

' for the dwSupport member. If a device supports separate volume changes on ' the left and right channels, both the MIDICAPS_VOLUME and the

' MIDICAPS_LRVOLUME flags will be set for this member.

End Type

Declare Function midiOutGetNumDevs Lib "winmm" () As Integer

Declare Function midiOutGetDevCaps Lib "winmm.dll" Alias "midiOutGetDevCapsA" (ByVal uDeviceID As Long, lpCaps As MIDIOUTCAPS, ByVal uSize As Long) As Long


(5)

Declare Function midiOutClose Lib "winmm.dll" (ByVal hMidiOut As Long) As Long

Declare Function midiOutOpen Lib "winmm.dll" (lphMidiOut As Long, ByVal uDeviceID As Long, ByVal dwCallback As Long, ByVal dwInstance As Long, ByVal dwFlags As Long) As Long

Declare Function midiOutShortMsg Lib "winmm.dll" (ByVal hMidiOut As Long, ByVal dwMsg As Long) As Long

Public Declare Function GetTickCount Lib "kernel32" () As Long

Public hMidi As Long Public DeviceID As Long Dim rc As Long

Dim midimsg As Long

Public Sub MidiOpen()

rc = midiOutOpen(hMidi, DeviceID, 0, 0, 0) If rc <> 0 Then MsgBox "Open MIDI Out failed" End Sub

Public Sub MidiClose()

rc = midiOutClose(hMidi)

If rc <> 0 Then MsgBox "Close MIDI Out failed" End Sub

Public Sub StartNote(ByVal Channel As Integer, ByVal Index As Integer, ByVal Volume As Integer)

midimsg = &H90 + (Index * &H100) + (Volume * &H10000) + Channel


(6)

End Sub

Public Sub StopNote(ByVal Channel As Integer, ByVal Index As Integer)

midimsg = &H80 + (Index * &H100) + Channel midiOutShortMsg hMidi, midimsg

End Sub

Public Sub ChangeInstrument(ByVal Channel As Integer, ByVal Inst As Integer)

midiOutShortMsg hMidi, &HB0 + Channel

midiOutShortMsg hMidi, 32 * &H100 + &HB0 + Channel midiOutShortMsg hMidi, Inst * &H100 + &HC0 + Channel End Sub

Public Sub Delay(S As Long) Dim N As Long

N = GetTickCount + S Do

DoEvents

Loop Until GetTickCount >= N End Sub