Будет ли Java реалистичным вариантом для написания музыки DAW (Digital Audio Workstation) - PullRequest
3 голосов
/ 10 октября 2010

Я программирую на Java, делая много вещей, связанных с сетью, но мне нравилась идея создания очень простой DAW на каком-то языке. Я рассматривал C #, но, похоже, он больше не поддерживает Direct X (хотя есть некоторые библиотеки, которые работают с разной степенью успеха). Мне было любопытно, если бы у кого-то было мнение о том, чтобы проигрывать многоканальные звуки через Java. В какой-то момент мне также понадобится взломать какую-нибудь поддержку VST (которая, вероятно, не будет тривиальной. Я действительно боюсь, что мой единственный вариант будет C ++, и это было бы достаточно неприятно, чтобы я на самом деле не работал над этим (знаю немного C ++, но не настолько, чтобы написать что-то столь интенсивное).

У кого-нибудь есть идеи? Спасибо

Ответы [ 3 ]

3 голосов
/ 15 октября 2010

Поддержка VST в Java может быть достаточно простой в конце концов; Я слышал о положительном опыте с http://github.com/mhroth/jvsthost (то есть, с кем-то, с кем я разговаривал на форуме, он, похоже, довольно быстро справился с работой, успешно запустив несколько различных синтезаторов).

Напомним: лично я занимаюсь разработкой программного обеспечения на Java, которое использует SuperCollider в качестве звукового бэкэнда (отказ от ответственности: мой реальный опыт звучания Java ограничен). Хотя было бы возможно построить DAW вокруг SuperCollider, я бы не стал рекомендовать его в качестве инструмента для этой работы. Тем не менее, я также не совсем понимаю, почему вы хотите создать DAW в первую очередь ... если вы решите, что хотите исследовать альтернативные способы создания музыки с помощью компьютеров, вы можете взглянуть на SC (также ChucK Мне было очень легко начать и довольно весело) :-)

В любом случае, вернемся к вопросу ... хотя я обычно обращаюсь к Java, многое из этого также пойдет на C #:

Традиционно, сборка мусора была источником беспокойства, когда кто-то делал что-то, где время в Java было бы важным; в DAW, например, это может проявляться как неточная синхронизация или щелчки в выходных данных, когда GC прерывает программу достаточно долго, чтобы он не смог обработать полный буфер. Это будет особенно верно, если вы хотите использовать небольшие буферы для низкой задержки и / или не заботиться о количестве создаваемого мусора. Тем не менее, я не хочу распространять FUD о звуке Java: как я уже упоминал, я не очень активно использовал его, и в любом случае я считаю, что эти проблемы улучшаются. Это, безусловно, проблема, о которой вам нужно знать, но, вероятно, это не ограничитель показа.

Я полагаю, что большим узким местом в любом DAW будет файловый ввод-вывод, который не должен страдать в Java, пока все правильно.

Если вы начнете выполнять интенсивный DSP на многих каналах одновременно, то может оказаться, что производительность вычислений Java не совсем оптимальна (хотя, вероятно, на самом деле неплоха); однако, если вы в основном выполняете базовое микширование в своем DAW-коде и любом DSP с VST, то его все равно не должно быть проблемой.

Что касается фактического ввода-вывода аудио, я вижу, что есть также реализации ASIO для Java, если вам будет интересно. У меня даже нет косвенного опыта с ними, поэтому я действительно не буду ручаться за них. Java 1.7 должна иметь улучшенную поддержку аудио с низкой задержкой, FWIW (хотя из того, что я читал, приложения, которые они имеют в виду, не такие, как DAW). Поддержка DirectX, я не думаю, должен быть основным фактором для DAW. В этом смысле вы, возможно, не захотите отказываться от C #, поскольку это очень хороший язык.

3 голосов
/ 10 октября 2010

Уже есть некоторые DAW, использующие платформу Java ( frinika или javaDAW например). Поэтому я думаю, что это разумный вариант.

1 голос
/ 10 мая 2013

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

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