Как я могу построить UGens с более чем 5 аргументами в JCollider
JCollider - это Java-клиент для сервера синтеза звука SuperCollider.
У него тупой произвольный предел в 5 аргументов при создании UGens. (см. документацию для UGen здесь) Я имею в виду метод ar. Они сделали несколько копий этого метода для переменного числа аргументов, но остановились на 5, и мне нужно 7. Эти вспомогательные функции выглядят так, как они определены.
public static GraphElem kr( String name, GraphElem in1, GraphElem in2, GraphElem in3, GraphElem in4, GraphElem in5 )
{
return UGen.construct( name, kControlRate, -1, new GraphElem[] { in1, in2, in3, in4, in5 });
}
Я сам пытался использовать метод UGen.construct, но он, видимо, "не виден" там, где я пытаюсь его использовать (в другом пакете).
Затем я попытался исправить это в исходном коде JCollider, просто расширив вспомогательные методы до столь же глупого произвольного предела 7, но, увы, я не смог скомпилировать его из-за проблемы со скриптом муравья.
Как правильно использовать UGen.ar() с более чем 5 аргументами?
2 ответа
В то время я писал, что это была Java 1.4. Поэтому я решил, что 5 было хорошим числом:) (на самом деле оно покрывает некоторый разумный процент, например, около 98% угенов). Вы все еще можете использовать внутреннюю часть того, что вы вставили, чтобы обойти это, не касаясь источника, например, звоните UGen.construct( name, kControlRate, -1, new GraphElem[] { in1, in2, in3, in4, in5, in6, in7, ... });
Очевидно, что в настоящее время вы бы выбрали Varargs в стиле Java 5.
Если вы хотите использовать другой язык, попробуйте ScalaCollider, это будет намного приятнее.
Мне удалось обойти проблему сборки муравья и перекомпилировать JCollider с увеличенным лимитом 7.