• Tidak ada hasil yang ditemukan

BAB IV IMPLEMENTASI

4.3 Implementasi Pada Penyiar

Penyiar berperan dalam menjalankan dan memainkan form media player . program yang dibangun di asumsikan bahwa lingkup sebuah radio kecil dimana tidak dibutuhkan penglompokkan hak akses dalam menjalankan aplikasi ini. Pada laporan ini penulis mengasumsikan bahwa media player dijalankan oleh penyiar.

4.3.1 Class form Media player

Pada dasarnya class form media player ini adalah form utama penyiar mengolah seluruh kegiatan pengolahan audio dan data. Pada pemrograman C# ruang lingkup yang perlu di tambahkan adalah library dari directX.dll yaitu

Namespace : using Microsoft.DirectX.AudioVideoPlayback; using

Microsoft.DirectX.DirectSound; using Microsoft.DirectX.DirectPlay;. dimana

60

public partial class media_player : Form . memiliki variable yang digunakan

dalam menjalankan file audio adalah private Audio music;

Gambar 4.10 Class Media_Player

4.3.2 Fungsi Jam dan Tanggal

Fungsi ini dibuat untuk menamplkan informasi waktu pada saat penyar masuk kedalam Media Player. Dibuat dari toolbox Visual Studio yaitu timer.

time.Text = DateTime.Now.ToString("HH:mm:ss"); day.Text = DateTime.Now.DayOfWeek.ToString(); date.Text = DateTime.Now.ToShortDateString() }

Gambar 4.11 timer_Tick

61 4.3.3 Fungsi tombol play dan stop

Fungsi botton click play dan button click adalah menjalankan file audio yang telah dimasukkan ke dalam playlist. Bila indek audio yang telah dipilih !=-1 maka file tersebut dapat di putar. Index akan dapat d stop ketika music tidak sama dengan null.

Gambar 4.12 Tombol play dan stop

4.3.4 Fungsi volume

Fungsi ini untuk mengatur besar kecilnya suara yang akan di mainkan fungis ini sudah ada pada directX yaitu music.Volume = volume_scroll.Value;

Gambar 4.13 Volume bar 4.3.5 Fungsi track detail

Fungsi ini untuk menampilkan status music dengan menampilakan title, artist dan location untuk song, adv_title, advertiser dan version untuk iklan.

Gambar 4.14 Track detail

62 4.3.6 Fungsi Timersong_Tick

pada library audio terdapat current position dan duration. Saat file dijalankan current position akan berjalan sesuai dursi sebuah music.

Gambar 4.14 timersong_Tick

4.3.7 Fungsi DataGridViewRow song

Fungsi public static List<song> get_list_song() adalah fungsi yang ada pada class dbconnection.cs yang nantinya akan dikoneksikan dengan fungsi yang ada pada class media_player.cs, yaitu pada DataGridViewRow dengan nama list_song.

Gambar 4.15 List song

63 4.3.8 Fungsi pencarian lagu

Media_player dapat dengan mudah mencari song dengan mudah dengan menggunakan source code :

private void search_song_TextChanged(object sender, EventArgs e)

{ list_song.DataSource = (search_song.Text == "") ? dbconnection.get_list_song() : dbconnection.get_list_song(search_song.Text);

}

public static List<song> get_list_song(string input){ establised();

List<song> list = new List<song>();

MySqlCommand command = connection.CreateCommand();

command.CommandText = "SELECT DISTINCT * FROM song INNER JOIN genre using(id_genre) inner join category using(id_category) WHERE song_title LIKE @input OR song_artist LIKE @input";

MySqlParameter param = new MySqlParameter(); param.ParameterName = "@input";

param.Value = "%" + input + "%"; command.Parameters.Add(param);

MySqlDataReader reader = command.ExecuteReader(); while (reader.Read())

{

song x = new song();

x.id = reader["ID_SONG"].ToString(); x.title = reader["SONG_TITLE"].ToString(); x.artist = reader["SONG_ARTIST"].ToString(); x.category = reader["CATEGORY"].ToString(); x.genre = reader["GENRE"].ToString(); x.location = reader["SONG_LOCATION"].ToString(); x.played = (int)reader["SONG_PLAYED"]; list.Add(x); } release(); return list;}

Pada saat penyiar akan melakukan pencarian artist ataupun title perintah param.Value = "%" + input + "%"; Query LIKE @input berguna untuk melakukan pencarian yang didasarkan pada penggalan dari suatu data.

64

Gambar 4.16 Searching song 4.3.8 DataGridViewRow advertisement

