Цифровой прогрыватель с графическим интерфейсом

Автор работы: Пользователь скрыл имя, 10 Марта 2013 в 19:06, научная работа

Описание

В теоретической части необходимо дать описание звукового эффекта (см. приложение 1), объяснить его принцип и создать рабочую модель цифрового аудио проигрывателя. Модель эффекта создаётся в пакете Matlab с использованием графического языка Simulink. (См.Методические указания по выполнению домашнего задания по ЦОС “Проектирование графического эквалайзера” и выполненный вариант данного домашнего задания ).

Работа состоит из  1 файл

Metodicheskie_ukazania.doc

— 388.00 Кб (Скачать документ)

Федеральное государственное  бюджетное образовательное учреждение высшего профессионального образования

 «Московский государственный технический университет имени Н.Э. Баумана»  
(МГТУ им. Н.Э. Баумана)


 

 

 

 

Методические указания по выполнению курсовой работы по дисциплине

Цифровая обработка  сигналов в информационных системах

 

 

 

ЦИФРОВОЙ ПРОИГРЫВАТЕЛЬ  С ГРАФИЧЕСКИМ ИНТЕРФЕЙСОМ

 

 

 

 

Составили:

Недашковский В.М.,

Бимурзиев А.С.,

Козинко А.В.,

Порываев С.М.,

Савкин Д.Ю.

 

 

 

 

 

 

 

 

 

 

Москва, 2013

Содержание

 

 

Задание

  1. Разработать модель цифрового аудио проигрывателя в пакете Matlab, реализующую заданный звуковой эффект.
  2. Разработать программу цифрового аудио проигрывателя с графическим эквалайзером и с поддержкой заданного звукового эффекта.

Теоретическая часть

 

В теоретической части необходимо дать описание звукового эффекта (см.  приложение 1), объяснить его принцип  и создать рабочую модель цифрового  аудио проигрывателя. Модель эффекта создаётся в пакете Matlab с использованием графического языка Simulink. (См.Методические указания по выполнению домашнего задания по ЦОС “Проектирование графического эквалайзера” и выполненный вариант данного домашнего задания ).

Практическая часть

В практической части необходимо разработать  и отладить программу цифрового  аудио проигрывателя с графическим  эквалайзером и с поддержкой заданного  звукового эффекта, используя язык программирования C, C++ или Objective-C. Необходимо реализовать графический интерфейс, ипользуя WinForms (Windows), Gtk (Windows, Linux, Mac OS X), QT (Windows, Linux, Mac OS X), Cocoa (Mac OS X) .Рекомендуется использовать следующие связки:

  1. Для Windows самая рациональная связка - Visual Studio, WinForms, DirectShow.
  2. Для Mac OS X - XCode, Cocoa, CoreAudio.

Замечание. Приложения, ипользующие GTK+, QT и GStreamer могут быть скомпилированы и запущены на большинстве операционных систем. 

Ниже приводится список базовых  функций, которые необходимо реализовать  в программе цифрового аудио проигрывателя, а также список дополнительных функций, которые превращают проигрыватель с базовыми функциями в готовый для использования продукт и которые могут быть реализованы по желанию студента.

 

 

 

Базовые функции:

  1. Графический интерфейс
  2. Открытие файлов из графического интерфейса
  3. Воспроизведение музыки разных форматов
  4. Включение и отключение эффекта
  5. Изменение громкости
  6. Управление параметрами эффекта
  7. Перемещение по треку
  8. Графический эквалайзер

 

Дополнительные функции:

  1. Поддержка списков воспроизведения (плейлистов)
  2. Сохранение параметров и последнего трека
  3. Визуализация (spectrum, waveform, gloom...)
  4. Интеграция с системой (dbus, tray, etc...)
  5. Воспроизведение интернет-радио (rtsp/http...)
  6. Иметь настройки интерфейса, входов, выходов и тп

 

 

 

 

  • Таблица вариантов

 

Номер варианта

(ИУ3-61: номер студента  в журнале, 
ИУ3-62: 20+номер студента в журнале)

Звуковой эффект N

Количество полос 
эквалайзера M

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.

Является свободным программным  обеспечением, распространяемым под  лицензией GNU GPL. Основан на “пайпах”, т. е. данные обрабатываются последовательно. Pipeline (конвеер) - набор элементов, выход которых является входом следующих элементов. Элементы обычно работают параллельно или с небольшой задержкой через буффер. Имеет встроенную утилиту для тестирования пайпов, которая будет рассмотрена ниже.

 

Простой пример структуры конвеера для воспроизведения файла формата audio mpeg layer 3:

 

 

