Аналіз методів оброблення звукової інформації в еом

Автор работы: Пользователь скрыл имя, 26 Октября 2013 в 14:52, курсовая работа

Описание работы

Сучасні методи звукозапису складається з двох основних частин: аналогового й цифрового. Раніше все записувалося на аналогові носії. Тому були дуже великі втрати при копіюванні з одного накопичувача інформації на інший. Інший мінус чисто аналогових методів полягає в погрішності в управлінні. Один раз повернув ручку потенціометра, ви потім не зможете точно зафіксувати її у вихідне положення.
З приходом цифрових технологій все істотно змінилося і спростилося. Стало можливим копіювання цифрового звукового сигналу, редагувати, копіювати окремі частини, накладати декількох звуків без втрат в якості.
Зараз "аналог" використовується по мінімуму - тільки мікрофони, звукознімачі, кабелі, попередні, мікшери та акустичні системи (колонки). Все інше покладається на плечі комп'ютера.
Цифрові методи не стоять на місці і розвиваються таким же темпом як і раніше.

Файлы: 1 файл

Курсач плеєр.doc

— 1.25 Мб (Скачать файл)

Процес вводу звукової інформації починається з натиснення кнопки ”Почати запис”, а закінчується натисненням ”Закінчити запис”. Призупинити процес вводу можливий після натиснення кнопки ”Пауза”, а відзолюється натисненням ”Відновити запис”. Для збереження інформацію що записали потрібно натиснути кнопку ”Збергти” і вибрати місце куди потрібно зберегти також давши назву звуковому файлу.

 

9 ТЕСТОВИЙ ПРИКЛАД

 

Після натиснення в стартовому вікні програми «Плеєр» кнопки ”Додати” відкриється діалогове вікно ”Открыть”, що дає змогу користувачу вибрати звуковий файл для відтворення даною прогрмаю. Вибір звукового файлу зображений на рисунку 9.1.

 

Рисунок 9.1 – Вибір файлу для відтворення

 

Після натиснення кнопки ”Відтворити” почнетсья вивід звукової інформації, дана кнопка стане неактивною. В цей самий момент нижній повзунок почне рухатись показуючи відтворені секунди. При переміщенні користувачем повзунка  праворуч чи ліворуч буде відтворюватися n-а секунда звукового файлу, який програється за допомогою програми «Плеєр». Зміна позиції повзунка зображена на рисунку 9.2.

 

Рисунок 9.2 – Переміщення повзунка

 

Після натиснення кнопок ”Призупинити”  та ”Відновити” відбудеться відповідна операція відтворення і відповідно   нижній повзунок зупиниться і продовже рух. Після натисненні кнопки ”Припинити” відтворення звукової інформації припиниться, нижній повзунок займе початкове положення. При натисеннеі кнопки ”Наступний трек” чи ”Попередній трек” почнеться відтворення відповідно наступного чи попереднього треку із списку відтворення якщо віб білше однієї позиції. При переміщенні верхнього повзунка праворуч чи ліворуч буде відповідно збільшуватися чи зменшуватися гучність відтворення звукової інформації.

При натисненні кнопки ”Почати запис” почнется процес запису звуку, кнопка ”Пауза”, ”Закінчити запис” та ”Зберігти” стане активною. Початок запису зображений на рисунку В.3.

 

Рисунок 9.3 – Початок запису звуку

 

Після натиснення кнопки ”Пауза”  введення звукової інформації призупинеться, відновити який можливо після  натисненні кнопки ”Відновити запис”, яка стане активною. Натискаючи кнопку зберігти зявитсья діалогове вікно яке дозволить вибрати місце на диску куди треба зберігти, і після натисненню кнопки ”Сохранить”, цього діалогового вікна , файл збережется у вказаній директорії.

Якщо введені звукові данні не були збереженні чи були змінені після збереження, тоді після натиснення кнопки ”Закінчити запис” з’явится діалогове вікно, в якому можливо буде вибрати одну з таких дій: зберігти і вийти, незберегти і вийти, невиходити з процесу вводу інформації. Вікно, що дозволяє зберегти або не зберігати в файл введену звукову інформацію зображений на рисунку В.4.

Рисунок 9.4 – Збереження звуку

 

ВИСНОВОК

 

