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

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

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

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

Файлы: 1 файл

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

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

Існують декілька методів вводу  звукової інформації: DirectSound і стандартна бібліотека мультимедії. Підсистема DirectSound побудована за об'єктно-орієнтованому принципом відповідно до моделі COM (Component Object Model - модель об'єктів-компонентів, або складових об'єктів) і складається з набору інтерфейсів. Кожен інтерфейс відповідає за об'єкт певного типу - пристрій, буфер, службу повідомлення та інші. DirectSound не підтримує звукові формати, відмінні від PCM. Під стандартною мультимедійною бібліотекою в даному випадку розуміється набір бібліотек, що підключаються динамічно. Стандартною вона названа в силу того, що вище згадані бібліотеки входять в стандартну поставку будь 32 розрядний версії Windows. Для роботи зі звуком нам знадобитися бібліотека winmm.dll. Ця бібліотека підтримує роботу з потоком оцифорованного звуку, роботу з MIDI, роботу з мікшерами звуку.

Зважаючи на складність написання  програм за допомогою DirectSound, краще використовувати стандартну бібліотеку мультимедії.

Самий популярний формат стиснення  на сьогоднішній день - це МР3. Формат МР3 (MPEG Layer 3) був розроблений, після низки проміжних форматів, інститутом Фраунхофера у Німеччині. Взагалі, формат. МР3 заснований на обмані людського вуха. Після деяких досліджень з'ясувалося, що людському слуху властиво адаптуватися до появи нових звуків, що виражається в підвищенні порога чутності. Тому одні звуки здатні маскувати (тобто, робити суб'єктивно нечутними) інші. Ось і в цьому форматі частина звуків, які, як вважає відповідна теорія, робляться нечутними, просто забираються із загального звучання. Після чого кодується за методом Хоффмана. Обов'язково слід враховувати те, що у форматі МР3, програми що стискають звук з оригінального, не є стандартизованими, тобто кожен грамотний програміст може реалізувати свою схему стиснення. А стандартам підкоряються лише декодери, що призводить до того, що якість відтворення формату МР3 далеко не завжди залежить від плеєра, що програє цей файл. У зв'язку з різними здібностями та уподобаннями реалізаторів різних кодерів, одні з них краще справляються з симфонічною музикою, інші - з роком і металом, треті - з репом і так далі.

Формат WMA, або Microsoft Windows Media Audio, є серйозною альтернативою МР3. Файли цього формату мають розширення. WMA і. ASF, і володіють явною перевагою перед МР3 на низьких швидкостях потоку даних і втрачають його при збільшенні швидкості подачі інформації на кодек. На основі WMA розроблений стандарт WMA DRM, який реалізує захист від копіювання. Файли, створені на основі цього формату, можна записувати на пристрої відтворення, типу МР3-флеш-плеєрів, проте скопіювати їх звідти не можна.

Формат WAV є основним аудіо форматом для багатьох систем відтворення цифрового звуку і використовується як стандартний формат звукових файлів в персональних комп'ютерах. До того ж, він має солідний набір специфікацій, неабияк поповнився за останній час. Його повна назва - Microsoft RIFF / WAVE - Resource Interchange File Format / Wave - формат файлів передачі ресурсів / хвильова форма, і створений він був інженерами Microsoft і Intel. У свою чергу, WAV розшифровується як Waveform Audio File Format. WAV формат є найбільш якісним представленням звуку, тому що будь стиснення MPEG-кодерами (MP2, MP3, AC3) веде до втрати якості. Звук, записаний в WAV "44 кГц, 16 біт, стерео” прирівнюється по якості до Audio CD. Він непотребує кодиків для відтворення [5]

 

4 ОПИС ЛОГІЧНОЇ СТРУКТУРИ ПРОГРАМИ

 

Дану програму можна  поділити на три частини. Дві з них особливо важливі. В першій міститься клас Play_Sound в якому описуються методи по відтворенню звукової інформації. Всі методи цього класу можна поділити на дві частини:

а) основні, тобто ті за допомогою яких можна керувати процесом  відтворення звукових даних

1) void AddToPlaylist() – відкриває вікно для вибору файлів і  заносить шляхи до вектора PlayList, після чого сортує ці шляхи. Алгоритм   наведено на рисунку В.3.