Каждый элемент имеет выход(source) и вход(sink). Данные обрабатываются и  передаются последовательно. Рассмотрим пример подробнее:

  1. Элемент filesrc загружает файл из источника, указанного в параметре “location”. Выход этого элемента представляет из себя поток данных, совпадающий с форматом файла. Например “audio/mpeg” для mp3.
  2. Элемент mad преобразует audio/mpeg в audio/x-raw, т.е. в массивы отсчётов.
  3. Элемент autoaudiosink получает семплы и передаёт их драйверу или аудио серверу для дальнейшего вывода на устройство.

 

Конвеер, изображенный на схеме,  можно  запустить без использования  языков программирования. Для этого  существует консольная утилита gst-launch.  Тот же конвеер будет выглядеть  так:

 

gst-launch filesrc location=”/path/to/file/song.mp3”  ! mad ! autoaudiosink

 

Этот же конвейер реализуем на языке 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("filesrc","mysrc"); // Чтение файла 
    decoder = gst_element_factory_make("mad","mydec");     // Декодер 
    sink = gst_element_factory_make("pulsesink","sink");   // Вывод звука

    // Передаём элементу filesrc параметр location

    g_object_set(G_OBJECT(filesrc),"location",DEFAULT_FILE,NULL);

 

    // Добавляем элементы в конвейер

    gst_bin_add_many(GST_BIN(pipeline),filesrc,decoder,sink,NULL);

 

    // Соединяем элементы последовательно

    gst_element_link_many(filesrc,decoder,sink,NULL);

    //После создания конвеера включаем его.

    gst_element_set_state(pipeline,GST_STATE_PLAYING);

    loop = g_main_loop_new(NULL,FALSE);

 

    //Запускаем основной цикл

    g_main_loop_run(loop);

}

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

Плагины в среде gstreamer делятся на 3 группы: good, bad и ugly (хороший, плохой, злой). В первую группу входят свободные кодеки,большинство способов ввода и вывода и некоторые эффекты. В bad входят большинство плагинов для работы с сетью и проприетарными (закрытыми) технологиями (dts). В ugly входят проприетарные и нестабильные кодеки.

Описание всех элементов и плагинов можно найти на сайте сообщества (на английском):

  1. Base (en): http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/ 
    (короткая ссылка: http://goo.gl/vUkYJ )

 

  1. Good (en): http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/ 
    ( http://goo.gl/ye2w3 )

 

  1. Bad (en): http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/ 
    ( http://goo.gl/G6FMn )

 

  1. Ugly (en): http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-ugly-plugins/html/ 
    ( http://goo.gl/PLKg2 )

 

  1. Информацию по использованию gstreamer sdk на различных платформах можно найти на сайте (en) http://docs.gstreamer.com/display/GstSDK/Installing+the+SDK  
    ( http://goo.gl/IxYUY )

 

 

  • CoreAudio

Core Audio — низкоуровневый интерфейс для работы с мультимедия, используемый на устройствах под MAC OS X и iOS.

 

 

Документация по CoreAudio (на английском):

  1. Официальная документация (en): 
    https://developer.apple.com/library/mac/#documentation/MusicAudio/Conceptual/CoreAudioOverview/Introduction/Introduction.html 
    ( http://goo.gl/QkHbE )

 

  1. Мультимедийные фреймворки для OS X (en): https://developer.apple.com/technologies/mac/audio-and-video.html  
    ( http://goo.gl/JmrDr )

 

  1. Пример приложения, использующего CoreAudio (en): 
    http://www.audiosynth.com/sinewavedemo.html 
    ( http://goo.gl/CAkRt )

  • DirectShow

DirectShow — мультимедийный фреймворк, разработанный компанией Miscrosoft. Общий принцип работы похож на принцип работы фреймворка Gstreamer.

Для захвата, преобразования и воспроизведения  мультимедия используются блоки, называемые фильтрами.

 

Для визуального представления  последовательностей фильтрров  может быть использована свободная  утилита graph-studio-next ( http://code.google.com/p/graph-studio-next ).

 

Например, схема воспроизведения  произвольного аудио файла с  использованием стандартных элементов  утилиты graph-studio-next будет выглядеть  следующим образом:

 

 

Ниже приводятся ссылки на документацию фреймворка DirectShow, утилиту graph-studio-next и примеры использования фреймворка:

  1. Официальная документация в MSDN (en): http://msdn.microsoft.com/en-us/library/ms783323%28VS.85%29.aspx 
    ( http://goo.gl/nW0aT )

 

  1. Утилита graph studio (en):  
    http://code.google.com/p/graph-studio-next/ 
    ( http://goo.gl/05Ru6 )

 

  1. Набор статей на русском (рус): http://directshow.wonderu.com/%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8 
    ( http://goo.gl/BzYSG  )

 

 

 

Ниже приводится пример графического интерфейса (GTK+, GStreamer):

 

 

Информация о работе Цифровой прогрыватель с графическим интерфейсом