Aplikasi Mini Piano Menggunakan Microsoft Visual Basic 6.0
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