List iklan/advertisment akan secara otomatis muncul perjamnya setelah di set iklan oleh admin.

public static List<adv> get_list_adv(DateTime time) { establised();

List<adv> list = new List<adv>();

MySqlCommand command = connection.CreateCommand();

command.CommandText = string.Format("select * from advertisement adv, adv_detail adv_d, adv_time adv_t, advertiser advser where adv.id_adv = adv_d.id_adv and adv_d.id_time = adv_t.id_time and time_start <= @time and time_end >= @time and advser.id_advser = adv.id_advser");

MySqlParameter param = new MySqlParameter(); param.ParameterName = "@time";

param.Value = time.ToString("HH:mm:ss"); command.Parameters.Add(param);

MySqlDataReader reader = command.ExecuteReader(); while (reader.Read())

{

adv x = new adv();

x.id = int.Parse(reader["ID_ADV"].ToString()); x.advertiser = reader["ADVSER_NAME"].ToString(); x.title = reader["ADV_TITLE"].ToString(); x.version = reader["ADV_VERSION"].ToString(); x.date_start = DateTime.Parse(reader["ADV_START"].ToString()); x.date_end = DateTime.Parse(reader["ADV_END"].ToString()); x.location = reader["ADV_LOCATION"].ToString(); x.played = int.Parse(reader["ADV_PLAYED"].ToString()); list.Add(x); } release(); return list }

65

Query where adv.id_adv = adv_d.id_adv and adv_d.id_time = adv_t.id_time and time_start <= @time and time_end >= @time and advser.id_advser = adv.id_advser") menjelaskan bahwa antara time_start dan time_end list akan menampilkan advertisement.pada list.

Gambar 4.18 List advertisement

4.3.9 PlayList

Play list merupakan tempat data yang keluar dari list song dan list advertisment di eksekusi.

private void play_song() { if(playlist.SelectedIndex !=-1) {

if (playlist.Items[playlist.SelectedIndex] is song) { try {

if (music != null) stop_song();

song temp = (song)playlist.Items[playlist.SelectedIndex]; music = new Audio(temp.location);

music.Play(); music.Volume = volume_scroll.Value; song_time_bar.Maximum = (int)music.Duration; track_detail.Clear(); track_detail.AppendText("Title \t: " + temp.title + "\n"); track_detail.AppendText("Artis \t: " + temp.artist + "\n");

66 track_detail.AppendText("Album \t: " + temp.location + "\n"); timersong.Enabled = true; status_play.BackColor = Color.LightGreen; temp.played++; dbconnection.update_song_count(temp); }

catch (Exception ex) {

MessageBox.Show("file tidak ditemukan"); } } if (playlist.Items[playlist.SelectedIndex] is adv) { try {

if (music != null) stop_song();

adv temp = (adv)playlist.Items[playlist.SelectedIndex]; music = new Audio(temp.location);

music.Play(); music.Volume = volume_scroll.Value; song_time_bar.Maximum = (int)music.Duration; track_detail.Clear(); track_detail.AppendText("Title \t: " + temp.title + "\n"); track_detail.AppendText("Advertiser \t: " + temp.advertiser + "\n"); track_detail.AppendText("Version \t: " + temp.version + "\n"); timersong.Enabled = true; status_play.BackColor = Color.LightGreen; dbconnection.add_report_adv(temp, DateTime.Now); }

catch (Exception ex) {

MessageBox.Show("file tidak ditemukan"); }

} }}

Pada fungsi play_song dapat dilakukan dengan parsing . dimana ketika playlist mengenali bahwa dia song atau adv maka file tersebut dapat di play. Track_detail juga akan berubah warna menjadi hijau ketika music di play. Untuk song dbconnection.update_song_count(temp); menunjukkan bahwa pada class dbconnection terdapat fungsi untuk menambahkan jumlah song yang di play ke dalam kolom song_played . begitu juga dengan adv pada Class dbconnection.

add_report_adv(temp, DateTime.Now); menunjukkan bahwa pada Class

67

dbconnection terdapat fungsi untuk menambahkan hasil iklan yang diplay berupa waktu kedalam database report.

Gambar 4.17 PlayList 4.3.10 Save Playlist

Daftar Playlist yang telah dibuat oleh penyiar dapat disave dan akan dibuka sewaktu-waktu sesuai kebutuh penyiar. Hal ini dapat mempermudah seorang penyiar untuk menyiapkan daftar lagu atau daftar iklan yang akan di putar

Gambar 4.18 Save PlayList

Dokumen terkait