Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Розробка синтезатора звуку в середовищі візуального програмування Delphi. Програмна реалізація

Реферат Розробка синтезатора звуку в середовищі візуального програмування Delphi. Програмна реалізація





а допомогою спеціальних пристроїв - аудіоплат.


.1 Частотний синтез


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

частотний синтез (FM - Fregueney Modulation);

хвильової синтез (WS - Ware Synthesys).

Частотні синтезатори (модулятори) генерують звукові коливання синусоїдальної форми заданої частоти і амплітуди, завдяки чому значно поліпшується якість звуку (порівняно зі спробами генерувати звук за допомогою прямокутних коливань). Наявність декількох генераторів дозволяє використовувати ці пристрої для синтезу складних звукових сигналів, у тому числі мови.

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

Вперше про застосування частотної модуляції для синтезу звуку задумався в 1966 році американець John Chowning, в майбутньому директор Центру комп'ютерних досліджень музики і акустики (CCRMA) Стенфордського університету, а на той момент часу - викладач композиції кафедри електронної музики.

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


2. Технологія розробки генератора звуку


Я розробив програму генератор звуку в середовищі Borland Delphi з використанням стандартних класів TMemoryStream (для зберігання звуку у вигляді бінарних даних) і TStrings (для зберігання характеристик конкретної частоти). Також описав новий клас TFreqObj і використовував досить нестандартний клас TWaveFormatEx для зберігання формату аудіоданих.

При запуску користувач може налаштувати гучність і частоту звуку, також він повинен вибрати якість звуку і час програвання в мілісекундах (0 - зациклити). Після натискання кнопки Старт користувач почує синусоїдальний звук відповідної гучності і частоти.

Зараз я детально опишу використовувані класи, а в подальшому детально розберу процедуру MakeComplexSound.


.1 Клас TFreqObj


Я створив клас TFreqObj для зручності зберігання і подальшого використання характеристик частоти звуку, таких, як:

- максимальна амплітуда синусоїди;

- частота (=);

- кількість коливань пружного середовища в секунду ().

Також в ньому описаний найпростіший конструктор з параметрами і функція приведення всіх параметрів в одну форматований рядок.


.2 Клас TWaveFormatEx


Для зберігання інформації про аудіо-даних ми будемо використовувати клас TWaveFormatEx. Структура TWaveFormatEx визначена наступним чином:

typedef struct

{wFormatTag; nChannels; nSamplesPerSec; nAvgBytesPerSec; nBlockAlign; wBitsPerSample;

WORD cbSize;

} WAVEFORMATEX;

Опис полів наступне: вказує тип аудіо-даних. Нас цікавлять тільки нестислі аудіо-дані (PCM), тому для нас потрібно щоб тут було значення 0x0001 (тобто 1) Визначається кількість каналов.определяет норму відбору в секунду. Зазвичай використовується значення 44100 Гц.чаще всього визначає середню швидкість передачі байтів в секунду.определяет вирівнювання в байтах.определяет кількість біт для вибірки. Зазвичай одно 8 або 16.определяет розмір всієї структури WAVEFORMATEX. Що в підсумку дорівнює 18 байтам.


3 Алгоритми і програмна реалізація генератора звуку


Суть методу генерації полягає в наступному: в текстовому вигляді зберігаються характеристики конкретної частоти (довжина хвилі, частота і т.д.) у форматі TFreqObj, потім створюється екземпляр класу TWaveFormatEx (він призначений для приведення звукової інформації в зрозумілий Аудіоплата вигляд), цей клас заповнюється інформацією про звук і потім в нього додається згенерувала залежно від характеристик конкретної частоти інформація (грубо кажучи, звук у вигляді бінарних даних) і відсилається функцією PlaySound на Аудіоплата.


3.1 Процедура MakeComplexSound


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

Заповнення формату TWaveFormatEx: WaveFormatEx do:=WAVE_FORMAT_PCM;:=Mono;:=SampleRate;:=$ 0008;:=(nChannels * wBitsPerSample) div 8;:=nSamplesPerSec * nBlockAlign; :=0;

end;

Заповнення об'єкта типу TMemoryStream для подальшого його відправлення в процедуру PlaySound:

MS [n]:=TMemoryStream.Create; MS [n] do:=(Duration * SampleRate) div 1000;:=Length (WaveId) + Length (FmtId) + SizeOf (DWORD) + (TWav...


Назад | сторінка 2 з 5 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Поширення звукових хвиль в повітряному середовищі. Швидкість звуку, число ...
  • Реферат на тему: Фізичні основи генерації звуку
  • Реферат на тему: Зйомка відеофільму формату S-VHS при запису звуку на жорсткий диск
  • Реферат на тему: Розробка синтезатора звуку
  • Реферат на тему: Робота звукорежисера в умовах запису чистового звуку до фільму формату HDCA ...