2) void Play_() відтворює файл за номером що міститься в змінній  PositionInList. Вона також запускає метод MoveTrack та посилає  повідомлення віконній функції з текстом ID_LENGTH для можливості  здійснення керуванням програми в графічному меню. В цьому методі  описуєтся вічний цикл, в я кому в залежності від зміни значення змінної  StatePlay виконується одна з операцій призупинення відтворення,  відновлення відтворення, відтворення з певного місця, закінчити  відтворення. Вийти з цього циклу можливо після закінчення треку чи  примусового виходу. Алгоритм даного метода наведено на рисунку В.2

3) void ResumePlay() змінює значення змінної StatePlay на 1 і  повідомляє про це метод Play_.

4) void Stop() змінює значення змінної StatePlay на 0 і повідомляє  про це функцю Play_.

5) void Pause() змінює значення змінної StatePlay на 2 і повідомляє  про це метод Play_.

6) void PlayFrom(int From) змінює значення змінної StatePlay на 3 і  повідомляє про це метод Play_.

7) void SetVolume(int Volume) даний метод змінює гучність звуку обох каналів відповідно значенню яке приймає в якості параметру. Це значення повинно коливатися від 0 до 65535. Надалі цю функцію можливо модернізувати для зміни гучності окремо правого і лівого каналу, якщо це буде необхідно. Шляхом прийманням двох параметрів відповідно для правого і лівого каналу і використанням макросу MAKELPARAM з цими параметрами для з’єднання їх в одне значення.

8) void OfRandom() використавши даний метод ми розмістимо  шляхи до файлів, що повинні відтворюватися в довільному порядку.  Використовуючи функцію з бібліотеки algorithm для роботи з векторами.

Алгоритм метода наведено на рисунку  В.4

9) void Sort() цей метод навпаки попередньому розміщає шляхи до  файлів в відсортованому порядку.

10) int  NextTrak() завдяки цьому методу здійснена можливість  відтворення наступного треку за номером PositionInList який кожного  разу збільшується на один при кожному виклику. Якщо цей метод був  визваний в той час коли відтворювалася остання доріжка то PositionInList  обнуляєтся і відтворювати починається з початку. Даний метод невиконує  вище вказані операції якщо розмір вектора меньший одиниці.

11) void PreviousTrak() робота цього методу аналогічна  попередньому завинятком того що номер PositionInList зменшується на  одиницю.

б) службові, ті які використовуются для роботи основних і взаємодії з  інтерфейсом

     1) int  Play() даний метод перевіряє чи не пустий вектор і в тому  випадку якщо він непустий, створює потік в якому буде виконуватися  функція Play_.

2) int  GetStatePlay() даний метод потрібний для отримання встану  вдтворення.

    3) int  GetVolume() повертає значення яке необхідне  для візуалізації  гучності звуку в графічному меню.

4) void MoveTrack() створює потік в якому виконуєтся функція  MoveTrack_.

5) void MoveTrack_() дана функція послає повідомлення ID_MOVE  віконній функції, з можливими параметрами нуль, якщо відтворення  припинилося чи почалось відтворення наступного треку,  і часом Second  який  відповідає кількістю секунд протягом якого відтворювався трек.  Забезпечуючи можливість графічному інтерфейсу відображати час  відтворення трека.

6) void SetSecond(int Sec) змінює значення змінної Second на час Sec  який отримано при переміщенні в часі по треку в графічному інтерфейсі

7) int  GetLength() повертає значення яке відповідає розміру треку в  секундах що відтворюється.

В другій частині міститься клас Record_Sound який відповідає за  введення звукової інформації з мікрофона. Всі методи цього класу можна  також поділити на дві частини:

а) основні

1) void Record_() вводить звукову інформацію з мікрофона. Алгоритм метода наведено на рисунку В.1. В цьому   методі заповняються всі структури які необхідні для запису. Головними є структури WAVEFORMATEX в якій описується параметри запису і структура WAVEHDR для опису буфера який будемо використовувати для тимчасового зберігання звукової інформації. Так як цей буфер знаходиться в оперативній пам’яті то його розмір треба максимально обмежити, тому інформацію з буферу будемо записувати в тимчасовий файл, який буде зберігатися в одному каталозі з програмою. Далі перевіряється наявність пристрою вводу імпульсно-кодової модуляції. Якщо він існує то підготовляється буфер для передачі пристрою вводу і створює тимчасовий файл TempSound внісши в нього інформацію про формат даних який буде містити в ньому. Далі входимо в вічний цикл  для можливості “необмежено” записувати. В ньому будемо передавати підготовлений буфер драйверу пристрою вводу після чого запустимо процес вводу даних в буфер. Дочекавшись наповнення буферу переписуємо його в файл. Через те, що дана програма не обмежує користувача в довжині запису робимо перевірку чи є вільне місце на диску для запису. При кожному виконанні тіла циклу буде виконуватися перевірка змінної StateRecords, якщо її значення буде дорівнювати два то запис буде призупинена доки не отримаємо повідомлення від метода StartRecord, якщо  чотири то введення даних в файл буде звершено. Після завершення звільнимо буфер та пристрій запису.