Був  проведений детальний аналіз. Внаслідок якого було прийнято рішення використовувати імпульсно-кодову модуляцію для перетворення звуку в цифровий вид. І формат CD-Audio, що використовує кодування PCM з частотою дискретизації 44,1 кГц і розрядністю 16 біт. Розроблена програма має ряд переваг головними з яких є: зручний в керуванні інтерфейс, можливість вводити звукову інформацію доки є вільне місце на диску, використовую малу кількість оперативної пам’яті.

Дану програму  можливо легко модернізувати, так як вона розроблена на основі класів. Модернізація буде полягати у доданні функцій і встановленні нового стилю вікна. Покращивши функцію для регулювання гучності звуку, щоб можливо було змінювати на кожному каналі окремо. Використати функцію зміни кількості каналів запису.

 

ПЕРЕЛІК ПОСИЛАНЬ

 

  1. Електонна бібліотека. [Електронний ресурс]:  Цифрова звукозапис – Режим доступу: http://ru.wikipedia.org/wiki/Цифровая_звукозапись
  2. Електонна бібліотека. [Електронний ресурс]: Звукозапис – Режим доступу: http://uk.wikipedia.org/wiki/Звукозапис
  3. Електонна бібліотека. [Електронний ресурс]: Історій звукозапису – Режим доступу: http://ru.wikipedia.org/wiki
  4. Інформаційний довідник. [Електронний ресурс]: Кодування сигналів – Режим доступу:  http://library.tuit.uz/el_ucheb/digital_TV/coredata/Ch4.htm
  5. Інформаційний довідник. [Електронний ресурс]: Робота із звуковою картою – Режим доступу:  junglewin.narod.ru/sound.html#wavefile
  6. Інформаційний довідник. [Електронний ресурс]: Різноманітні цифрові аудіо формати – Режим доступу:  http://www.n-audio.com/articles/format .htm

 

Додатки

 

Додаток А 
(Обов’язковий) 
Технічне завдання

Міністерство освіти і науки, молоді та спорту України

Вінницький національний технічний  університет

Інститут автоматики, електроніки  та комп’ютерних систем управління

                                                                                        ЗАТВЕРДЖУЮ

                                                                                  Зав. каф. АІВТ, проф., д.т.н.

                                                                                   _____________ Р.Н. Квєтний

                                                                                   «__» _____________ 2011 р.

 

 

 

АНАЛІЗ МЕТОДІВ ОБРОБЛЕННЯ ЗВУКОВОЇ ІНФОРМАЦІЇ В ЕОМ

 

ТЕХНІЧНЕ ЗАВДАННЯ

На                       аналіз методів оброблення звукової інформації в ЕОМ 

1 Загальні відомості

Розповісти про  історію звукозапису та технічні засоби її реалізацї

2 Вимоги до програмного забезпечення

2.1 Вимоги до функціональних характеристик:

а) записувати та відтворювати звукову інформацію та закінчувати роботу цих процесів;

б) призупиняти та відновлювати процеси запису та відтворення;

в) додавати в список відтворення повні імена файлів що потрібно  відтворити з форматами wav та mp3;

г) зберігати введену звукову інформацію в форматі wav чи mp3;

д) збільшувати чи зменшувати гучність звуку відтворення;

е) змінювати положення відтворення;

ж) змінювати трек який відтворюється на інший, який занесений до  списку відтворення;

з) розміщувати треки  в довільному порядку в список відтворення

к) можливість вводити звукову інформацію доки на диску вільної  пам’яті більше 10 Мб. Після чого програма повинна попередити  користувача і запропонувати йому збільшити вільне місце на диску  для продовження вводу інформації;

2.2 Вимоги до програмного середовища

Розробка програмного  забезпечення при виконанні курсової роботи здійснюється мовою програмування С++, що добре підходить для створення зручного інтерфейсу користувача.

2.3 Вимоги до інформаційного забезпечення

Розроблювана програма повинна:

а) виводити авторську графічну заставку;

б) відображати поточний стан гучності та положення відтворення у  графічному вигляді;

3 Вимоги до технічного забезпечення

Для розроблюваної програми необхідо, щоб булла встановлена  операційна система – Windows  XP/Vista/Windows 7, жорсткий диск користувача повинен мати не більше 50 МБ вільної пам’яті, має бути присутній графічний дисплей, обов’язкова наявність пристроїв для прослуховування звукової інформації, обов’язковим є присутність пристрою позиціонування (маніпулятор миші, трекбол тощо).

 

Додаток Б 
(Обов’язковий) 
Лістинг программи

/*main..cpp*/

