Програмування звуку

Аудіо MPEG

Перше засідання Групи експертів по рухомих зображень (Motion Pictures Experts Group, MPEG) відбулося в травні 1988 року Ця група була створена рішенням Міжнародної організації по стандартизації (International Organization for Standardization, ISO) з метою розробки стандартного способу компресії видеопоследовательностей K кінця 1992 ISO був офіційно схвалений перший стандарт з цілої групи стандартів, відомої також під назвою […]

Стиснення інформації без втрат

Існує безліч різних типів даних, які необхідно стискати, тому за минулі роки була проведена величезна робота, спрямована на розробку методів стиснення інформації без втрат B результаті вийшли алгоритми загального призначення, які вишукують повторювані послідовності в двійкових даних Якщо їм вдається виявити такі послідовності, то вони можуть стиснути дані, замінивши послідовності кодами, їх позначають Продукує декомпресію […]

Вперед до об’єктно-орієнтованого програмування

Обєкт(Object) це, насправді, просто химерна назва структури (struct) Важлива особливість полягає в тому, що обєкт, крім даних, може містити функції Ось приклад буфера, але з двомафункціями-членами (Member functions), які також називають методами (methods)

Читання файлів формату IFF/8SVX

Визначимо єдиний клас IffRead Щоб використовувати його, відкрийте файл і проініціалізіруйте новий обєкт IffRead відкритим файлом Лістинг 192 Програма iffh #include &quotaudioh&quot #include &quotcompressh&quot bool IsIffFile(istream &ampfile)

Доріжки MIDI

Зауважимо, що доріжка відрізняється від каналу MIDI Хоча найбільш поширений підхід для многодорожечной файлу програвати кожну доріжку в окремому каналі, композитори можуть залучити стільки доріжок, скільки захочуть, і будь-яким чином використовувати їх для гри на інструментах по різних каналах

Слоти і фрейми

Фрейми MPEG вимірюються всторінках,або слотах (slot) Для Layer I сторінка дорівнює 4 байтам, для Layer 2 і Layer 3 слот становить 1 байт Завдання пошуку чергового заголовка вирішується елементарно: ми знаємо швидкість передачі бітів в вступників даних і частоту дискретизації одержуваного на виході звуку Крім того, нам відомо кількість відліків, що складають один пакет: 384 […]

Виклик підсистеми

B функції зворотного виклику використовується стандартний метод узгодження характерного для мови C механізму зворотних викликів з класами C + + Як і більшість систем, що дозволяють використовувати зворотні виклики, Windows дозволяє застосувати єдиний покажчик, який буде передаватися цієї функції (B Windows параметр dwInstance описується як DWORD, проте він майже завжди використовується для передачі покажчика) Я […]

Програвач MIDI

B деякій мірі всі представлені мною класи читання аудіофайлів є інтерпретаторами Клас WaveRead, наприклад, інтерпретує заголовок та інформацію про стиснення для формування потоку значень AudioSample Інструкції, які повинен інтерпретувати програвач MIDI, гораз-

Відтворення потоку подій MIDI

Тепер, коли MIDI вже лічені в память, а дельти перетворені в кількість відліків, здійснити програвання подій досить просто Метод GetSamples швидко переглядає потік подій для кожного дельта інтервалу, відповідно до його тривалістю, здійснюється програвання всіх каналів кожна подія направляється до відповідного канал

Удосконалення C: покращена конструкція struct

Самою очевидною новою особливістю C + + є конструкція class Конструкція class в C + + це майже те ж саме, що struct, тому я на деякий час відволікся від нової форми запису і поясню, як же C + + покращує конструкцію struct Навіть якщо ви не цікавилися обєктно-орієнтованим программиро-