.   2) void PauseRecord() змінює значення змінної StateRecords на два і  зупиняємо пристрій вводу.

3) void StartRecord() відновлює процес вводу, змінює значення  змінної StateRecords на один і робимо відмітку що файл був змінений. Це  необхідно щоб знати, чи потрібно питати користувача про необхідність  зберігти інформацію.

4) int StopRecord() призупиняє процес вводу даних викликавши метод PauseRecord, і якщо інформація не була збережена чи була змінена відображає повідомлення з питанням про необхідність збереження. В залежності від відповіді користувача може зберігати інформацію у заданий користувачем каталог або не зберігати й закінчити запис, чи продовжити можливість відновити запис, якщо користувач помилково визвав метод закінчення запису.

5) void Save() зберігає введені звукові данні через мікрофон в  заданий каталог, який обрав користувач в діалоговому вікні яке викликав  цей метод

6) void SetChannel(char Channel) задає можливість введення кількості каналів запису. Можливі варіанти один (моно) чи два (стерео). За замовчуванням стоїть один канал.

б) службові

      1) void Record() створює потік в якому виконується метод Record_

2) int GetFreeMemory() даний метод перевіряє наявність вільного  місця на диску, в якому створюється файл TempSound. Якщо об’єм менше  10 МБ то повідомляє користувача про закінчення пам’яті і пропонує  користувачеві звільнити місце і продовжити запис чи припинити.

3) int GetTimeRecord() повертає час запису звукової інформації в  секундах

4) int GetStateRecords() повертає стан запису для можливості  керування графічним інтерфейсом.

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

 

5 ТЕХНІЧНІ ЗАСОБИ, ЩО ВИКОРИСТОВУЮТЬСЯ  У РОЗРОБЛЕНІЙ ПРОГРАМІ

 

При написанні програмного забезпечення важливою частиною є вивчення апаратного забезпечення, яким користуєтся споживач. Це дає змогу розробити програму з вимогами, які будуть задоволені технічним забезпеченням користувача.

Вимоги програмного забезпечення набагато повільніше зростають ніж характеристики апаратного забезпечення. Незважаючи на це, вимоги програм

повинні бути мінімальними.

Для нормальної роботи розробленої програми необхідний комп’ютер який задовольняє такі мінімальні вимоги:

а) ОС: Windows 2000 Professional/XP/Vista/Windows 7

б) Тактова частота процесора 233 МГц/233 МГц/800 МГц/1 ГГц

в) ОЗУ 64 МБ/64 Мб/512 МБ/1 Гб

г) Вільне місце на жорсткому диску 30 Мб

д) Звукова карта, мікрофон, колонки або навушники

 

6 ВИКЛИК ТА ЗАВАНТАЖЕННЯ ПРОГРАМИ

 

Для запуску програми необхідно її скопіювати на персональний комп’ютер, інсталяції не потребує, та двічі клікнути лівою кнопкою миші на іконці програми. Чи запустити програму на виконання іншими існуючими методами. Після запуску повинно з’явитися стартове вікно програми, яке зображене на рисунку 6.1.

 

 

 

Рис. 6.1 – Стартове вікно  програми

 

7 ВХІДНІ ТА ВИХІДНІ ДАНІ

Щоб користувач відтворив звукову  інформацію йому потрібно клікнути по кнопці ” Додати ”, і в діалоговому вікні вибрати файли звукової інформації, формат яких відповідає стандартним форматам операційної системи чи встановленим кодекам на персональному комп’ютері.

Вихідні данні це файл який утвориться після того як користувач введе звукову інформацію і збереже його на комп’ютері. Формат цього файлу WAV. Збережений звуковий файл зображений на рисунку 7.1.

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

 

8 ІНСТРУКЦІЯ ДЛЯ КОРИСТУВАЧА

8.1 Відтворення звукової  інформації

 

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

8.2 Введення звукової  інформації

 

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