#include <windows.h>

#include "windef.h"

#include <commctrl.h>

#include "string"  //SendMessage(hWndButton[0], BM_CLICK, 0, 0);

using namespace std;

enum { ID_BUTTON };

enum { ID_SPLITTER };

enum { ID_TRACK_VOLUME };

enum { ID_TRACK_FROM=1 };

#include "message.h"

HWND hwnd; /* This is the handle for our window */

#include "play.h"

#include "record.h"

#define MAX_LOADSTRING 100

// Global Variables:

HINSTANCE hInst;

HWND hWndButton[12];

HWND hwndTrack[2];

HWND hWndBitmap;

Record_Sound gg;

Play_Sound pp;

/*  Declare Windows procedure  */

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

 

/*  Make the class name into a global variable  */

char szClassName[ ] = "WindowsApp";

 

int WINAPI WinMain (HINSTANCE hThisInstance,

                    HINSTANCE hPrevInstance,

                    LPSTR lpszArgument,

                    int nFunsterStil)

{

    MSG messages;            /* Here messages to the application are saved */

    WNDCLASSEX wincl;        /* Data structure for the windowclass */

    HICON Icon;

    Icon=(HICON)LoadImage(NULL, "Iconka.ico", IMAGE_ICON, 0, 0, LR_LOADFROMFILE);

    /* The Window structure */

    wincl.hInstance = hThisInstance;

    wincl.lpszClassName = szClassName;

    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */

    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */

    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */

    wincl.hIcon =Icon;

    wincl.hIconSm =Icon;

    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);

    wincl.lpszMenuName = NULL;                 /* No menu */

    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */

    wincl.cbWndExtra = 0;                      /* structure or the window instance */

    /* Use Windows's default color as the background of the window */

    wincl.hbrBackground = (HBRUSH)COLOR_ACTIVEBORDER+1; //COLOR_BACKGROUND+12;

 

    /* Register the window class, and if it fails quit the program */

    if (!RegisterClassEx (&wincl))

        return 0;

 

    /* The class is registered, let's create the program*/

    hwnd = CreateWindowEx (

           0,                   /* Extended possibilites for variation */

           szClassName,         /* Classname */

           "Плеєр",             /* Title Text */

           WS_SYSMENU|

           WS_MINIMIZEBOX|

           CS_DBLCLKS,          /* default window */

           CW_USEDEFAULT,       /* Windows decides the position */

           CW_USEDEFAULT,       /* where the window ends up on the screen */

           450,                 /* The programs width */

           175,                 /* and height in pixels */

           HWND_DESKTOP,        /* The window is a child-window to desktop */

           NULL,                /* No menu */

           hThisInstance,       /* Program Instance handler */

           NULL                 /* No Window Creation data */

           );

    /* Make the window visible on the screen */

SetTextColor((HDC)hWndButton[0], COLOR_BTNTEXT+1); 

hWndButton[0]=CreateWindow(TEXT("button"), TEXT("Почати запис"), BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,310, 10, 120, 20, hwnd,(HMENU)ID_BUTTON, hInst, 0);   

hWndButton[1]=CreateWindow(TEXT("button"), TEXT("Пауза"), BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,310, 30, 120, 20, hwnd,(HMENU)ID_BUTTON, hInst, 0);   

hWndButton[2]=CreateWindow(TEXT("button"), TEXT("Відновити запис"), BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,310, 50, 120, 20, hwnd,(HMENU)ID_BUTTON, hInst, 0);  

hWndButton[3]=CreateWindow(TEXT("button"), TEXT("Зберегти"), BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,350, 90, 80, 20, hwnd,(HMENU)ID_BUTTON, hInst, 0);  

hWndButton[4]=CreateWindow(TEXT("button"), TEXT("Закінчити запис"), BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,310, 70, 120, 20, hwnd,(HMENU)ID_BUTTON, hInst, 0);  

for (int i=1; i<=4; i++)

EnableWindow(hWndButton[i],FALSE);

 

hWndButton[5]=CreateWindow(TEXT("button"), TEXT("Додати "), BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,10, 10, 120, 20, hwnd,(HMENU)ID_BUTTON, hInst, 0);   

hWndButton[6]=CreateWindow(TEXT("button"), TEXT("Відтворити"), BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,10, 30, 120, 20, hwnd,(HMENU)ID_BUTTON, hInst, 0);   

