Перегрузка с использованием цикла: теперь после выполнения процедуры нет звука.Linux

Ответить
Anonymous
 Перегрузка с использованием цикла: теперь после выполнения процедуры нет звука.

Сообщение Anonymous »

Окружающая среда

[*]Версия SuperCollider: 3.13.0
[*]Операционная система: Void Linux
[*]Архитектура: i686
[*]Настройка: nvim с scnvim
[*]Версия Jack: 1.9.22
< /ul>
Как я облажался:
Я использовал цикл внутри процедуры (ниже) для запуска звуков и забыл добавить .wait. Я немедленно остановил интерпретатор SClang и подождал, пока все будет сделано. Через минуту перезагрузился.
После перезагрузки и запуска Джека (

Код: Выделить всё

jackd -d alsa
) с SuperCollider все работало отлично. Ротационная часть воспроизводится, но после того, как я ее останавливаю, я больше не могу издавать никаких звуков на сервере scsynth, даже если они фигурируют как функциональные узлы. После закрытия Jack появляется сообщение об ошибке:

Код: Выделить всё

Jack main caught signal 2
Cannot write socket fd = 18 err = Broken pipe
CheckRes error
Could not write notification
ClientNotify fails name = system notification = 1 val1 = 0 val2 = 0
Released audio card Audio0
audio_reservation_finish
Если я запускаю Джека из SuperCollider с помощью s.boot, происходит то же самое, но сервер Джека невозможно остановить:

Код: Выделить всё

jack_control exit
выдает --exit, jack_control status выдает сообщение «Остановлено», но qjackctl показывает, что Jack работает, и jackd не может запустить новый сервер, поскольку сервер «по умолчанию» уже активен code>.
Более того, s.quit также не может закрыть сервер scsynth. Если я перезапущу sclang, вручную остановив+запустив, сервер scsynth все еще работает, и проблема «перезапускается»: я могу воспроизводить звуки без запуска scsynth (как если бы серверы jack и scsynth никогда не останавливались) и после Я останавливаю процедуру, новые звуки не воспроизводятся (например, повторная оценка процедуры).
Мне интересно, можно ли решить проблему после переустановки Jack и удаления пакета. Я был удивлен, осознав, что такое поведение все еще можно воспроизвести. То есть, если я перезапустил sclang, то у меня все еще был звук (видимо через сервер Джека, но как?), который прекратился после Рутина. Перезагрузка, очевидно, решила эту проблему. Возможно, это мое неправильное представление о том, как работает сервер.
По всей видимости, это проблема SuperCollider (?), потому что когда я не могу воспроизводить звуки в SC, Audacity и других программах < em>может воспроизводить записи через сервер Jack.
Резюме: SuperCollider прекрасно воспроизводит различные синтезаторы, но может воспроизводить процедуру только ОДИН РАЗ; после запуска процедуры ничего нельзя воспроизвести (даже программу еще раз).
Рассматриваемая процедура (из этого руководства по SynthDef)

Код: Выделить всё

(
var bpm, beat, tatum, map;
s = Server.default;
bpm = 130;
beat = 60 / bpm;
tatum = beat / 4;

map = Dictionary[
$k -> \kick, // kick is a synth!
];

Routine({
loop {
"kkkkkk".do { |character|
if(character == $.) {
tatum.wait;
} {
if(map[character].notNil) {
s.bind { Synth(map[character]);
tatum.wait;
};
};
};
};
};
}).play;
)
Я пробовал:
  • Повторно инициализировать серверы jack и scsynth.
  • Повторная инициализация sclang.
  • Переустановка пакета jack.
  • Переустановка пакета supercollider.
  • Перезагрузка (больше раз, чем я готов принять).
Ничто из этого не решило проблему.
В данный момент я просто надеюсь, что каким-то образом не сломал свой компьютер!
PD: В окне сообщений SuperCollider нет сообщений об ошибках.< /п>

Подробнее здесь: https://stackoverflow.com/questions/786 ... -a-routine
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»