Comments 12
А как насчёт декодеров, например, mp3? Получается, что нужно писать адаптер для phono? Типа mp3 -> wav -> phono
А зачем для wav нужен Pump? Неужели чтение wav файла будет отличаться от чтения mp3? Как по мне логично было бы иметь File Pump, Http Pump, memory Pump, а декодер должен уже действовать как Processor. Аналогично Sink
Вы правы, такая организация кода тоже может быть. Для конечного пользователя все станет немного проще, но есть несколько трудностей:
- Компоненты будут содержать код для определения, какую технологию использовать.
- Пакеты будут содержать очень много зависимостей.
- Декодер не получится использовать как процессор, потому что все данные в pipe.Pipe передаются в float64, а для такой задачи нужно работать непосредственно с массивами байт.
Часть этих проблем являются следствием ограничений в Go. Кроме того, деление пакетов по технологиям является идиоматическим и можно часто встретить в стандартной библиотеке.
Отличная идея для проекта. Даже если бы его не было, чужие api так и просятся быть завернутыми в объекты, чтобы с помощью композиции оформлять разные виды обработок.
Как обычно мучает вопрос об открывшихся прикладных применениях. Можете, пожалуйста, в следующих сериях больше рассказать об идеях, что можно в принципе интересного делать со звуком? В применении для веба. Кроме банального перекодирования и наложения музыки фоном, в голову ничего не приходит.
Спасибо за комментарий. Из реальных сценариев в голову приходят голосовой чат и аудио-стриминг. Я хотел сделать демо, где играл бы небольшой отрезок аудио и можно было бы в real-time накидывать на него разные эффекты. Такой server-side processing для аудио. Пока отложил в ящик из-за сложного (для меня) клиента.
В целом, клиент-серверное взаимодействие есть в планах и обязательно будет описано по мере запиливания.
Go часто упоминается в качестве его преемника
Что простите? Я б понял если бы назвали преемником Java, но C?
Видимо google «нехило башляет» за агрессивное «пропихивание» своего «поделия» во все отрасли «народного хозяйства», так что мы ещё увидим много статей из разряда: «давайте ловить мух в go», «давайте рисовать слонов в go», «давайте перепишем весь софт на go»… На подобные статьи хочется ответить: а давайте не будем… пихать не предназначенные для этого вещи во все дыры.
Давайте обрабатывать звук на Go