hWndButton[7]=CreateWindow(TEXT("button"), TEXT("Призупинити"), BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,10, 50, 120, 20, hwnd,(HMENU)ID_BUTTON, hInst, 0);  

hWndButton[8]=CreateWindow(TEXT("button"), TEXT("Відновити"), BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,10, 70, 120, 20, hwnd,(HMENU)ID_BUTTON, hInst, 0);  

hWndButton[9]=CreateWindow(TEXT("button"), TEXT("Припнити"), BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,10, 90, 80, 20, hwnd,(HMENU)ID_BUTTON, hInst, 0);  

hWndButton[10]=CreateWindow(TEXT("button"), TEXT("Попередній трек"), BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,90, 90, 130, 20, hwnd,(HMENU)ID_BUTTON, hInst, 0); 

hWndButton[11]=CreateWindow(TEXT("button"), TEXT("Наступний трек"), BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,220, 90, 130, 20, hwnd,(HMENU)ID_BUTTON, hInst, 0); 

 

ShowWindow (hwnd, nFunsterStil);

InitCommonControls();

hwndTrack[0] = CreateWindowEx(0, TRACKBAR_CLASS, "Trackbar Control",         

                              WS_CHILD | WS_VISIBLE | TBS_AUTOTICKS | TBS_ENABLESELRANGE, 

                              130,10, 180, 20, hwnd, (HMENU) ID_TRACK_VOLUME, NULL, NULL);

SendMessage(hwndTrack[0], TBM_SETRANGE, TRUE,MAKELPARAM(0,65));

SendMessage(hwndTrack[0], TBM_SETPAGESIZE, 0, 5);

SendMessage(hwndTrack[0], TBM_CLEARTICS, true,0);

SendMessage(hwndTrack[0],TBM_SETPOS,true,pp.GetVolume());     

 

hwndTrack[1] = CreateWindowEx( 0, TRACKBAR_CLASS, "Trackbar Control",         

                             WS_CHILD | WS_VISIBLE | TBS_AUTOTICKS | TBS_ENABLESELRANGE, 

                             90, 110, 260, 20, hwnd, (HMENU) ID_TRACK_FROM, NULL, NULL);   

SendMessage(hwndTrack[1], TBM_SETRANGE, true,0);

 

HBITMAP hBmp =(HBITMAP)LoadImage(NULL, "Bmp", IMAGE_BITMAP, 180, 60, LR_LOADFROMFILE);

hWndBitmap=CreateWindow("Static",NULL,WS_CHILD | SS_BITMAP|WS_VISIBLE,

                        130,30,0,0,hwnd,0,hInst,NULL);

SendMessage(hWndBitmap,STM_SETIMAGE, (WPARAM)IMAGE_BITMAP,(LPARAM)hBmp);

 

    /* Run the message loop. It will run until GetMessage() returns 0 */

    while (GetMessage (&messages, NULL, 0, 0))

    {

        /* Translate virtual-key messages into character messages */

        TranslateMessage(&messages);

   

        /* Send message to WindowProcedure */

        DispatchMessage(&messages);

    }

 

    /* The program return-value is 0 - The value that PostQuitMessage() gave */

    return messages.wParam;

}

 

 

/*  This function is called by the Windows function DispatchMessage()  */

 

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

    switch (message)                  /* handle the messages */

    {                 

         case ID_LENGTH:

             SendMessage(hwndTrack[1], TBM_SETRANGE, TRUE,MAKELPARAM(0,pp.GetLength()));

             SendMessage(hwndTrack[1], TBM_SETPAGESIZE, 0, 10);

             SendMessage(hwndTrack[1], TBM_CLEARTICS, true,0);  

            break; 

         case ID_MOVE:

             SendMessage(hwndTrack[1],TBM_SETPOS,true,(int)lParam);  

            break;   

         case WM_HSCROLL:

                switch(GetDlgCtrlID(GetFocus()))

                 {

                  case ID_TRACK_FROM :

                        {   //надо критическую секциию  

                            if (pp.GetStatePlay()==0)

                             SendMessage(hwndTrack[1],TBM_SETPOS,0,0);

                            else

                             {

                            int Second=SendMessage(hwndTrack[1],TBM_GETPOS,0,0); 

                            pp.PlayFrom(Second);

                            SendMessage(hwndTrack[1],TBM_GETPOS,0,Second);

                            pp.SetSecond(Second);

Информация о работе Аналіз методів оброблення звукової інформації в еом