Мы уже рассказывали об утилите FarPlay, которая позволяет передавать аудио с минимальными задержками и писать музыку с коллегами по цеху, находящимся за сотни километров. Сегодня продолжим тему и поговорим о Ninjam, авторы которого нашли интересный подход к проблеме рассинхронизации звука.
Что такое Ninjam
Это — open source приложение записи треков через интернет. Исполнители могут петь, играть на фортепиано, гитаре, саксофоне или любом другом инструменте — главное, чтобы его звук можно было записать на компьютере. Проект развивает компания Cockos Incorporated, которой принадлежат права на цифровую звуковую рабочую станцию REAPER. В прошлом отдельные члены команды работали над такими решениями, как Gnutella (потомок Napster), Kaillera и даже Winamp.
Ninjam использует формат OGG Vorbis для сжатия звука, а затем отправляет его на сервер, роль которого играет компьютер одного из участников онлайн-джема. Этот сервер рассылает аудиопоток другим участникам сессии в одной виртуальной комнате (по аналогии с чатами). Для комфортной игры четырёх человек серверу достаточно исходящего канала в 768 Кбит/с. Для восьми персон этот показатель составляет 3 Мбита/с. Руководство по настройке сервера можно найти на официальном сайте.
Вопрос задержек
Главная проблема любого приложения для совместной игры на муз. инструментах через интернет — латентность. Она сбивает с толку, мешает исполнять трек. Подавляющее большинство приложений — в том числе уже упомянутый FarPlay — стремится сократить задержку. Авторы Ninjam пошли иным путем и, наоборот, её увеличили.
Клиент Ninjam записывает и передает звук цикличными интервалами — например, в 15 секунд. То есть каждый музыкант слышит (и играет параллельно) предыдущим интервалам, записанным другими участниками джема. Пользователи говорят, что первое время привыкнуть к такой схеме сложно, но потом все становится на свои места.
И кое-что еще
В контексте утилиты Ninjam стоит упомянуть открытый проект Jamtaba для подключения к серверам Ninjam. По сути, это графический интерфейс, заточенный под поиск комнат для совместного музицирования с участниками комьюнити по всему миру.
Утилита также предлагает компактный набор настроек для управления громкостью и балансом отдельных музыкальных инструментов. Автор поставляет утилиту as is, то есть без технической поддержки, но желающие могут найти исходный код на GitHub.
Больше муз. сервисов и другие материалы у нас в блоге: