Цифровой прогрыватель с графическим интерфейсом
Научная работа, 10 Марта 2013, автор: пользователь скрыл имя
Описание
В теоретической части необходимо дать описание звукового эффекта (см. приложение 1), объяснить его принцип и создать рабочую модель цифрового аудио проигрывателя. Модель эффекта создаётся в пакете Matlab с использованием графического языка Simulink. (См.Методические указания по выполнению домашнего задания по ЦОС “Проектирование графического эквалайзера” и выполненный вариант данного домашнего задания ).
Работа состоит из 1 файл
Metodicheskie_ukazania.doc
— 388.00 Кб (Скачать документ)Федеральное государственное
бюджетное образовательное
«Московский государственный
технический университет имени Н.Э. Баумана»
(МГТУ им. Н.Э. Баумана)
Методические указания по выполнению курсовой работы по дисциплине
Цифровая обработка сигналов в информационных системах
ЦИФРОВОЙ ПРОИГРЫВАТЕЛЬ С ГРАФИЧЕСКИМ ИНТЕРФЕЙСОМ
Составили:
Недашковский В.М.,
Бимурзиев А.С.,
Козинко А.В.,
Порываев С.М.,
Савкин Д.Ю.
Москва, 2013
Содержание
Задание
- Разработать модель цифрового аудио проигрывателя в пакете Matlab, реализующую заданный звуковой эффект.
- Разработать программу цифрового аудио проигрывателя с графическим эквалайзером и с поддержкой заданного звукового эффекта.
Теоретическая часть
В теоретической части необходимо дать описание звукового эффекта (см. приложение 1), объяснить его принцип и создать рабочую модель цифрового аудио проигрывателя. Модель эффекта создаётся в пакете Matlab с использованием графического языка Simulink. (См.Методические указания по выполнению домашнего задания по ЦОС “Проектирование графического эквалайзера” и выполненный вариант данного домашнего задания ).
Практическая часть
В практической части необходимо разработать
и отладить программу цифрового
аудио проигрывателя с
- Для Windows самая рациональная связка - Visual Studio, WinForms, DirectShow.
- Для Mac OS X - XCode, Cocoa, CoreAudio.
Замечание. Приложения,
ипользующие GTK+, QT и GStreamer могут быть скомпилированы
и запущены на большинстве операционных
систем.
Ниже приводится список базовых функций, которые необходимо реализовать в программе цифрового аудио проигрывателя, а также список дополнительных функций, которые превращают проигрыватель с базовыми функциями в готовый для использования продукт и которые могут быть реализованы по желанию студента.
Базовые функции:
- Графический интерфейс
- Открытие файлов из графического интерфейса
- Воспроизведение музыки разных форматов
- Включение и отключение эффекта
- Изменение громкости
- Управление параметрами эффекта
- Перемещение по треку
- Графический эквалайзер
Дополнительные функции:
- Поддержка списков воспроизведения (плейлистов)
- Сохранение параметров и последнего трека
- Визуализация (spectrum, waveform, gloom...)
- Интеграция с системой (dbus, tray, etc...)
- Воспроизведение интернет-радио (rtsp/http...)
- Иметь настройки интерфейса, входов, выходов и тп
Таблица вариантов
Номер варианта (ИУ3-61: номер студента
в журнале, |
Звуковой эффект N |
Количество полос | |
1 |
Echo |
1 |
6 |
2 |
Delay |
2 |
6 |
3 |
Detonation |
3 |
6 |
4 |
Flanger |
4 |
6 |
5 |
Faser |
5 |
6 |
6 |
Compressor |
6 |
6 |
7 |
Reverb |
7 |
6 |
8 |
Expander |
8 |
6 |
9 |
Chorus |
9 |
6 |
10 |
Vibrato |
10 |
6 |
11 |
Echo |
1 |
8 |
12 |
Delay |
2 |
8 |
13 |
Detonation |
3 |
8 |
14 |
Flanger |
4 |
8 |
15 |
Faser |
5 |
8 |
16 |
Compressor |
6 |
8 |
17 |
Reverb |
7 |
8 |
18 |
Expander |
8 |
8 |
19 |
Chorus |
9 |
8 |
20 |
Vibrato |
10 |
8 |
21 |
Echo |
1 |
10 |
22 |
Delay |
2 |
10 |
23 |
Detonation |
3 |
10 |
24 |
Flanger |
4 |
10 |
25 |
Faser |
5 |
10 |
26 |
Compressor |
6 |
10 |
27 |
Reverb |
7 |
10 |
28 |
Expander |
8 |
10 |
29 |
Chorus |
9 |
10 |
30 |
Vibrato |
10 |
10 |
31 |
Echo |
1 |
7 |
32 |
Delay |
2 |
7 |
33 |
Detonation |
3 |
7 |
34 |
Flanger |
4 |
7 |
35 |
Faser |
5 |
7 |
36 |
Compressor |
6 |
7 |
37 |
Reverb |
7 |
7 |
38 |
Expander |
8 |
7 |
39 |
Chorus |
9 |
7 |
40 |
Vibrato |
10 |
7 |
Рекомендации по выполнению практической части курсовой работы
Поскольку задание не предполагает
необходимость низкоуровнего
В данной курсовой работе рекомендуется использовать один из следующих мультимедийных фреймворков: DirectShow, Gstreamer, CoreAudio.
Перед выбором фреймворка следует ознакомится с его возможностями и убедиться, что с его использованием можно реализовать нужный эффект.
Доступность фреймворков на разных платформах:
Windows |
Mac OS X |
Linux | |
GStreamer |
+ |
+ |
+ |
DirectShow |
+ |
- |
- |
CoreAudio |
- |
+ |
- |
Большая часть документации по фреймворкам Gstreamer и CoreAudio недоступна на русском языке, поэтому студентам, имеющим проблемы с чтением англоязычной документации рекомендуется использовать мультимедийный фреймворк DirectShow.
GStreamer
GStreamer — мультимедийный фреймворк, написаный на языке C и использующий систему типов GObject. Разрабатывается Red Hat и сообществом freedesktop.org. Используется в различных плеерах, редакторах, программах для создания конференций и портативных устройствах. Имеет множество привязок к другим языкам (C++, Python...). Используется в большинстве *nix-систем. Работает на системах Linux, Mac OS X, Windows.
Является свободным
Простой пример структуры конвеера для воспроизведения файла формата audio mpeg layer 3:
Каждый элемент имеет выход(
- Элемент filesrc загружает файл из источника, указанного в параметре “location”. Выход этого элемента представляет из себя поток данных, совпадающий с форматом файла. Например “audio/mpeg” для mp3.
- Элемент mad преобразует audio/mpeg в audio/x-raw, т.е. в массивы отсчётов.
- Элемент autoaudiosink получает семплы и передаёт их драйверу или аудио серверу для дальнейшего вывода на устройство.
Конвеер, изображенный на схеме, можно запустить без использования языков программирования. Для этого существует консольная утилита gst-launch. Тот же конвеер будет выглядеть так:
gst-launch filesrc location=”/path/to/file/song.
Этот же конвейер реализуем на языке
C:
#include <stdio.h>
#include <gst/gst.h>
// Путь к файлу
#define DEFAULT_FILE “/path/to/file/sing.mp3”
int main(int argc, char *argv[ ]) {
// Инициализация фреймворка
gst_init(&argc,&argv);
// Объявление всех элементов, конвеера
и основного цикла
GstElement *pipeline, *filesrc, *decoder,*sink;
GMainLoop *loop;
// Создаём элементы конвейера
pipeline = gst_pipeline_new("my_pipe");
filesrc = gst_element_factory_make("
decoder = gst_element_factory_make("mad"
sink = gst_element_factory_make("
// Передаём элементу filesrc параметр location
g_object_set(G_OBJECT(filesrc)
// Добавляем элементы в конвейер
gst_bin_add_many(GST_BIN(
// Соединяем элементы последовательно
gst_element_link_many(filesrc,
//После создания конвеера включаем его.
gst_element_set_state(
loop = g_main_loop_new(NULL,FALSE);
//Запускаем основной цикл
g_main_loop_run(loop);
}
Для создания различных эффектов используются специальные плагины (программные модули). Для создания большинства мультимедийных приложений достаточно встроенных плагинов, некоторые эффекты реалезуемы через элементы, другие - через пайпы.
Плагины в среде gstreamer делятся на 3 группы: good, bad и ugly (хороший, плохой, злой). В первую группу входят свободные кодеки,большинство способов ввода и вывода и некоторые эффекты. В bad входят большинство плагинов для работы с сетью и проприетарными (закрытыми) технологиями (dts). В ugly входят проприетарные и нестабильные кодеки.
Описание всех элементов и плагинов можно найти на сайте сообщества (на английском):
- Base (en): http://gstreamer.freedesktop.o
rg/data/doc/gstreamer/head/gst reamer-plugins/html/
(короткая ссылка: http://goo.gl/vUkYJ )
- Good (en): http://gstreamer.freedesktop.o
rg/data/doc/gstreamer/head/gst -plugins-good-plugins/html/
( http://goo.gl/ye2w3 )
- Bad (en): http://gstreamer.freedesktop.o
rg/data/doc/gstreamer/head/gst -plugins-bad-plugins/html/
( http://goo.gl/G6FMn )
- Ugly (en): http://gstreamer.freedesktop.o
rg/data/doc/gstreamer/head/gst -plugins-ugly-plugins/html/
( http://goo.gl/PLKg2 )
- Информацию по использованию gstreamer sdk на различных платформах можно найти на сайте (en) http://docs.gstreamer.com/disp
lay/GstSDK/Installing+the+SDK
( http://goo.gl/IxYUY )
CoreAudio
Core Audio — низкоуровневый интерфейс для работы с мультимедия, используемый на устройствах под MAC OS X и iOS.
Документация по CoreAudio (на английском):
- Официальная документация (en):
https://developer.apple.com/library/mac/#documentation/Music Audio/Conceptual/CoreAudioOver view/Introduction/Introduction .html
( http://goo.gl/QkHbE )
- Мультимедийные фреймворки для OS X (en): https://developer.apple.com/te
chnologies/mac/audio-and-video .html
( http://goo.gl/JmrDr )
- Пример приложения, использующего CoreAudio (en):
http://www.audiosynth.com/sinewavedemo.html
( http://goo.gl/CAkRt )
DirectShow
DirectShow — мультимедийный фреймворк, разработанный компанией Miscrosoft. Общий принцип работы похож на принцип работы фреймворка Gstreamer.
Для захвата, преобразования и воспроизведения мультимедия используются блоки, называемые фильтрами.
Для визуального представления
последовательностей фильтрров
может быть использована свободная
утилита graph-studio-next ( ht
Например, схема воспроизведения произвольного аудио файла с использованием стандартных элементов утилиты graph-studio-next будет выглядеть следующим образом:
Ниже приводятся ссылки на документацию фреймворка DirectShow, утилиту graph-studio-next и примеры использования фреймворка:
- Официальная документация в MSDN (en): http://msdn.microsoft.com/en-u
s/library/ms783323%28VS.85%29. aspx
( http://goo.gl/nW0aT )
- Утилита graph studio (en):
http://code.google.com/p/graph-studio-next/
( http://goo.gl/05Ru6 )
- Набор статей на русском (рус): http://directshow.wonderu.com/
%D1%81%D1%82%D0%B0%D1%82%D1%8C %D0%B8
( http://goo.gl/BzYSG )
Ниже приводится пример графического интерфейса (GTK+, GStreamer):