Sound lib haskell - PullRequest
       1

Sound lib haskell

5 голосов
/ 19 марта 2012

Мне нужно найти звуковую библиотеку для haskell. Я следовал инструкциям некоторых из них, которые представлены в haskell wiki http://www.haskell.org/haskellwiki/Sound_data_structures, но не смогли заставить их работать. Все, что мне нужно, это воспроизводить аудио файлы, независимо от их формата. Я занимаюсь разработкой игры с FunGen и ее временем для музыки. У меня могут быть проблемы с тем, чтобы заставить их работать вместе, но я даже не могу воспроизвести простой звуковой пример. Большинство моих проблем связано с установкой кабала или зависимостями, которые я не могу найти. Я использую Windows.

Ответы [ 2 ]

7 голосов
/ 19 марта 2012

Быть на Windows - главное ограничение в аудио Haskell. Большинство пакетов являются привязками к коду C, и они, как правило, либо ориентированы на Linux (JACK, Alsa), либо, в лучшем случае, номинально кроссплатформенны, но на практике их сложно создать и использовать в Windows. Вам нужно сначала собрать или установить библиотеку C перед установкой связывания Haskell.

Вы пробовали OpenAL ? Это, вероятно, наиболее хорошо подходит для того, что вы хотите сделать. Если вы устанавливаете библиотеки C OpenAL , связывание с Haskell должно быть довольно простым следующим шагом. Существует несколько дополнительных пакетов, предназначенных для упрощения некоторых распространенных задач, таких как ALUT и Alure.

В противном случае большинство других решений будет включать несколько пакетов, которые могут не работать вместе. hsndfile и hsndfile-vector хороши для чтения аудиофайлов (вам нужно установить libsndfile ), но они не воспроизводят звук. portaudio будет воспроизводить аудио (опять же, вам понадобится библиотека C portaudio ), но она не обновлялась некоторое время (и некоторые обновления крайне необходимы). Вы также должны быть в достаточной степени знакомы с цепочкой компиляторов C (например, MinGW или Cygwin), чтобы сначала установить необходимые библиотеки C.

Другим способом может быть привязка к выделенному звуковому языку, такому как Supercollider или Csound. Это было бы довольно тяжелым решением, но привязки, как правило, лучше поддерживаются, и по крайней мере Csound должен легко устанавливаться в Windows (раскрытие: я написал пакет hCsound ). Sox ( библиотека C / исполняемый файл ) также могут работать для вас (я никогда не пробовал это в Windows, но он утверждает, что работает).

1 голос
/ 19 марта 2012

Все, что мне нужно, это проигрывать аудио файлы независимо от их формата.

Лучшая ставка для этого будет hsndfile , упомянутая в превосходном ответе Джона Л. выше. Но вы можете захотеть сделать вашу жизнь проще на начальном этапе. Формат файла WAV - , очень простой формат , в основном состоящий из необработанных данных PCM с минимальным добавлением заголовков. Попробуйте получить файл WAV для воспроизведения, а затем расширьте свой кругозор оттуда.

Вы будете бороться в гору с отсутствием примера кода - и вам может понадобиться указатель на использование чужой памяти и другие не столь простые приемы - но есть неплохой пример для открытия и чтения файла WAV здесь .

Кроме того, при разработке под Windows научитесь любить флаг -fno-ghci-sandbox. Он сообщает ghci, что вы подключаетесь к библиотеке, которая использует собственный поток локального хранилища. Часто это единственный способ заставить некоторые внешние библиотеки работать в GHCi.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...