Kamis, 05 November 2015

Cara Memutar Musik Anti Mainstream dengan Thread

Kali ini saya akan membahas memutar musik dengan thread. sebeleumnya apa itu thread? thread adalah bagian kecil dari suatu progres yang bisa dijadwalkan oleh sistem operasi.

Thread juga disebut  sebagai proses ringan (lightweight).
a. Single Threading
   Adalah sebuah proses yang hanya memiliki satu thread yang berjalan . Biasanya fungsi thread ini digunakan sebagai penggendali jalannya proses.

b. Multi Thread
   Adalah proses yang dimiliki lebih dari satu thread yang berjalan didalamnya , sehingga dalam hal ini proses dapat menjalankan lebih dari satu thread.

\
Cukup sekilas tentang thread , sekarang kita akan mengoding di linux ubuntu untuk memutar musik di linux.
berikut kodungnya :

#include<stdio.h>
#include<string.h>
#include<pthread.h>
#include<stdlib.h>
#include<unistd.h>
#include <dirent.h>

pthread_t tid[5];
char lagu[100];
int t;
void* playandmenu (void *arg)
{
    unsigned long i = 0;
    pthread_t id = pthread_self();
    int flag;
    if(pthread_equal(id,tid[0]))
    {
        printf("1. list\n2. play [Nama_lagu]\n3. pause\n4. continue\n5. stop\n");
        fflush(stdout);
    }
    else if(pthread_equal(id,tid[1]))
    {
        system("ls /home/aditya/Modul3/Nomor1/Playlist/ | grep .mp3");
    }
    else if(pthread_equal(id,tid[2]))
    {
        system("pkill mpg123");
        system("clear");
        char popup[]="mpg123 -q /home/aditya/Modul3/Nomor1/Playlist/";
        strcat(popup,lagu);
        system(popup);
    }
    else if(pthread_equal(id,tid[3]))
    {
        sleep(t);
        system("pkill -STOP mpg123");
    }
    else if(pthread_equal(id,tid[4]))
    {
        sleep(t);
        system("pkill -CONT mpg123");
    }
    else if(pthread_equal(id,tid[5]))
    {
        sleep(t);
        system("pkill mpg123");
        system("clear");
    }
    return NULL;
}

int main(void)
{
    while(1)
    {
        int err;
        char pilihan[10];
        scanf("%s", pilihan);
        system("clear");
        if(strcmp(pilihan,"help")==0)
        {
            system("clear");
            err=pthread_create(&(tid[0]), NULL, &playandmenu, NULL);
        }
        else if(strcmp(pilihan,"list")==0)
        {
            system("clear");
            err=pthread_create(&(tid[1]), NULL, &playandmenu, NULL);
        }
        else if(strcmp(pilihan,"play")==0)
        {
            system("clear");
            scanf(" %[^\t\n]s",lagu);
            err=pthread_create(&(tid[2]), NULL, &playandmenu, NULL);
        }
        else if(strcmp(pilihan,"pause")==0)
        {
            system("clear");
            scanf("%d", &t);
            err=pthread_create(&(tid[3]), NULL, &playandmenu, NULL);
        }
        else if(strcmp(pilihan,"continue")==0)
        {
            system("clear");
            scanf("%d", &t);
            err=pthread_create(&(tid[4]), NULL, &playandmenu, NULL);
        }
        else if(strcmp(pilihan,"stop")==0)
        {
            system("clear");
            scanf("%d", &t);
            err=pthread_create(&(tid[5]), NULL, &playandmenu, NULL);
        }
    }
    return 0;
}


saya menggunakan 5 thread dalam kodingan ini , thread pertama untuk melihat list lagu di folder playlist yang anda buat, thread kedua untuk memutar musik , thread ketiga untuk mem-pause musik, thread ke empat untuk continue musik yan g telah di pause , thread ke lima untuk men-stop musik. Sebelum itu pastikan anda telah mengistall "MPG123" player pada linux anda.

Kodingan ini harus disertai folder playlist yang berisi lagu akan dimainkan.
selamat mencoba :)

Tidak ada komentar:

Posting Komentar