Discussion:
SERVER FAILURE with SC 3.6.6 on OSX 10.9.5
Arthur Sauer
2014-10-02 17:12:54 UTC
Permalink
Computer got stolen. Had software running under SC 3.6.6 on OSX 10.8.
Bought a new mac. Will, of course, only startup with OSX 10.9. Had to do
all this in a hurry, since we were starting rehearsals for a tour in
France. Tonight we have the premiere...

During the rehearsal today I lost connection to the samples.

The message I get is: FAILURE IN SERVER /n_set Node 1010 not found
(the node number is, of course, just an example)

Is this a known problem. Is this solved in in 3.7beta?

What can I do to find its cause?
Can anyone repair it? I would even be willing to pay. We will be touring
the next two months...

Any advise is welcome.

Best regards,

Arthur Sauer







_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Josh Parmenter
2014-10-02 17:17:37 UTC
Permalink
looks like all your nodes were killed? Has it happened more then once?
Could a server:freeAll been sent by accident?
I haven’t had any problems like this on 10.9 or 10.10 - so I doubt it is OS related.
Josh
Post by Arthur Sauer
Computer got stolen. Had software running under SC 3.6.6 on OSX 10.8.
Bought a new mac. Will, of course, only startup with OSX 10.9. Had to do
all this in a hurry, since we were starting rehearsals for a tour in
France. Tonight we have the premiere...
During the rehearsal today I lost connection to the samples.
The message I get is: FAILURE IN SERVER /n_set Node 1010 not found
(the node number is, of course, just an example)
Is this a known problem. Is this solved in in 3.7beta?
What can I do to find its cause?
Can anyone repair it? I would even be willing to pay. We will be touring
the next two months...
Any advise is welcome.
Best regards,
Arthur Sauer
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
xs4all sauermusic
2014-10-02 20:57:28 UTC
Permalink
It happend more than once. All nodes were killed. I have been touring with this software for two months already without problems on 10.8. The only differences: computer, OS.

Any pointers on what to look for (Console, XCode, SC)? Worth trying 3.7 (would nor like to have another unknown in the equation)?

Other suggestions?

Best regards,

Arthur



Sent from Arthur's iPhone
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Stefan Nussbaumer
2014-10-02 21:13:05 UTC
Permalink
Could you provide some code that triggers the behavior on your machine?

I've seen this happening here too. However, it was related to my setup:
I'm using Ndef a lot in combination with the Conductor quark. Within
Conductor the NodeProxy:-set gets overwritten. However, there has been a
change to the original (the overwritten) method that made NodeProxy:-set
fail as defined within Conductor.

Just a shot in the dark but my guts feeling says it's not related to the
OS but something that has changed in SC...

regards, stefan
Post by xs4all sauermusic
It happend more than once. All nodes were killed. I have been touring with this software for two months already without problems on 10.8. The only differences: computer, OS.
Any pointers on what to look for (Console, XCode, SC)? Worth trying 3.7 (would nor like to have another unknown in the equation)?
Other suggestions?
Best regards,
Arthur
Sent from Arthur's iPhone
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Arthur Sauer
2014-10-02 23:25:14 UTC
Permalink
Post by Stefan Nussbaumer
Could you provide some code that triggers the behavior on your machine?
I'm using Ndef a lot in combination with the Conductor quark. Within
Conductor the NodeProxy:-set gets overwritten. However, there has been a
change to the original (the overwritten) method that made NodeProxy:-set
fail as defined within Conductor.
I do not use Ndef nor Conductor, and, to be honest, I do not know to much
about these.

To give some perspective: this show has been touring for 13 years. All
samplers (E64, MPC2000XL) have SCSI interfaces. Backup systems used Zip
and Jaz (cool stuff for computer historians...). In short: the way of the
way dodo. After a SCSI disk died I decided to program these samplers in SC.

So what I have is mainly soundfileplayers that simulate OneShot samples,
Looping samples, mono and stereo.

These players are spread out over 8 servers:
var server1 = Server.new(name: \localServer1, addr: NetAddr.new(hostname:
"127.0.0.1", port: 57111), options: nil, clientID: 0);

Here is an example of a SynthDef (sorry for the comments in Dutch, but I
will translate them if needed):

// MONO LOOPING SYNTH
serversArray.do({
arg item, i;

theMonoLoopingSynthDef = SynthDef(\quickMonoLoopSampler, { | bufnum, out
= 0,
envelopeAttackTime = 0, envelopeDecayTime = 0, envelopeSustainLevel =
1, envelopeReleaseTime = 0, envelopePeakLevel = 1, envelopeCurve = 0, gate
= 1,
startInSeconds, endInSeconds, loopFadeLengthInSeconds = 0.001,
fadeCurve = 1, rate = 1.0, volume = 1, velocity = 1, gain = 1 |

var loopStartInSamples, loopEndInSamples, endMinusStartInSeconds,
upOrDown, loopLengthInSeconds;
var startLoopFrequency, loopFrequency, trigger, triggers,
firstLoopXFadeEnvelopeGenerator, xFadeEnvelopeGenerators;
var firstLoopBufferPosition, bufferPositions, envelopes,
theFirstLoopBufferReader, theBufferReader, sample;

// Conversie van seconden naar samples; samplerichting; loopfrequentie
loopStartInSamples = startInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
loopEndInSamples = endInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
endMinusStartInSeconds = endInSeconds - startInSeconds;
upOrDown = endMinusStartInSeconds.sign;
loopLengthInSeconds = abs(endMinusStartInSeconds);
loopFrequency = 1 / (loopLengthInSeconds - loopFadeLengthInSeconds);

// PulseDivider: Outputs one impulse each time it receives a certain
number (= div) of triggers at its input
// start: Starting value for the trigger count. If startCount is
negative it adds that many counts to the first time the output triggers.
// Er lopen twee PulseDividers: de ene begint op 1 (-1), de andere op 2
(-0).
// Het resultaat is 2 triggers die elkaar afwisselen
trigger = Impulse.kr(freq: loopFrequency);
triggers = PulseDivider.kr(trig: trigger, div: 2, start: [-0,-1]);
//triggers.scope("triggers", zoom: 0.001);

// omdat de attack tijdens de 1e loop niet gecrossfade wordt, is er een
aparte EnvGen nodig
// Omdat Env.linen een fixed length heeft werkt de gate als een trigger.
firstLoopXFadeEnvelopeGenerator = EnvGen.kr(
envelope: Env.linen(
attackTime: 0,
sustainTime: loopLengthInSeconds - loopFadeLengthInSeconds,
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: gate);
//firstLoopXFadeEnvelopeGenerator.scope("firstLoopXFadeEnvelopeGenerator
");

// Omdat Env.linen een fixed length heeft werkt de gate als een trigger.
xFadeEnvelopeGenerators = EnvGen.kr(
envelope: Env.linen(
attackTime: loopFadeLengthInSeconds,
sustainTime: loopLengthInSeconds - (2 * loopFadeLengthInSeconds),
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: triggers);
//xFadeEnvelopeGenerators.scope("xFadeEnvelopeGenerators");

// OSCFunc = sendTrigMessage
//SendTrig.kr(in: Impulse.kr(freq: 1), id: 0, value:
loopFadeLengthInSeconds); // The trigger message sent back to the client:
/tr, int: Node ID, int: Trigger ID, float: Trigger Value
//SendTrig.kr(in: Impulse.kr(freq: 1), id: 2, value:
loopLengthInSeconds);
//SendTrig.kr(in: Impulse.kr(freq: 1), id: 4, value:
BufRateScale.kr(bufnum));
//SendTrig.kr(in: Impulse.kr(freq: 1), id: 6, value:
BufSampleRate.ir(bufnum));
//SendTrig.kr(in: Impulse.kr(freq: 1), id: 8, value:
SampleRate.ir(bufnum));

firstLoopBufferPosition = Line.ar(
start: loopStartInSamples,
end: loopEndInSamples,
dur: (loopLengthInSeconds / rate) // je hoeft niet te corrigeren met
BufRateScale omdat de lengte van Line in secondes wordt gegeven
);
//firstLoopBufferPosition.poll;

// These Phasors are used as indexes into the buffers.
// The triggers reset the positions of the two phasors.
// rate: The amount of change per sample, i.e at a rate of 1 the value
of each sample will be 1 greater than the preceding sample.
// resetPos: The value to jump to upon receiving a trigger.
bufferPositions = Phasor.ar(
trig: triggers,
rate: rate * BufRateScale.kr(bufnum) * upOrDown, // Als rate = 1 dan
is de waarde van iedere volgende sample 1 groter
// je moet hier corrigeren met BufRateScale omdat de snelheid van
Phasor is gebaseerd op de huidige samplerate
start: loopStartInSamples,
end: loopEndInSamples,
resetPos: loopStartInSamples);
//bufferPositions.poll;
//(bufferPositions/ 500000).scope("buf", zoom: 0.001);

// ADSR envelope
envelopes = EnvGen.kr(
envelope: Env.adsr(
attackTime: envelopeAttackTime,
decayTime: envelopeDecayTime,
sustainLevel: envelopeSustainLevel,
releaseTime: envelopeReleaseTime,
peakLevel: envelopePeakLevel,
curve: envelopeCurve),
gate: gate,
doneAction: 2 // free the enclosing synth
);

theFirstLoopBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: firstLoopBufferPosition,
loop: 0);

theBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: bufferPositions, // 2 Phasors: Audio rate modulateable index
into the buffer.
loop: 0);
//theBufferReader.scope("theBufferReader");

// Two Mono BufferReaders
sample = (
(
(theFirstLoopBufferReader * 0.5) +
(theBufferReader * xFadeEnvelopeGenerators)
)
* envelopes * volume * velocity * gain;
).sum;
// sample = [ an OutputProxy, an OutputProxy ].sum ==> sample = a
BinaryOpUGen
// [ an OutputProxy, an OutputProxy ] is een Array
// The use of the binary operator sum (= +) instantiates a BinaryOpUGen.

Out.ar(out, sample ! 2); // equivalent to dup(2): return an Array with
2 BinaryOpUGens: [ a BinaryOpUGen, a BinaryOpUGen ]
}).send(item); // Compile the def and send it to server without writing
to disk

// add(libname, completionMsg, keepDef: true)
// SynthDescLib.global.addServer(server)
// SynthDescLib.global.browse;
// SynthDescLib.global.synthDescs.at(\quickMonoLoopSampler).hasGate;
// SynthDef.synthDefDir;
});

I hope this code makes enough sense to be helpful. Does this have any
relation to the kind of problems you mention? If so, I'm willing to look
into the peculiarities of Ndef. I have no quarks installed (installing
quarks became sort of a hassle, in combination with limited time, and
still lots to learn...).

In my opinion this matter is quite important with regards to using SC in a
professional environment. I'm willing invest what is needed to bring SC
back to a level where it can be trusted on a Mac, since I lack the time to
look into Linux (at least during this tour...).

Thanks for looking into this.

Best regards,

Arthur
Post by Stefan Nussbaumer
Just a shot in the dark but my guts feeling says it's not related to the
OS but something that has changed in SC...
regards, stefan
Post by xs4all sauermusic
It happend more than once. All nodes were killed. I have been touring
with this software for two months already without problems on 10.8. The
only differences: computer, OS.
Any pointers on what to look for (Console, XCode, SC)? Worth trying 3.7
(would nor like to have another unknown in the equation)?
Other suggestions?
Best regards,
Arthur
Sent from Arthur's iPhone
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Arthur Sauer
2014-10-03 14:27:58 UTC
Permalink
Post by Arthur Sauer
Post by Stefan Nussbaumer
Could you provide some code that triggers the behavior on your machine?
I'm using Ndef a lot in combination with the Conductor quark. Within
Conductor the NodeProxy:-set gets overwritten. However, there has been a
change to the original (the overwritten) method that made
NodeProxy:-set
fail as defined within Conductor.
I do not use Ndef nor Conductor, and, to be honest, I do not know to much
about these.
Never mind. Obviously the issue you're experiencing isn't related to
that. And Ndef resp. Conductor probably wouldn't help with it.
Post by Arthur Sauer
To give some perspective: this show has been touring for 13 years. All
samplers (E64, MPC2000XL) have SCSI interfaces. Backup systems used Zip
and Jaz (cool stuff for computer historians...). In short: the way of the
way dodo. After a SCSI disk died I decided to program these samplers in SC.
So what I have is mainly soundfileplayers that simulate OneShot samples,
Looping samples, mono and stereo.
"127.0.0.1", port: 57111), options: nil, clientID: 0);
Here is an example of a SynthDef (sorry for the comments in Dutch, but I
Don't worry about Dutch comments - as a German speaking person it's not
too hard to guess what they mean.
:)
I've been able to compile your synthdef and instantiate a synth from it.
Though I couldn't hear any sound (used a mono soundfile for testing)
setting any of the args defined within the synthdef while the synth was
playing didn't cause any failures either. The only thing that I changed
was to use 'add' instead of 'send' for the synthdef compilation (I
compiled it for Server.local only). Also, I am currently working on
Linux, using SC 3.7 (using the latest, self-compiled version from the
git repository).
As stated in a previous post, I will try to deconstruct the software,
maybe partly as pseudocode.
I'm sorry if this isn't helpful. I can totally understand your
frustration. It's not annoying - it's a real threat for a professional
artist if things that used work suddenly fail. But I'm unable to say
why...
Maybe give SC 3.7 a try? I know, compiling it is a bit of a hassle but
at least 3.6.x and 3.7 can be run in parallel under OS X.
sorry again if my comments weren't too helpful...
Very helpful!

I'm going to try to compile 3.7. Haven't done that for some time (must
have been before cmake et al. were introduced).

Best regards,

Arthur
stefan
Post by Arthur Sauer
// MONO LOOPING SYNTH
serversArray.do({
arg item, i;
theMonoLoopingSynthDef = SynthDef(\quickMonoLoopSampler, { | bufnum, out
= 0,
envelopeAttackTime = 0, envelopeDecayTime = 0, envelopeSustainLevel =
1, envelopeReleaseTime = 0, envelopePeakLevel = 1, envelopeCurve = 0, gate
= 1,
startInSeconds, endInSeconds, loopFadeLengthInSeconds = 0.001,
fadeCurve = 1, rate = 1.0, volume = 1, velocity = 1, gain = 1 |
var loopStartInSamples, loopEndInSamples, endMinusStartInSeconds,
upOrDown, loopLengthInSeconds;
var startLoopFrequency, loopFrequency, trigger, triggers,
firstLoopXFadeEnvelopeGenerator, xFadeEnvelopeGenerators;
var firstLoopBufferPosition, bufferPositions, envelopes,
theFirstLoopBufferReader, theBufferReader, sample;
// Conversie van seconden naar samples; samplerichting;
loopfrequentie
loopStartInSamples = startInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
loopEndInSamples = endInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
endMinusStartInSeconds = endInSeconds - startInSeconds;
upOrDown = endMinusStartInSeconds.sign;
loopLengthInSeconds = abs(endMinusStartInSeconds);
loopFrequency = 1 / (loopLengthInSeconds - loopFadeLengthInSeconds);
// PulseDivider: Outputs one impulse each time it receives a certain
number (= div) of triggers at its input
// start: Starting value for the trigger count. If startCount is
negative it adds that many counts to the first time the output triggers.
// Er lopen twee PulseDividers: de ene begint op 1 (-1), de andere op 2
(-0).
// Het resultaat is 2 triggers die elkaar afwisselen
trigger = Impulse.kr(freq: loopFrequency);
triggers = PulseDivider.kr(trig: trigger, div: 2, start: [-0,-1]);
//triggers.scope("triggers", zoom: 0.001);
// omdat de attack tijdens de 1e loop niet gecrossfade wordt, is er een
aparte EnvGen nodig
// Omdat Env.linen een fixed length heeft werkt de gate als een trigger.
firstLoopXFadeEnvelopeGenerator = EnvGen.kr(
envelope: Env.linen(
attackTime: 0,
sustainTime: loopLengthInSeconds - loopFadeLengthInSeconds,
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: gate);
//firstLoopXFadeEnvelopeGenerator.scope("firstLoopXFadeEnvelopeGenerat
or
");
// Omdat Env.linen een fixed length heeft werkt de gate als een trigger.
xFadeEnvelopeGenerators = EnvGen.kr(
envelope: Env.linen(
attackTime: loopFadeLengthInSeconds,
sustainTime: loopLengthInSeconds - (2 * loopFadeLengthInSeconds),
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: triggers);
//xFadeEnvelopeGenerators.scope("xFadeEnvelopeGenerators");
// OSCFunc = sendTrigMessage
/tr, int: Node ID, int: Trigger ID, float: Trigger Value
loopLengthInSeconds);
BufRateScale.kr(bufnum));
BufSampleRate.ir(bufnum));
SampleRate.ir(bufnum));
firstLoopBufferPosition = Line.ar(
start: loopStartInSamples,
end: loopEndInSamples,
dur: (loopLengthInSeconds / rate) // je hoeft niet te corrigeren met
BufRateScale omdat de lengte van Line in secondes wordt gegeven
);
//firstLoopBufferPosition.poll;
// These Phasors are used as indexes into the buffers.
// The triggers reset the positions of the two phasors.
// rate: The amount of change per sample, i.e at a rate of 1 the value
of each sample will be 1 greater than the preceding sample.
// resetPos: The value to jump to upon receiving a trigger.
bufferPositions = Phasor.ar(
trig: triggers,
rate: rate * BufRateScale.kr(bufnum) * upOrDown, // Als rate = 1 dan
is de waarde van iedere volgende sample 1 groter
// je moet hier corrigeren met BufRateScale omdat de snelheid van
Phasor is gebaseerd op de huidige samplerate
start: loopStartInSamples,
end: loopEndInSamples,
resetPos: loopStartInSamples);
//bufferPositions.poll;
//(bufferPositions/ 500000).scope("buf", zoom: 0.001);
// ADSR envelope
envelopes = EnvGen.kr(
envelope: Env.adsr(
attackTime: envelopeAttackTime,
decayTime: envelopeDecayTime,
sustainLevel: envelopeSustainLevel,
releaseTime: envelopeReleaseTime,
peakLevel: envelopePeakLevel,
curve: envelopeCurve),
gate: gate,
doneAction: 2 // free the enclosing synth
);
theFirstLoopBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: firstLoopBufferPosition,
loop: 0);
theBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: bufferPositions, // 2 Phasors: Audio rate modulateable index
into the buffer.
loop: 0);
//theBufferReader.scope("theBufferReader");
// Two Mono BufferReaders
sample = (
(
(theFirstLoopBufferReader * 0.5) +
(theBufferReader * xFadeEnvelopeGenerators)
)
* envelopes * volume * velocity * gain;
).sum;
// sample = [ an OutputProxy, an OutputProxy ].sum ==> sample = a
BinaryOpUGen
// [ an OutputProxy, an OutputProxy ] is een Array
// The use of the binary operator sum (= +) instantiates a
BinaryOpUGen.
Out.ar(out, sample ! 2); // equivalent to dup(2): return an Array with
2 BinaryOpUGens: [ a BinaryOpUGen, a BinaryOpUGen ]
}).send(item); // Compile the def and send it to server without writing
to disk
// add(libname, completionMsg, keepDef: true)
// SynthDescLib.global.addServer(server)
// SynthDescLib.global.browse;
// SynthDescLib.global.synthDescs.at(\quickMonoLoopSampler).hasGate;
// SynthDef.synthDefDir;
});
I hope this code makes enough sense to be helpful. Does this have any
relation to the kind of problems you mention? If so, I'm willing to look
into the peculiarities of Ndef. I have no quarks installed (installing
quarks became sort of a hassle, in combination with limited time, and
still lots to learn...).
In my opinion this matter is quite important with regards to using SC in a
professional environment. I'm willing invest what is needed to bring SC
back to a level where it can be trusted on a Mac, since I lack the time to
look into Linux (at least during this tour...).
Thanks for looking into this.
Best regards,
Arthur
Post by Stefan Nussbaumer
Just a shot in the dark but my guts feeling says it's not related to the
OS but something that has changed in SC...
regards, stefan
Post by xs4all sauermusic
It happend more than once. All nodes were killed. I have been touring
with this software for two months already without problems on 10.8. The
only differences: computer, OS.
Any pointers on what to look for (Console, XCode, SC)? Worth trying 3.7
(would nor like to have another unknown in the equation)?
Other suggestions?
Best regards,
Arthur
Sent from Arthur's iPhone
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Arthur Sauer
2014-10-06 09:23:46 UTC
Permalink
I'm ready to build 3.7 on OSX 10.8 and 10.9, but I have a question:

What -DCMAKE_BUILD_TYPE would be the best to use to be able to find the
cause of my problem,
taking into account that I will want to use this version for the
performances as well:
- RelWithDebInfo or
- Debug.


Would it be wise to use such builds for a performance or should I use a
Release build for that?

Best regards,

Arthur
Post by Arthur Sauer
Post by Arthur Sauer
Post by Stefan Nussbaumer
Could you provide some code that triggers the behavior on your machine?
I'm using Ndef a lot in combination with the Conductor quark. Within
Conductor the NodeProxy:-set gets overwritten. However, there has been a
change to the original (the overwritten) method that made
NodeProxy:-set
fail as defined within Conductor.
I do not use Ndef nor Conductor, and, to be honest, I do not know to much
about these.
Never mind. Obviously the issue you're experiencing isn't related to
that. And Ndef resp. Conductor probably wouldn't help with it.
Post by Arthur Sauer
To give some perspective: this show has been touring for 13 years. All
samplers (E64, MPC2000XL) have SCSI interfaces. Backup systems used Zip
and Jaz (cool stuff for computer historians...). In short: the way of the
way dodo. After a SCSI disk died I decided to program these samplers in SC.
So what I have is mainly soundfileplayers that simulate OneShot samples,
Looping samples, mono and stereo.
"127.0.0.1", port: 57111), options: nil, clientID: 0);
Here is an example of a SynthDef (sorry for the comments in Dutch, but I
Don't worry about Dutch comments - as a German speaking person it's not
too hard to guess what they mean.
:)
I've been able to compile your synthdef and instantiate a synth from it.
Though I couldn't hear any sound (used a mono soundfile for testing)
setting any of the args defined within the synthdef while the synth was
playing didn't cause any failures either. The only thing that I changed
was to use 'add' instead of 'send' for the synthdef compilation (I
compiled it for Server.local only). Also, I am currently working on
Linux, using SC 3.7 (using the latest, self-compiled version from the
git repository).
As stated in a previous post, I will try to deconstruct the software,
maybe partly as pseudocode.
I'm sorry if this isn't helpful. I can totally understand your
frustration. It's not annoying - it's a real threat for a professional
artist if things that used work suddenly fail. But I'm unable to say
why...
Maybe give SC 3.7 a try? I know, compiling it is a bit of a hassle but
at least 3.6.x and 3.7 can be run in parallel under OS X.
sorry again if my comments weren't too helpful...
Very helpful!
I'm going to try to compile 3.7. Haven't done that for some time (must
have been before cmake et al. were introduced).
Best regards,
Arthur
stefan
Post by Arthur Sauer
// MONO LOOPING SYNTH
serversArray.do({
arg item, i;
theMonoLoopingSynthDef = SynthDef(\quickMonoLoopSampler, { | bufnum, out
= 0,
envelopeAttackTime = 0, envelopeDecayTime = 0, envelopeSustainLevel =
1, envelopeReleaseTime = 0, envelopePeakLevel = 1, envelopeCurve = 0, gate
= 1,
startInSeconds, endInSeconds, loopFadeLengthInSeconds = 0.001,
fadeCurve = 1, rate = 1.0, volume = 1, velocity = 1, gain = 1 |
var loopStartInSamples, loopEndInSamples, endMinusStartInSeconds,
upOrDown, loopLengthInSeconds;
var startLoopFrequency, loopFrequency, trigger, triggers,
firstLoopXFadeEnvelopeGenerator, xFadeEnvelopeGenerators;
var firstLoopBufferPosition, bufferPositions, envelopes,
theFirstLoopBufferReader, theBufferReader, sample;
// Conversie van seconden naar samples; samplerichting;
loopfrequentie
loopStartInSamples = startInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
loopEndInSamples = endInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
endMinusStartInSeconds = endInSeconds - startInSeconds;
upOrDown = endMinusStartInSeconds.sign;
loopLengthInSeconds = abs(endMinusStartInSeconds);
loopFrequency = 1 / (loopLengthInSeconds - loopFadeLengthInSeconds);
// PulseDivider: Outputs one impulse each time it receives a certain
number (= div) of triggers at its input
// start: Starting value for the trigger count. If startCount is
negative it adds that many counts to the first time the output triggers.
// Er lopen twee PulseDividers: de ene begint op 1 (-1), de andere op 2
(-0).
// Het resultaat is 2 triggers die elkaar afwisselen
trigger = Impulse.kr(freq: loopFrequency);
triggers = PulseDivider.kr(trig: trigger, div: 2, start: [-0,-1]);
//triggers.scope("triggers", zoom: 0.001);
// omdat de attack tijdens de 1e loop niet gecrossfade wordt, is er een
aparte EnvGen nodig
// Omdat Env.linen een fixed length heeft werkt de gate als een trigger.
firstLoopXFadeEnvelopeGenerator = EnvGen.kr(
envelope: Env.linen(
attackTime: 0,
sustainTime: loopLengthInSeconds - loopFadeLengthInSeconds,
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: gate);
//firstLoopXFadeEnvelopeGenerator.scope("firstLoopXFadeEnvelopeGenera
t
or
");
// Omdat Env.linen een fixed length heeft werkt de gate als een trigger.
xFadeEnvelopeGenerators = EnvGen.kr(
envelope: Env.linen(
attackTime: loopFadeLengthInSeconds,
sustainTime: loopLengthInSeconds - (2 * loopFadeLengthInSeconds),
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: triggers);
//xFadeEnvelopeGenerators.scope("xFadeEnvelopeGenerators");
// OSCFunc = sendTrigMessage
/tr, int: Node ID, int: Trigger ID, float: Trigger Value
loopLengthInSeconds);
BufRateScale.kr(bufnum));
BufSampleRate.ir(bufnum));
SampleRate.ir(bufnum));
firstLoopBufferPosition = Line.ar(
start: loopStartInSamples,
end: loopEndInSamples,
dur: (loopLengthInSeconds / rate) // je hoeft niet te corrigeren met
BufRateScale omdat de lengte van Line in secondes wordt gegeven
);
//firstLoopBufferPosition.poll;
// These Phasors are used as indexes into the buffers.
// The triggers reset the positions of the two phasors.
// rate: The amount of change per sample, i.e at a rate of 1 the value
of each sample will be 1 greater than the preceding sample.
// resetPos: The value to jump to upon receiving a trigger.
bufferPositions = Phasor.ar(
trig: triggers,
rate: rate * BufRateScale.kr(bufnum) * upOrDown, // Als rate = 1 dan
is de waarde van iedere volgende sample 1 groter
// je moet hier corrigeren met BufRateScale omdat de snelheid van
Phasor is gebaseerd op de huidige samplerate
start: loopStartInSamples,
end: loopEndInSamples,
resetPos: loopStartInSamples);
//bufferPositions.poll;
//(bufferPositions/ 500000).scope("buf", zoom: 0.001);
// ADSR envelope
envelopes = EnvGen.kr(
envelope: Env.adsr(
attackTime: envelopeAttackTime,
decayTime: envelopeDecayTime,
sustainLevel: envelopeSustainLevel,
releaseTime: envelopeReleaseTime,
peakLevel: envelopePeakLevel,
curve: envelopeCurve),
gate: gate,
doneAction: 2 // free the enclosing synth
);
theFirstLoopBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: firstLoopBufferPosition,
loop: 0);
theBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: bufferPositions, // 2 Phasors: Audio rate modulateable index
into the buffer.
loop: 0);
//theBufferReader.scope("theBufferReader");
// Two Mono BufferReaders
sample = (
(
(theFirstLoopBufferReader * 0.5) +
(theBufferReader * xFadeEnvelopeGenerators)
)
* envelopes * volume * velocity * gain;
).sum;
// sample = [ an OutputProxy, an OutputProxy ].sum ==> sample = a
BinaryOpUGen
// [ an OutputProxy, an OutputProxy ] is een Array
// The use of the binary operator sum (= +) instantiates a BinaryOpUGen.
Out.ar(out, sample ! 2); // equivalent to dup(2): return an Array with
2 BinaryOpUGens: [ a BinaryOpUGen, a BinaryOpUGen ]
}).send(item); // Compile the def and send it to server without writing
to disk
// add(libname, completionMsg, keepDef: true)
// SynthDescLib.global.addServer(server)
// SynthDescLib.global.browse;
// SynthDescLib.global.synthDescs.at(\quickMonoLoopSampler).hasGate;
// SynthDef.synthDefDir;
});
I hope this code makes enough sense to be helpful. Does this have any
relation to the kind of problems you mention? If so, I'm willing to look
into the peculiarities of Ndef. I have no quarks installed (installing
quarks became sort of a hassle, in combination with limited time, and
still lots to learn...).
In my opinion this matter is quite important with regards to using SC in a
professional environment. I'm willing invest what is needed to bring SC
back to a level where it can be trusted on a Mac, since I lack the time to
look into Linux (at least during this tour...).
Thanks for looking into this.
Best regards,
Arthur
Post by Stefan Nussbaumer
Just a shot in the dark but my guts feeling says it's not related to the
OS but something that has changed in SC...
regards, stefan
Post by xs4all sauermusic
It happend more than once. All nodes were killed. I have been touring
with this software for two months already without problems on 10.8. The
only differences: computer, OS.
Any pointers on what to look for (Console, XCode, SC)? Worth trying 3.7
(would nor like to have another unknown in the equation)?
Other suggestions?
Best regards,
Arthur
Sent from Arthur's iPhone
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Arthur Sauer
2014-10-06 10:56:30 UTC
Permalink
Unlike the 3.6 version I had on OSX 10.9, the 3.7 version I built does NOT
have a checkbox with 'Prevent App Nap' in the 'Get Info' window

I've built 3.7 for OSX 10.9 with the following cmake settings:
$ cmake
-DCMAKE_INSTALL_PREFIX=./install
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_OSX_ARCHITECTURES='x86_64'
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
-DNATIVE=ON
-DSC_SYMLINK_CLASSLIB=OFF
-DREADLINE_INCLUDE_DIR=/opt/local/include
-DREADLINE_LIBRARY=/opt/local/lib/libreadline.dylib
-DSNDFILE_INCLUDE_DIR=/opt/local/include
-DSNDFILE_LIBRARY=/opt/local/lib/libsndfile.dylib
..


Does this mean that with these cmake settings 'Prevent App Nap' is
automatically enabled, or should I change the cmake build settings?

And checking this I found that the 'Prevent App Nap' settings were
DISABLED on the 3.6 version I use for the perfomrance, while they were
most certainly enabled.
Something to check before each performance!!!

Best regards,

Arthur Sauer
Post by Arthur Sauer
What -DCMAKE_BUILD_TYPE would be the best to use to be able to find the
cause of my problem,
taking into account that I will want to use this version for the
- RelWithDebInfo or
- Debug.
Would it be wise to use such builds for a performance or should I use a
Release build for that?
Best regards,
Arthur
Post by Arthur Sauer
Post by Arthur Sauer
Post by Stefan Nussbaumer
Could you provide some code that triggers the behavior on your machine?
I'm using Ndef a lot in combination with the Conductor quark. Within
Conductor the NodeProxy:-set gets overwritten. However, there has
been
a
change to the original (the overwritten) method that made
NodeProxy:-set
fail as defined within Conductor.
I do not use Ndef nor Conductor, and, to be honest, I do not know to much
about these.
Never mind. Obviously the issue you're experiencing isn't related to
that. And Ndef resp. Conductor probably wouldn't help with it.
Post by Arthur Sauer
To give some perspective: this show has been touring for 13 years. All
samplers (E64, MPC2000XL) have SCSI interfaces. Backup systems used Zip
and Jaz (cool stuff for computer historians...). In short: the way of the
way dodo. After a SCSI disk died I decided to program these samplers
in
SC.
So what I have is mainly soundfileplayers that simulate OneShot samples,
Looping samples, mono and stereo.
"127.0.0.1", port: 57111), options: nil, clientID: 0);
Here is an example of a SynthDef (sorry for the comments in Dutch, but I
Don't worry about Dutch comments - as a German speaking person it's not
too hard to guess what they mean.
:)
I've been able to compile your synthdef and instantiate a synth from it.
Though I couldn't hear any sound (used a mono soundfile for testing)
setting any of the args defined within the synthdef while the synth was
playing didn't cause any failures either. The only thing that I changed
was to use 'add' instead of 'send' for the synthdef compilation (I
compiled it for Server.local only). Also, I am currently working on
Linux, using SC 3.7 (using the latest, self-compiled version from the
git repository).
As stated in a previous post, I will try to deconstruct the software,
maybe partly as pseudocode.
I'm sorry if this isn't helpful. I can totally understand your
frustration. It's not annoying - it's a real threat for a professional
artist if things that used work suddenly fail. But I'm unable to say
why...
Maybe give SC 3.7 a try? I know, compiling it is a bit of a hassle but
at least 3.6.x and 3.7 can be run in parallel under OS X.
sorry again if my comments weren't too helpful...
Very helpful!
I'm going to try to compile 3.7. Haven't done that for some time (must
have been before cmake et al. were introduced).
Best regards,
Arthur
stefan
Post by Arthur Sauer
// MONO LOOPING SYNTH
serversArray.do({
arg item, i;
theMonoLoopingSynthDef = SynthDef(\quickMonoLoopSampler, { | bufnum, out
= 0,
envelopeAttackTime = 0, envelopeDecayTime = 0, envelopeSustainLevel =
1, envelopeReleaseTime = 0, envelopePeakLevel = 1, envelopeCurve = 0, gate
= 1,
startInSeconds, endInSeconds, loopFadeLengthInSeconds = 0.001,
fadeCurve = 1, rate = 1.0, volume = 1, velocity = 1, gain = 1 |
var loopStartInSamples, loopEndInSamples, endMinusStartInSeconds,
upOrDown, loopLengthInSeconds;
var startLoopFrequency, loopFrequency, trigger, triggers,
firstLoopXFadeEnvelopeGenerator, xFadeEnvelopeGenerators;
var firstLoopBufferPosition, bufferPositions, envelopes,
theFirstLoopBufferReader, theBufferReader, sample;
// Conversie van seconden naar samples; samplerichting;
loopfrequentie
loopStartInSamples = startInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
loopEndInSamples = endInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
endMinusStartInSeconds = endInSeconds - startInSeconds;
upOrDown = endMinusStartInSeconds.sign;
loopLengthInSeconds = abs(endMinusStartInSeconds);
loopFrequency = 1 / (loopLengthInSeconds -
loopFadeLengthInSeconds);
// PulseDivider: Outputs one impulse each time it receives a certain
number (= div) of triggers at its input
// start: Starting value for the trigger count. If startCount is
negative it adds that many counts to the first time the output triggers.
// Er lopen twee PulseDividers: de ene begint op 1 (-1), de andere op 2
(-0).
// Het resultaat is 2 triggers die elkaar afwisselen
trigger = Impulse.kr(freq: loopFrequency);
triggers = PulseDivider.kr(trig: trigger, div: 2, start: [-0,-1]);
//triggers.scope("triggers", zoom: 0.001);
// omdat de attack tijdens de 1e loop niet gecrossfade wordt, is er een
aparte EnvGen nodig
// Omdat Env.linen een fixed length heeft werkt de gate als een trigger.
firstLoopXFadeEnvelopeGenerator = EnvGen.kr(
envelope: Env.linen(
attackTime: 0,
sustainTime: loopLengthInSeconds - loopFadeLengthInSeconds,
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: gate);
//firstLoopXFadeEnvelopeGenerator.scope("firstLoopXFadeEnvelopeGener
a
t
or
");
// Omdat Env.linen een fixed length heeft werkt de gate als een trigger.
xFadeEnvelopeGenerators = EnvGen.kr(
envelope: Env.linen(
attackTime: loopFadeLengthInSeconds,
sustainTime: loopLengthInSeconds - (2 * loopFadeLengthInSeconds),
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: triggers);
//xFadeEnvelopeGenerators.scope("xFadeEnvelopeGenerators");
// OSCFunc = sendTrigMessage
/tr, int: Node ID, int: Trigger ID, float: Trigger Value
loopLengthInSeconds);
BufRateScale.kr(bufnum));
BufSampleRate.ir(bufnum));
SampleRate.ir(bufnum));
firstLoopBufferPosition = Line.ar(
start: loopStartInSamples,
end: loopEndInSamples,
dur: (loopLengthInSeconds / rate) // je hoeft niet te corrigeren met
BufRateScale omdat de lengte van Line in secondes wordt gegeven
);
//firstLoopBufferPosition.poll;
// These Phasors are used as indexes into the buffers.
// The triggers reset the positions of the two phasors.
// rate: The amount of change per sample, i.e at a rate of 1 the value
of each sample will be 1 greater than the preceding sample.
// resetPos: The value to jump to upon receiving a trigger.
bufferPositions = Phasor.ar(
trig: triggers,
rate: rate * BufRateScale.kr(bufnum) * upOrDown, // Als rate = 1 dan
is de waarde van iedere volgende sample 1 groter
// je moet hier corrigeren met BufRateScale omdat de snelheid van
Phasor is gebaseerd op de huidige samplerate
start: loopStartInSamples,
end: loopEndInSamples,
resetPos: loopStartInSamples);
//bufferPositions.poll;
//(bufferPositions/ 500000).scope("buf", zoom: 0.001);
// ADSR envelope
envelopes = EnvGen.kr(
envelope: Env.adsr(
attackTime: envelopeAttackTime,
decayTime: envelopeDecayTime,
sustainLevel: envelopeSustainLevel,
releaseTime: envelopeReleaseTime,
peakLevel: envelopePeakLevel,
curve: envelopeCurve),
gate: gate,
doneAction: 2 // free the enclosing synth
);
theFirstLoopBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: firstLoopBufferPosition,
loop: 0);
theBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: bufferPositions, // 2 Phasors: Audio rate modulateable index
into the buffer.
loop: 0);
//theBufferReader.scope("theBufferReader");
// Two Mono BufferReaders
sample = (
(
(theFirstLoopBufferReader * 0.5) +
(theBufferReader * xFadeEnvelopeGenerators)
)
* envelopes * volume * velocity * gain;
).sum;
// sample = [ an OutputProxy, an OutputProxy ].sum ==> sample = a
BinaryOpUGen
// [ an OutputProxy, an OutputProxy ] is een Array
// The use of the binary operator sum (= +) instantiates a BinaryOpUGen.
Out.ar(out, sample ! 2); // equivalent to dup(2): return an Array with
2 BinaryOpUGens: [ a BinaryOpUGen, a BinaryOpUGen ]
}).send(item); // Compile the def and send it to server without writing
to disk
// add(libname, completionMsg, keepDef: true)
// SynthDescLib.global.addServer(server)
// SynthDescLib.global.browse;
// SynthDescLib.global.synthDescs.at(\quickMonoLoopSampler).hasGate;
// SynthDef.synthDefDir;
});
I hope this code makes enough sense to be helpful. Does this have any
relation to the kind of problems you mention? If so, I'm willing to look
into the peculiarities of Ndef. I have no quarks installed (installing
quarks became sort of a hassle, in combination with limited time, and
still lots to learn...).
In my opinion this matter is quite important with regards to using SC in a
professional environment. I'm willing invest what is needed to bring SC
back to a level where it can be trusted on a Mac, since I lack the
time
to
look into Linux (at least during this tour...).
Thanks for looking into this.
Best regards,
Arthur
Post by Stefan Nussbaumer
Just a shot in the dark but my guts feeling says it's not related to the
OS but something that has changed in SC...
regards, stefan
Post by xs4all sauermusic
It happend more than once. All nodes were killed. I have been touring
with this software for two months already without problems on 10.8. The
only differences: computer, OS.
Any pointers on what to look for (Console, XCode, SC)? Worth trying 3.7
(would nor like to have another unknown in the equation)?
Other suggestions?
Best regards,
Arthur
Sent from Arthur's iPhone
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Stefan Nussbaumer
2014-10-06 12:06:46 UTC
Permalink
Unfortunatly I can't say anything about the 'App Nap' settings. However,
compiling 3.7 in Debug mode resulted in a considerable amount of
additional CPU usage for me.
Did 3.7 help with your problems so far?

best regards + good luck,

Stefan
Post by Arthur Sauer
Unlike the 3.6 version I had on OSX 10.9, the 3.7 version I built does NOT
have a checkbox with 'Prevent App Nap' in the 'Get Info' window
$ cmake
-DCMAKE_INSTALL_PREFIX=./install
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_OSX_ARCHITECTURES='x86_64'
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
-DNATIVE=ON
-DSC_SYMLINK_CLASSLIB=OFF
-DREADLINE_INCLUDE_DIR=/opt/local/include
-DREADLINE_LIBRARY=/opt/local/lib/libreadline.dylib
-DSNDFILE_INCLUDE_DIR=/opt/local/include
-DSNDFILE_LIBRARY=/opt/local/lib/libsndfile.dylib
..
Does this mean that with these cmake settings 'Prevent App Nap' is
automatically enabled, or should I change the cmake build settings?
And checking this I found that the 'Prevent App Nap' settings were
DISABLED on the 3.6 version I use for the perfomrance, while they were
most certainly enabled.
Something to check before each performance!!!
Best regards,
Arthur Sauer
Post by Arthur Sauer
What -DCMAKE_BUILD_TYPE would be the best to use to be able to find the
cause of my problem,
taking into account that I will want to use this version for the
- RelWithDebInfo or
- Debug.
Would it be wise to use such builds for a performance or should I use a
Release build for that?
Best regards,
Arthur
Post by Arthur Sauer
Post by Arthur Sauer
Post by Stefan Nussbaumer
Could you provide some code that triggers the behavior on your machine?
I'm using Ndef a lot in combination with the Conductor quark. Within
Conductor the NodeProxy:-set gets overwritten. However, there has
been
a
change to the original (the overwritten) method that made
NodeProxy:-set
fail as defined within Conductor.
I do not use Ndef nor Conductor, and, to be honest, I do not know to much
about these.
Never mind. Obviously the issue you're experiencing isn't related to
that. And Ndef resp. Conductor probably wouldn't help with it.
Post by Arthur Sauer
To give some perspective: this show has been touring for 13 years. All
samplers (E64, MPC2000XL) have SCSI interfaces. Backup systems used Zip
and Jaz (cool stuff for computer historians...). In short: the way of the
way dodo. After a SCSI disk died I decided to program these samplers
in
SC.
So what I have is mainly soundfileplayers that simulate OneShot samples,
Looping samples, mono and stereo.
"127.0.0.1", port: 57111), options: nil, clientID: 0);
Here is an example of a SynthDef (sorry for the comments in Dutch, but I
Don't worry about Dutch comments - as a German speaking person it's not
too hard to guess what they mean.
:)
I've been able to compile your synthdef and instantiate a synth from it.
Though I couldn't hear any sound (used a mono soundfile for testing)
setting any of the args defined within the synthdef while the synth was
playing didn't cause any failures either. The only thing that I changed
was to use 'add' instead of 'send' for the synthdef compilation (I
compiled it for Server.local only). Also, I am currently working on
Linux, using SC 3.7 (using the latest, self-compiled version from the
git repository).
As stated in a previous post, I will try to deconstruct the software,
maybe partly as pseudocode.
I'm sorry if this isn't helpful. I can totally understand your
frustration. It's not annoying - it's a real threat for a professional
artist if things that used work suddenly fail. But I'm unable to say
why...
Maybe give SC 3.7 a try? I know, compiling it is a bit of a hassle but
at least 3.6.x and 3.7 can be run in parallel under OS X.
sorry again if my comments weren't too helpful...
Very helpful!
I'm going to try to compile 3.7. Haven't done that for some time (must
have been before cmake et al. were introduced).
Best regards,
Arthur
stefan
Post by Arthur Sauer
// MONO LOOPING SYNTH
serversArray.do({
arg item, i;
theMonoLoopingSynthDef = SynthDef(\quickMonoLoopSampler, { | bufnum, out
= 0,
envelopeAttackTime = 0, envelopeDecayTime = 0, envelopeSustainLevel =
1, envelopeReleaseTime = 0, envelopePeakLevel = 1, envelopeCurve = 0, gate
= 1,
startInSeconds, endInSeconds, loopFadeLengthInSeconds = 0.001,
fadeCurve = 1, rate = 1.0, volume = 1, velocity = 1, gain = 1 |
var loopStartInSamples, loopEndInSamples, endMinusStartInSeconds,
upOrDown, loopLengthInSeconds;
var startLoopFrequency, loopFrequency, trigger, triggers,
firstLoopXFadeEnvelopeGenerator, xFadeEnvelopeGenerators;
var firstLoopBufferPosition, bufferPositions, envelopes,
theFirstLoopBufferReader, theBufferReader, sample;
// Conversie van seconden naar samples; samplerichting;
loopfrequentie
loopStartInSamples = startInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
loopEndInSamples = endInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
endMinusStartInSeconds = endInSeconds - startInSeconds;
upOrDown = endMinusStartInSeconds.sign;
loopLengthInSeconds = abs(endMinusStartInSeconds);
loopFrequency = 1 / (loopLengthInSeconds -
loopFadeLengthInSeconds);
// PulseDivider: Outputs one impulse each time it receives a certain
number (= div) of triggers at its input
// start: Starting value for the trigger count. If startCount is
negative it adds that many counts to the first time the output triggers.
// Er lopen twee PulseDividers: de ene begint op 1 (-1), de andere op 2
(-0).
// Het resultaat is 2 triggers die elkaar afwisselen
trigger = Impulse.kr(freq: loopFrequency);
triggers = PulseDivider.kr(trig: trigger, div: 2, start: [-0,-1]);
//triggers.scope("triggers", zoom: 0.001);
// omdat de attack tijdens de 1e loop niet gecrossfade wordt, is er een
aparte EnvGen nodig
// Omdat Env.linen een fixed length heeft werkt de gate als een trigger.
firstLoopXFadeEnvelopeGenerator = EnvGen.kr(
envelope: Env.linen(
attackTime: 0,
sustainTime: loopLengthInSeconds - loopFadeLengthInSeconds,
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: gate);
//firstLoopXFadeEnvelopeGenerator.scope("firstLoopXFadeEnvelopeGener
a
t
or
");
// Omdat Env.linen een fixed length heeft werkt de gate als een trigger.
xFadeEnvelopeGenerators = EnvGen.kr(
envelope: Env.linen(
attackTime: loopFadeLengthInSeconds,
sustainTime: loopLengthInSeconds - (2 * loopFadeLengthInSeconds),
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: triggers);
//xFadeEnvelopeGenerators.scope("xFadeEnvelopeGenerators");
// OSCFunc = sendTrigMessage
/tr, int: Node ID, int: Trigger ID, float: Trigger Value
loopLengthInSeconds);
BufRateScale.kr(bufnum));
BufSampleRate.ir(bufnum));
SampleRate.ir(bufnum));
firstLoopBufferPosition = Line.ar(
start: loopStartInSamples,
end: loopEndInSamples,
dur: (loopLengthInSeconds / rate) // je hoeft niet te corrigeren met
BufRateScale omdat de lengte van Line in secondes wordt gegeven
);
//firstLoopBufferPosition.poll;
// These Phasors are used as indexes into the buffers.
// The triggers reset the positions of the two phasors.
// rate: The amount of change per sample, i.e at a rate of 1 the value
of each sample will be 1 greater than the preceding sample.
// resetPos: The value to jump to upon receiving a trigger.
bufferPositions = Phasor.ar(
trig: triggers,
rate: rate * BufRateScale.kr(bufnum) * upOrDown, // Als rate = 1 dan
is de waarde van iedere volgende sample 1 groter
// je moet hier corrigeren met BufRateScale omdat de snelheid van
Phasor is gebaseerd op de huidige samplerate
start: loopStartInSamples,
end: loopEndInSamples,
resetPos: loopStartInSamples);
//bufferPositions.poll;
//(bufferPositions/ 500000).scope("buf", zoom: 0.001);
// ADSR envelope
envelopes = EnvGen.kr(
envelope: Env.adsr(
attackTime: envelopeAttackTime,
decayTime: envelopeDecayTime,
sustainLevel: envelopeSustainLevel,
releaseTime: envelopeReleaseTime,
peakLevel: envelopePeakLevel,
curve: envelopeCurve),
gate: gate,
doneAction: 2 // free the enclosing synth
);
theFirstLoopBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: firstLoopBufferPosition,
loop: 0);
theBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: bufferPositions, // 2 Phasors: Audio rate modulateable index
into the buffer.
loop: 0);
//theBufferReader.scope("theBufferReader");
// Two Mono BufferReaders
sample = (
(
(theFirstLoopBufferReader * 0.5) +
(theBufferReader * xFadeEnvelopeGenerators)
)
* envelopes * volume * velocity * gain;
).sum;
// sample = [ an OutputProxy, an OutputProxy ].sum ==> sample = a
BinaryOpUGen
// [ an OutputProxy, an OutputProxy ] is een Array
// The use of the binary operator sum (= +) instantiates a BinaryOpUGen.
Out.ar(out, sample ! 2); // equivalent to dup(2): return an Array with
2 BinaryOpUGens: [ a BinaryOpUGen, a BinaryOpUGen ]
}).send(item); // Compile the def and send it to server without writing
to disk
// add(libname, completionMsg, keepDef: true)
// SynthDescLib.global.addServer(server)
// SynthDescLib.global.browse;
// SynthDescLib.global.synthDescs.at(\quickMonoLoopSampler).hasGate;
// SynthDef.synthDefDir;
});
I hope this code makes enough sense to be helpful. Does this have any
relation to the kind of problems you mention? If so, I'm willing to look
into the peculiarities of Ndef. I have no quarks installed (installing
quarks became sort of a hassle, in combination with limited time, and
still lots to learn...).
In my opinion this matter is quite important with regards to using SC in a
professional environment. I'm willing invest what is needed to bring SC
back to a level where it can be trusted on a Mac, since I lack the
time
to
look into Linux (at least during this tour...).
Thanks for looking into this.
Best regards,
Arthur
Post by Stefan Nussbaumer
Just a shot in the dark but my guts feeling says it's not related to the
OS but something that has changed in SC...
regards, stefan
Post by xs4all sauermusic
It happend more than once. All nodes were killed. I have been touring
with this software for two months already without problems on 10.8. The
only differences: computer, OS.
Any pointers on what to look for (Console, XCode, SC)? Worth trying 3.7
(would nor like to have another unknown in the equation)?
Other suggestions?
Best regards,
Arthur
Sent from Arthur's iPhone
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Arthur Sauer
2014-10-06 13:24:12 UTC
Permalink
Post by Stefan Nussbaumer
Unfortunatly I can't say anything about the 'App Nap' settings. However,
compiling 3.7 in Debug mode resulted in a considerable amount of
additional CPU usage for me.
Did 3.7 help with your problems so far?
So far succeeded in installing 3.7 on OSX 10.8 and 10.9.


I'm now starting to deconstruct the software so I can test it in my hotel
room without the hardware I use in the theatre. Luckily I have a fast
internet connection in this hotel. Had to use mobile connections before...

Best regards,

Arthur
Post by Stefan Nussbaumer
best regards + good luck,
Stefan
Post by Arthur Sauer
Unlike the 3.6 version I had on OSX 10.9, the 3.7 version I built does NOT
have a checkbox with 'Prevent App Nap' in the 'Get Info' window
$ cmake
-DCMAKE_INSTALL_PREFIX=./install
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_OSX_ARCHITECTURES='x86_64'
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
-DNATIVE=ON
-DSC_SYMLINK_CLASSLIB=OFF
-DREADLINE_INCLUDE_DIR=/opt/local/include
-DREADLINE_LIBRARY=/opt/local/lib/libreadline.dylib
-DSNDFILE_INCLUDE_DIR=/opt/local/include
-DSNDFILE_LIBRARY=/opt/local/lib/libsndfile.dylib
..
Does this mean that with these cmake settings 'Prevent App Nap' is
automatically enabled, or should I change the cmake build settings?
And checking this I found that the 'Prevent App Nap' settings were
DISABLED on the 3.6 version I use for the perfomrance, while they were
most certainly enabled.
Something to check before each performance!!!
Best regards,
Arthur Sauer
Post by Arthur Sauer
What -DCMAKE_BUILD_TYPE would be the best to use to be able to find the
cause of my problem,
taking into account that I will want to use this version for the
- RelWithDebInfo or
- Debug.
Would it be wise to use such builds for a performance or should I use a
Release build for that?
Best regards,
Arthur
Post by Arthur Sauer
Post by Arthur Sauer
Post by Stefan Nussbaumer
Could you provide some code that triggers the behavior on your machine?
I'm using Ndef a lot in combination with the Conductor quark. Within
Conductor the NodeProxy:-set gets overwritten. However, there has
been
a
change to the original (the overwritten) method that made NodeProxy:-set
fail as defined within Conductor.
I do not use Ndef nor Conductor, and, to be honest, I do not know to much
about these.
Never mind. Obviously the issue you're experiencing isn't related to
that. And Ndef resp. Conductor probably wouldn't help with it.
Post by Arthur Sauer
To give some perspective: this show has been touring for 13 years. All
samplers (E64, MPC2000XL) have SCSI interfaces. Backup systems used Zip
and Jaz (cool stuff for computer historians...). In short: the way
of
the
way dodo. After a SCSI disk died I decided to program these samplers
in
SC.
So what I have is mainly soundfileplayers that simulate OneShot samples,
Looping samples, mono and stereo.
"127.0.0.1", port: 57111), options: nil, clientID: 0);
Here is an example of a SynthDef (sorry for the comments in Dutch,
but
I
Don't worry about Dutch comments - as a German speaking person it's not
too hard to guess what they mean.
:)
I've been able to compile your synthdef and instantiate a synth from it.
Though I couldn't hear any sound (used a mono soundfile for testing)
setting any of the args defined within the synthdef while the synth was
playing didn't cause any failures either. The only thing that I changed
was to use 'add' instead of 'send' for the synthdef compilation (I
compiled it for Server.local only). Also, I am currently working on
Linux, using SC 3.7 (using the latest, self-compiled version from the
git repository).
As stated in a previous post, I will try to deconstruct the software,
maybe partly as pseudocode.
I'm sorry if this isn't helpful. I can totally understand your
frustration. It's not annoying - it's a real threat for a
professional
artist if things that used work suddenly fail. But I'm unable to say
why...
Maybe give SC 3.7 a try? I know, compiling it is a bit of a hassle but
at least 3.6.x and 3.7 can be run in parallel under OS X.
sorry again if my comments weren't too helpful...
Very helpful!
I'm going to try to compile 3.7. Haven't done that for some time (must
have been before cmake et al. were introduced).
Best regards,
Arthur
stefan
Post by Arthur Sauer
// MONO LOOPING SYNTH
serversArray.do({
arg item, i;
theMonoLoopingSynthDef = SynthDef(\quickMonoLoopSampler, { |
bufnum,
out
= 0,
envelopeAttackTime = 0, envelopeDecayTime = 0,
envelopeSustainLevel
=
1, envelopeReleaseTime = 0, envelopePeakLevel = 1, envelopeCurve =
0,
gate
= 1,
startInSeconds, endInSeconds, loopFadeLengthInSeconds = 0.001,
fadeCurve = 1, rate = 1.0, volume = 1, velocity = 1, gain = 1 |
var loopStartInSamples, loopEndInSamples, endMinusStartInSeconds,
upOrDown, loopLengthInSeconds;
var startLoopFrequency, loopFrequency, trigger, triggers,
firstLoopXFadeEnvelopeGenerator, xFadeEnvelopeGenerators;
var firstLoopBufferPosition, bufferPositions, envelopes,
theFirstLoopBufferReader, theBufferReader, sample;
// Conversie van seconden naar samples; samplerichting; loopfrequentie
loopStartInSamples = startInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
loopEndInSamples = endInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
endMinusStartInSeconds = endInSeconds - startInSeconds;
upOrDown = endMinusStartInSeconds.sign;
loopLengthInSeconds = abs(endMinusStartInSeconds);
loopFrequency = 1 / (loopLengthInSeconds -
loopFadeLengthInSeconds);
// PulseDivider: Outputs one impulse each time it receives a certain
number (= div) of triggers at its input
// start: Starting value for the trigger count. If startCount is
negative it adds that many counts to the first time the output triggers.
// Er lopen twee PulseDividers: de ene begint op 1 (-1), de
andere
op 2
(-0).
// Het resultaat is 2 triggers die elkaar afwisselen
trigger = Impulse.kr(freq: loopFrequency);
triggers = PulseDivider.kr(trig: trigger, div: 2, start: [-0,-1]);
//triggers.scope("triggers", zoom: 0.001);
// omdat de attack tijdens de 1e loop niet gecrossfade wordt, is
er
een
aparte EnvGen nodig
// Omdat Env.linen een fixed length heeft werkt de gate als een trigger.
firstLoopXFadeEnvelopeGenerator = EnvGen.kr(
envelope: Env.linen(
attackTime: 0,
sustainTime: loopLengthInSeconds - loopFadeLengthInSeconds,
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: gate);
//firstLoopXFadeEnvelopeGenerator.scope("firstLoopXFadeEnvelopeGen
er
a
t
or
");
// Omdat Env.linen een fixed length heeft werkt de gate als een trigger.
xFadeEnvelopeGenerators = EnvGen.kr(
envelope: Env.linen(
attackTime: loopFadeLengthInSeconds,
sustainTime: loopLengthInSeconds - (2 *
loopFadeLengthInSeconds),
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: triggers);
//xFadeEnvelopeGenerators.scope("xFadeEnvelopeGenerators");
// OSCFunc = sendTrigMessage
/tr, int: Node ID, int: Trigger ID, float: Trigger Value
loopLengthInSeconds);
BufRateScale.kr(bufnum));
BufSampleRate.ir(bufnum));
SampleRate.ir(bufnum));
firstLoopBufferPosition = Line.ar(
start: loopStartInSamples,
end: loopEndInSamples,
dur: (loopLengthInSeconds / rate) // je hoeft niet te corrigeren met
BufRateScale omdat de lengte van Line in secondes wordt gegeven
);
//firstLoopBufferPosition.poll;
// These Phasors are used as indexes into the buffers.
// The triggers reset the positions of the two phasors.
// rate: The amount of change per sample, i.e at a rate of 1 the value
of each sample will be 1 greater than the preceding sample.
// resetPos: The value to jump to upon receiving a trigger.
bufferPositions = Phasor.ar(
trig: triggers,
rate: rate * BufRateScale.kr(bufnum) * upOrDown, // Als rate = 1 dan
is de waarde van iedere volgende sample 1 groter
// je moet hier corrigeren met BufRateScale omdat de snelheid van
Phasor is gebaseerd op de huidige samplerate
start: loopStartInSamples,
end: loopEndInSamples,
resetPos: loopStartInSamples);
//bufferPositions.poll;
//(bufferPositions/ 500000).scope("buf", zoom: 0.001);
// ADSR envelope
envelopes = EnvGen.kr(
envelope: Env.adsr(
attackTime: envelopeAttackTime,
decayTime: envelopeDecayTime,
sustainLevel: envelopeSustainLevel,
releaseTime: envelopeReleaseTime,
peakLevel: envelopePeakLevel,
curve: envelopeCurve),
gate: gate,
doneAction: 2 // free the enclosing synth
);
theFirstLoopBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: firstLoopBufferPosition,
loop: 0);
theBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: bufferPositions, // 2 Phasors: Audio rate modulateable index
into the buffer.
loop: 0);
//theBufferReader.scope("theBufferReader");
// Two Mono BufferReaders
sample = (
(
(theFirstLoopBufferReader * 0.5) +
(theBufferReader * xFadeEnvelopeGenerators)
)
* envelopes * volume * velocity * gain;
).sum;
// sample = [ an OutputProxy, an OutputProxy ].sum ==> sample = a
BinaryOpUGen
// [ an OutputProxy, an OutputProxy ] is een Array
// The use of the binary operator sum (= +) instantiates a BinaryOpUGen.
Out.ar(out, sample ! 2); // equivalent to dup(2): return an Array with
2 BinaryOpUGens: [ a BinaryOpUGen, a BinaryOpUGen ]
}).send(item); // Compile the def and send it to server without writing
to disk
// add(libname, completionMsg, keepDef: true)
// SynthDescLib.global.addServer(server)
// SynthDescLib.global.browse;
//
SynthDescLib.global.synthDescs.at(\quickMonoLoopSampler).hasGate;
// SynthDef.synthDefDir;
});
I hope this code makes enough sense to be helpful. Does this have any
relation to the kind of problems you mention? If so, I'm willing to look
into the peculiarities of Ndef. I have no quarks installed (installing
quarks became sort of a hassle, in combination with limited time, and
still lots to learn...).
In my opinion this matter is quite important with regards to using
SC
in a
professional environment. I'm willing invest what is needed to bring SC
back to a level where it can be trusted on a Mac, since I lack the
time
to
look into Linux (at least during this tour...).
Thanks for looking into this.
Best regards,
Arthur
Post by Stefan Nussbaumer
Just a shot in the dark but my guts feeling says it's not related
to
the
OS but something that has changed in SC...
regards, stefan
Post by xs4all sauermusic
It happend more than once. All nodes were killed. I have been touring
with this software for two months already without problems on
10.8.
The
only differences: computer, OS.
Any pointers on what to look for (Console, XCode, SC)? Worth
trying
3.7
(would nor like to have another unknown in the equation)?
Other suggestions?
Best regards,
Arthur
Sent from Arthur's iPhone
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
James Harkins
2014-10-06 13:39:16 UTC
Permalink
On Mon, 06 Oct 2014 15:24:12 +0200
Post by Arthur Sauer
Post by Stefan Nussbaumer
Unfortunatly I can't say anything about the 'App Nap' settings.
However, compiling 3.7 in Debug mode resulted in a considerable
amount of additional CPU usage for me.
Did 3.7 help with your problems so far?
So far succeeded in installing 3.7 on OSX 10.8 and 10.9.
BTW, Stefan is right. Do not use a Debug build for production. The
debug build style turns off compiler optimizations, and this will drive
CPU usage way up. Use "Release" or "RelWithDebugInfo."

hjh




_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Arthur Sauer
2014-10-06 22:07:07 UTC
Permalink
Post by James Harkins
On Mon, 06 Oct 2014 15:24:12 +0200
Post by Arthur Sauer
Post by Stefan Nussbaumer
Unfortunatly I can't say anything about the 'App Nap' settings.
However, compiling 3.7 in Debug mode resulted in a considerable
amount of additional CPU usage for me.
Did 3.7 help with your problems so far?
So far succeeded in installing 3.7 on OSX 10.8 and 10.9.
BTW, Stefan is right. Do not use a Debug build for production. The
debug build style turns off compiler optimizations, and this will drive
CPU usage way up. Use "Release" or "RelWithDebugInfo."
Thanks!!! I've already built both versions.

I still do not understand what I can expect in terms of helping me with
debugging. Will I get extra messages in the Post window? Will it write a
log somewhere?

Somewhere I found something about a -g flag, but to what that relates???

Best regards,

Arthur Sauer
Post by James Harkins
hjh
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
James Harkins
2014-10-07 01:03:45 UTC
Permalink
Post by Arthur Sauer
I still do not understand what I can expect in terms of helping me with
debugging. Will I get extra messages in the Post window? Will it write a
log somewhere?
In the context of cmake, "debug" refers to debugging the c++ sources. If
you aren't doing that, then don't worry about it.

hjh

Sent with AquaMail for Android
http://www.aqua-mail.com



_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Arthur Sauer
2014-10-07 06:07:52 UTC
Permalink
Post by James Harkins
Post by Arthur Sauer
I still do not understand what I can expect in terms of helping me with
debugging. Will I get extra messages in the Post window? Will it write a
log somewhere?
In the context of cmake, "debug" refers to debugging the c++ sources. If
you aren't doing that, then don't worry about it.
I'm not doing that, so thanks! Maybe some other day :)

Best regards,

Arthur
Post by James Harkins
hjh
Sent with AquaMail for Android
http://www.aqua-mail.com
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Rainer Schuetz
2014-10-07 09:25:29 UTC
Permalink
Arthur,

for a quick shot to see if this makes any difference, here is a build of latest master that contains the noAppNap commit:

https://drive.google.com/file/d/0B7igZrWv7UxdeERQTXFRVWJjNjA/view?usp=sharing

Best
.r.
Post by Arthur Sauer
Post by James Harkins
Post by Arthur Sauer
I still do not understand what I can expect in terms of helping me with
debugging. Will I get extra messages in the Post window? Will it write a
log somewhere?
In the context of cmake, "debug" refers to debugging the c++ sources. If
you aren't doing that, then don't worry about it.
I'm not doing that, so thanks! Maybe some other day :)
Best regards,
Arthur
Post by James Harkins
hjh
Sent with AquaMail for Android
http://www.aqua-mail.com
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Rainer Schuetz
2014-10-07 07:46:17 UTC
Permalink
Hi Arthur,

try building again from latest master. Just a few hours ago a patch was committed that prevents sclang taking a nap. Let’s hope it it helps!

Best
.r.
Post by Arthur Sauer
Post by Stefan Nussbaumer
Unfortunatly I can't say anything about the 'App Nap' settings. However,
compiling 3.7 in Debug mode resulted in a considerable amount of
additional CPU usage for me.
Did 3.7 help with your problems so far?
So far succeeded in installing 3.7 on OSX 10.8 and 10.9.
I'm now starting to deconstruct the software so I can test it in my hotel
room without the hardware I use in the theatre. Luckily I have a fast
internet connection in this hotel. Had to use mobile connections before...
Best regards,
Arthur
Post by Stefan Nussbaumer
best regards + good luck,
Stefan
Post by Arthur Sauer
Unlike the 3.6 version I had on OSX 10.9, the 3.7 version I built does NOT
have a checkbox with 'Prevent App Nap' in the 'Get Info' window
$ cmake
-DCMAKE_INSTALL_PREFIX=./install
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_OSX_ARCHITECTURES='x86_64'
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
-DNATIVE=ON
-DSC_SYMLINK_CLASSLIB=OFF
-DREADLINE_INCLUDE_DIR=/opt/local/include
-DREADLINE_LIBRARY=/opt/local/lib/libreadline.dylib
-DSNDFILE_INCLUDE_DIR=/opt/local/include
-DSNDFILE_LIBRARY=/opt/local/lib/libsndfile.dylib
..
Does this mean that with these cmake settings 'Prevent App Nap' is
automatically enabled, or should I change the cmake build settings?
And checking this I found that the 'Prevent App Nap' settings were
DISABLED on the 3.6 version I use for the perfomrance, while they were
most certainly enabled.
Something to check before each performance!!!
Best regards,
Arthur Sauer
Post by Arthur Sauer
What -DCMAKE_BUILD_TYPE would be the best to use to be able to find the
cause of my problem,
taking into account that I will want to use this version for the
- RelWithDebInfo or
- Debug.
Would it be wise to use such builds for a performance or should I use a
Release build for that?
Best regards,
Arthur
Post by Arthur Sauer
Post by Arthur Sauer
Post by Stefan Nussbaumer
Could you provide some code that triggers the behavior on your machine?
I'm using Ndef a lot in combination with the Conductor quark. Within
Conductor the NodeProxy:-set gets overwritten. However, there has
been
a
change to the original (the overwritten) method that made NodeProxy:-set
fail as defined within Conductor.
I do not use Ndef nor Conductor, and, to be honest, I do not know to much
about these.
Never mind. Obviously the issue you're experiencing isn't related to
that. And Ndef resp. Conductor probably wouldn't help with it.
Post by Arthur Sauer
To give some perspective: this show has been touring for 13 years. All
samplers (E64, MPC2000XL) have SCSI interfaces. Backup systems used Zip
and Jaz (cool stuff for computer historians...). In short: the way
of
the
way dodo. After a SCSI disk died I decided to program these samplers
in
SC.
So what I have is mainly soundfileplayers that simulate OneShot samples,
Looping samples, mono and stereo.
"127.0.0.1", port: 57111), options: nil, clientID: 0);
Here is an example of a SynthDef (sorry for the comments in Dutch,
but
I
Don't worry about Dutch comments - as a German speaking person it's not
too hard to guess what they mean.
:)
I've been able to compile your synthdef and instantiate a synth from it.
Though I couldn't hear any sound (used a mono soundfile for testing)
setting any of the args defined within the synthdef while the synth was
playing didn't cause any failures either. The only thing that I changed
was to use 'add' instead of 'send' for the synthdef compilation (I
compiled it for Server.local only). Also, I am currently working on
Linux, using SC 3.7 (using the latest, self-compiled version from the
git repository).
As stated in a previous post, I will try to deconstruct the software,
maybe partly as pseudocode.
I'm sorry if this isn't helpful. I can totally understand your
frustration. It's not annoying - it's a real threat for a
professional
artist if things that used work suddenly fail. But I'm unable to say
why...
Maybe give SC 3.7 a try? I know, compiling it is a bit of a hassle but
at least 3.6.x and 3.7 can be run in parallel under OS X.
sorry again if my comments weren't too helpful...
Very helpful!
I'm going to try to compile 3.7. Haven't done that for some time (must
have been before cmake et al. were introduced).
Best regards,
Arthur
stefan
Post by Arthur Sauer
// MONO LOOPING SYNTH
serversArray.do({
arg item, i;
theMonoLoopingSynthDef = SynthDef(\quickMonoLoopSampler, { |
bufnum,
out
= 0,
envelopeAttackTime = 0, envelopeDecayTime = 0,
envelopeSustainLevel
=
1, envelopeReleaseTime = 0, envelopePeakLevel = 1, envelopeCurve =
0,
gate
= 1,
startInSeconds, endInSeconds, loopFadeLengthInSeconds = 0.001,
fadeCurve = 1, rate = 1.0, volume = 1, velocity = 1, gain = 1 |
var loopStartInSamples, loopEndInSamples, endMinusStartInSeconds,
upOrDown, loopLengthInSeconds;
var startLoopFrequency, loopFrequency, trigger, triggers,
firstLoopXFadeEnvelopeGenerator, xFadeEnvelopeGenerators;
var firstLoopBufferPosition, bufferPositions, envelopes,
theFirstLoopBufferReader, theBufferReader, sample;
// Conversie van seconden naar samples; samplerichting; loopfrequentie
loopStartInSamples = startInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
loopEndInSamples = endInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
endMinusStartInSeconds = endInSeconds - startInSeconds;
upOrDown = endMinusStartInSeconds.sign;
loopLengthInSeconds = abs(endMinusStartInSeconds);
loopFrequency = 1 / (loopLengthInSeconds -
loopFadeLengthInSeconds);
// PulseDivider: Outputs one impulse each time it receives a certain
number (= div) of triggers at its input
// start: Starting value for the trigger count. If startCount is
negative it adds that many counts to the first time the output triggers.
// Er lopen twee PulseDividers: de ene begint op 1 (-1), de
andere
op 2
(-0).
// Het resultaat is 2 triggers die elkaar afwisselen
trigger = Impulse.kr(freq: loopFrequency);
triggers = PulseDivider.kr(trig: trigger, div: 2, start: [-0,-1]);
//triggers.scope("triggers", zoom: 0.001);
// omdat de attack tijdens de 1e loop niet gecrossfade wordt, is
er
een
aparte EnvGen nodig
// Omdat Env.linen een fixed length heeft werkt de gate als een trigger.
firstLoopXFadeEnvelopeGenerator = EnvGen.kr(
envelope: Env.linen(
attackTime: 0,
sustainTime: loopLengthInSeconds - loopFadeLengthInSeconds,
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: gate);
//firstLoopXFadeEnvelopeGenerator.scope("firstLoopXFadeEnvelopeGen
er
a
t
or
");
// Omdat Env.linen een fixed length heeft werkt de gate als een trigger.
xFadeEnvelopeGenerators = EnvGen.kr(
envelope: Env.linen(
attackTime: loopFadeLengthInSeconds,
sustainTime: loopLengthInSeconds - (2 *
loopFadeLengthInSeconds),
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: triggers);
//xFadeEnvelopeGenerators.scope("xFadeEnvelopeGenerators");
// OSCFunc = sendTrigMessage
/tr, int: Node ID, int: Trigger ID, float: Trigger Value
loopLengthInSeconds);
BufRateScale.kr(bufnum));
BufSampleRate.ir(bufnum));
SampleRate.ir(bufnum));
firstLoopBufferPosition = Line.ar(
start: loopStartInSamples,
end: loopEndInSamples,
dur: (loopLengthInSeconds / rate) // je hoeft niet te corrigeren met
BufRateScale omdat de lengte van Line in secondes wordt gegeven
);
//firstLoopBufferPosition.poll;
// These Phasors are used as indexes into the buffers.
// The triggers reset the positions of the two phasors.
// rate: The amount of change per sample, i.e at a rate of 1 the value
of each sample will be 1 greater than the preceding sample.
// resetPos: The value to jump to upon receiving a trigger.
bufferPositions = Phasor.ar(
trig: triggers,
rate: rate * BufRateScale.kr(bufnum) * upOrDown, // Als rate = 1 dan
is de waarde van iedere volgende sample 1 groter
// je moet hier corrigeren met BufRateScale omdat de snelheid van
Phasor is gebaseerd op de huidige samplerate
start: loopStartInSamples,
end: loopEndInSamples,
resetPos: loopStartInSamples);
//bufferPositions.poll;
//(bufferPositions/ 500000).scope("buf", zoom: 0.001);
// ADSR envelope
envelopes = EnvGen.kr(
envelope: Env.adsr(
attackTime: envelopeAttackTime,
decayTime: envelopeDecayTime,
sustainLevel: envelopeSustainLevel,
releaseTime: envelopeReleaseTime,
peakLevel: envelopePeakLevel,
curve: envelopeCurve),
gate: gate,
doneAction: 2 // free the enclosing synth
);
theFirstLoopBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: firstLoopBufferPosition,
loop: 0);
theBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: bufferPositions, // 2 Phasors: Audio rate modulateable index
into the buffer.
loop: 0);
//theBufferReader.scope("theBufferReader");
// Two Mono BufferReaders
sample = (
(
(theFirstLoopBufferReader * 0.5) +
(theBufferReader * xFadeEnvelopeGenerators)
)
* envelopes * volume * velocity * gain;
).sum;
// sample = [ an OutputProxy, an OutputProxy ].sum ==> sample
= a
BinaryOpUGen
// [ an OutputProxy, an OutputProxy ] is een Array
// The use of the binary operator sum (= +) instantiates a BinaryOpUGen.
Out.ar(out, sample ! 2); // equivalent to dup(2): return an Array with
2 BinaryOpUGens: [ a BinaryOpUGen, a BinaryOpUGen ]
}).send(item); // Compile the def and send it to server without writing
to disk
// add(libname, completionMsg, keepDef: true)
// SynthDescLib.global.addServer(server)
// SynthDescLib.global.browse;
//
SynthDescLib.global.synthDescs.at(\quickMonoLoopSampler).hasGate;
// SynthDef.synthDefDir;
});
I hope this code makes enough sense to be helpful. Does this have any
relation to the kind of problems you mention? If so, I'm willing to look
into the peculiarities of Ndef. I have no quarks installed (installing
quarks became sort of a hassle, in combination with limited time, and
still lots to learn...).
In my opinion this matter is quite important with regards to using
SC
in a
professional environment. I'm willing invest what is needed to bring SC
back to a level where it can be trusted on a Mac, since I lack the
time
to
look into Linux (at least during this tour...).
Thanks for looking into this.
Best regards,
Arthur
Post by Stefan Nussbaumer
Just a shot in the dark but my guts feeling says it's not related
to
the
OS but something that has changed in SC...
regards, stefan
Post by xs4all sauermusic
It happend more than once. All nodes were killed. I have been touring
with this software for two months already without problems on
10.8.
The
only differences: computer, OS.
Any pointers on what to look for (Console, XCode, SC)? Worth
trying
3.7
(would nor like to have another unknown in the equation)?
Other suggestions?
Best regards,
Arthur
Sent from Arthur's iPhone
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Arthur Sauer
2014-10-07 13:29:43 UTC
Permalink
I was just going to aks about it! Thanks, I will rebuild!
Post by Rainer Schuetz
Hi Arthur,
try building again from latest master. Just a few hours ago a patch was
committed that prevents sclang taking a nap. Let¹s hope it it helps!
Best
.r.
Post by Arthur Sauer
Post by Stefan Nussbaumer
Unfortunatly I can't say anything about the 'App Nap' settings. However,
compiling 3.7 in Debug mode resulted in a considerable amount of
additional CPU usage for me.
Did 3.7 help with your problems so far?
So far succeeded in installing 3.7 on OSX 10.8 and 10.9.
I'm now starting to deconstruct the software so I can test it in my hotel
room without the hardware I use in the theatre. Luckily I have a fast
internet connection in this hotel. Had to use mobile connections before...
Best regards,
Arthur
Post by Stefan Nussbaumer
best regards + good luck,
Stefan
Post by Arthur Sauer
Unlike the 3.6 version I had on OSX 10.9, the 3.7 version I built does NOT
have a checkbox with 'Prevent App Nap' in the 'Get Info' window
$ cmake
-DCMAKE_INSTALL_PREFIX=./install
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_OSX_ARCHITECTURES='x86_64'
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
-DNATIVE=ON
-DSC_SYMLINK_CLASSLIB=OFF
-DREADLINE_INCLUDE_DIR=/opt/local/include
-DREADLINE_LIBRARY=/opt/local/lib/libreadline.dylib
-DSNDFILE_INCLUDE_DIR=/opt/local/include
-DSNDFILE_LIBRARY=/opt/local/lib/libsndfile.dylib
..
Does this mean that with these cmake settings 'Prevent App Nap' is
automatically enabled, or should I change the cmake build settings?
And checking this I found that the 'Prevent App Nap' settings were
DISABLED on the 3.6 version I use for the perfomrance, while they were
most certainly enabled.
Something to check before each performance!!!
Best regards,
Arthur Sauer
Post by Arthur Sauer
What -DCMAKE_BUILD_TYPE would be the best to use to be able to find the
cause of my problem,
taking into account that I will want to use this version for the
- RelWithDebInfo or
- Debug.
Would it be wise to use such builds for a performance or should I use a
Release build for that?
Best regards,
Arthur
Post by Arthur Sauer
Post by Arthur Sauer
Post by Stefan Nussbaumer
Could you provide some code that triggers the behavior on your machine?
I'm using Ndef a lot in combination with the Conductor quark. Within
Conductor the NodeProxy:-set gets overwritten. However, there has
been
a
change to the original (the overwritten) method that made NodeProxy:-set
fail as defined within Conductor.
I do not use Ndef nor Conductor, and, to be honest, I do not know
to
much
about these.
Never mind. Obviously the issue you're experiencing isn't related to
that. And Ndef resp. Conductor probably wouldn't help with it.
Post by Arthur Sauer
To give some perspective: this show has been touring for 13 years. All
samplers (E64, MPC2000XL) have SCSI interfaces. Backup systems
used
Zip
and Jaz (cool stuff for computer historians...). In short: the way
of
the
way dodo. After a SCSI disk died I decided to program these samplers
in
SC.
So what I have is mainly soundfileplayers that simulate OneShot samples,
Looping samples, mono and stereo.
"127.0.0.1", port: 57111), options: nil, clientID: 0);
Here is an example of a SynthDef (sorry for the comments in Dutch,
but
I
Don't worry about Dutch comments - as a German speaking person it's not
too hard to guess what they mean.
:)
I've been able to compile your synthdef and instantiate a synth
from
it.
Though I couldn't hear any sound (used a mono soundfile for testing)
setting any of the args defined within the synthdef while the synth was
playing didn't cause any failures either. The only thing that I changed
was to use 'add' instead of 'send' for the synthdef compilation (I
compiled it for Server.local only). Also, I am currently working on
Linux, using SC 3.7 (using the latest, self-compiled version from the
git repository).
As stated in a previous post, I will try to deconstruct the software,
maybe partly as pseudocode.
I'm sorry if this isn't helpful. I can totally understand your
frustration. It's not annoying - it's a real threat for a professional
artist if things that used work suddenly fail. But I'm unable to say
why...
Maybe give SC 3.7 a try? I know, compiling it is a bit of a hassle but
at least 3.6.x and 3.7 can be run in parallel under OS X.
sorry again if my comments weren't too helpful...
Very helpful!
I'm going to try to compile 3.7. Haven't done that for some time (must
have been before cmake et al. were introduced).
Best regards,
Arthur
stefan
Post by Arthur Sauer
// MONO LOOPING SYNTH
serversArray.do({
arg item, i;
theMonoLoopingSynthDef = SynthDef(\quickMonoLoopSampler, { |
bufnum,
out
= 0,
envelopeAttackTime = 0, envelopeDecayTime = 0,
envelopeSustainLevel
=
1, envelopeReleaseTime = 0, envelopePeakLevel = 1, envelopeCurve =
0,
gate
= 1,
startInSeconds, endInSeconds, loopFadeLengthInSeconds = 0.001,
fadeCurve = 1, rate = 1.0, volume = 1, velocity = 1, gain = 1 |
var loopStartInSamples, loopEndInSamples,
endMinusStartInSeconds,
upOrDown, loopLengthInSeconds;
var startLoopFrequency, loopFrequency, trigger, triggers,
firstLoopXFadeEnvelopeGenerator, xFadeEnvelopeGenerators;
var firstLoopBufferPosition, bufferPositions, envelopes,
theFirstLoopBufferReader, theBufferReader, sample;
// Conversie van seconden naar samples; samplerichting; loopfrequentie
loopStartInSamples = startInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
loopEndInSamples = endInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
endMinusStartInSeconds = endInSeconds - startInSeconds;
upOrDown = endMinusStartInSeconds.sign;
loopLengthInSeconds = abs(endMinusStartInSeconds);
loopFrequency = 1 / (loopLengthInSeconds -
loopFadeLengthInSeconds);
// PulseDivider: Outputs one impulse each time it receives a certain
number (= div) of triggers at its input
// start: Starting value for the trigger count. If startCount is
negative it adds that many counts to the first time the output triggers.
// Er lopen twee PulseDividers: de ene begint op 1 (-1), de
andere
op 2
(-0).
// Het resultaat is 2 triggers die elkaar afwisselen
trigger = Impulse.kr(freq: loopFrequency);
triggers = PulseDivider.kr(trig: trigger, div: 2, start: [-0,-1]);
//triggers.scope("triggers", zoom: 0.001);
// omdat de attack tijdens de 1e loop niet gecrossfade wordt, is
er
een
aparte EnvGen nodig
// Omdat Env.linen een fixed length heeft werkt de gate als een trigger.
firstLoopXFadeEnvelopeGenerator = EnvGen.kr(
envelope: Env.linen(
attackTime: 0,
sustainTime: loopLengthInSeconds - loopFadeLengthInSeconds,
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: gate);
//firstLoopXFadeEnvelopeGenerator.scope("firstLoopXFadeEnvelopeG
en
er
a
t
or
");
// Omdat Env.linen een fixed length heeft werkt de gate als een trigger.
xFadeEnvelopeGenerators = EnvGen.kr(
envelope: Env.linen(
attackTime: loopFadeLengthInSeconds,
sustainTime: loopLengthInSeconds - (2 *
loopFadeLengthInSeconds),
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: triggers);
//xFadeEnvelopeGenerators.scope("xFadeEnvelopeGenerators");
// OSCFunc = sendTrigMessage
/tr, int: Node ID, int: Trigger ID, float: Trigger Value
loopLengthInSeconds);
BufRateScale.kr(bufnum));
BufSampleRate.ir(bufnum));
SampleRate.ir(bufnum));
firstLoopBufferPosition = Line.ar(
start: loopStartInSamples,
end: loopEndInSamples,
dur: (loopLengthInSeconds / rate) // je hoeft niet te
corrigeren
met
BufRateScale omdat de lengte van Line in secondes wordt gegeven
);
//firstLoopBufferPosition.poll;
// These Phasors are used as indexes into the buffers.
// The triggers reset the positions of the two phasors.
// rate: The amount of change per sample, i.e at a rate of 1
the
value
of each sample will be 1 greater than the preceding sample.
// resetPos: The value to jump to upon receiving a trigger.
bufferPositions = Phasor.ar(
trig: triggers,
rate: rate * BufRateScale.kr(bufnum) * upOrDown, // Als rate
= 1
dan
is de waarde van iedere volgende sample 1 groter
// je moet hier corrigeren met BufRateScale omdat de snelheid van
Phasor is gebaseerd op de huidige samplerate
start: loopStartInSamples,
end: loopEndInSamples,
resetPos: loopStartInSamples);
//bufferPositions.poll;
//(bufferPositions/ 500000).scope("buf", zoom: 0.001);
// ADSR envelope
envelopes = EnvGen.kr(
envelope: Env.adsr(
attackTime: envelopeAttackTime,
decayTime: envelopeDecayTime,
sustainLevel: envelopeSustainLevel,
releaseTime: envelopeReleaseTime,
peakLevel: envelopePeakLevel,
curve: envelopeCurve),
gate: gate,
doneAction: 2 // free the enclosing synth
);
theFirstLoopBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: firstLoopBufferPosition,
loop: 0);
theBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: bufferPositions, // 2 Phasors: Audio rate modulateable index
into the buffer.
loop: 0);
//theBufferReader.scope("theBufferReader");
// Two Mono BufferReaders
sample = (
(
(theFirstLoopBufferReader * 0.5) +
(theBufferReader * xFadeEnvelopeGenerators)
)
* envelopes * volume * velocity * gain;
).sum;
// sample = [ an OutputProxy, an OutputProxy ].sum ==> sample
= a
BinaryOpUGen
// [ an OutputProxy, an OutputProxy ] is een Array
// The use of the binary operator sum (= +) instantiates a BinaryOpUGen.
Out.ar(out, sample ! 2); // equivalent to dup(2): return an
Array
with
2 BinaryOpUGens: [ a BinaryOpUGen, a BinaryOpUGen ]
}).send(item); // Compile the def and send it to server without writing
to disk
// add(libname, completionMsg, keepDef: true)
// SynthDescLib.global.addServer(server)
// SynthDescLib.global.browse;
//
SynthDescLib.global.synthDescs.at(\quickMonoLoopSampler).hasGate;
// SynthDef.synthDefDir;
});
I hope this code makes enough sense to be helpful. Does this have any
relation to the kind of problems you mention? If so, I'm willing
to
look
into the peculiarities of Ndef. I have no quarks installed (installing
quarks became sort of a hassle, in combination with limited time, and
still lots to learn...).
In my opinion this matter is quite important with regards to using
SC
in a
professional environment. I'm willing invest what is needed to
bring
SC
back to a level where it can be trusted on a Mac, since I lack the
time
to
look into Linux (at least during this tour...).
Thanks for looking into this.
Best regards,
Arthur
Post by Stefan Nussbaumer
Just a shot in the dark but my guts feeling says it's not related
to
the
OS but something that has changed in SC...
regards, stefan
Post by xs4all sauermusic
It happend more than once. All nodes were killed. I have been touring
with this software for two months already without problems on
10.8.
The
only differences: computer, OS.
Any pointers on what to look for (Console, XCode, SC)? Worth
trying
3.7
(would nor like to have another unknown in the equation)?
Other suggestions?
Best regards,
Arthur
Sent from Arthur's iPhone
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Arthur Sauer
2014-10-07 14:06:54 UTC
Permalink
Just had a soundcheck, the computer flipped out twice.

I've checked almost all of the software for asynchronicity problems and
only found a wait that I replaced with a Condition, but apparently no luck.

But to be clear:
ALL samples are preloaded in memory, and each sample is loaded into a
Synthbefore the show.
Before starting the samples are checked, but while playing some samples
just do not respond.
I do not get error messages.

I use 8 servers since I have 8 processors. I might be that instead of a
single Synth a complete Server stops working, but I have not had time to
check this.

Will build the noapp version now.

Best regards,

Arthur
Post by Arthur Sauer
I was just going to aks about it! Thanks, I will rebuild!
Post by Rainer Schuetz
Hi Arthur,
try building again from latest master. Just a few hours ago a patch was
committed that prevents sclang taking a nap. Let¹s hope it it helps!
Best
.r.
Post by Arthur Sauer
Post by Stefan Nussbaumer
Unfortunatly I can't say anything about the 'App Nap' settings. However,
compiling 3.7 in Debug mode resulted in a considerable amount of
additional CPU usage for me.
Did 3.7 help with your problems so far?
So far succeeded in installing 3.7 on OSX 10.8 and 10.9.
I'm now starting to deconstruct the software so I can test it in my hotel
room without the hardware I use in the theatre. Luckily I have a fast
internet connection in this hotel. Had to use mobile connections before...
Best regards,
Arthur
Post by Stefan Nussbaumer
best regards + good luck,
Stefan
Post by Arthur Sauer
Unlike the 3.6 version I had on OSX 10.9, the 3.7 version I built
does
NOT
have a checkbox with 'Prevent App Nap' in the 'Get Info' window
$ cmake
-DCMAKE_INSTALL_PREFIX=./install
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_OSX_ARCHITECTURES='x86_64'
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
-DNATIVE=ON
-DSC_SYMLINK_CLASSLIB=OFF
-DREADLINE_INCLUDE_DIR=/opt/local/include
-DREADLINE_LIBRARY=/opt/local/lib/libreadline.dylib
-DSNDFILE_INCLUDE_DIR=/opt/local/include
-DSNDFILE_LIBRARY=/opt/local/lib/libsndfile.dylib
..
Does this mean that with these cmake settings 'Prevent App Nap' is
automatically enabled, or should I change the cmake build settings?
And checking this I found that the 'Prevent App Nap' settings were
DISABLED on the 3.6 version I use for the perfomrance, while they were
most certainly enabled.
Something to check before each performance!!!
Best regards,
Arthur Sauer
Post by Arthur Sauer
What -DCMAKE_BUILD_TYPE would be the best to use to be able to find the
cause of my problem,
taking into account that I will want to use this version for the
- RelWithDebInfo or
- Debug.
Would it be wise to use such builds for a performance or should I use a
Release build for that?
Best regards,
Arthur
Post by Arthur Sauer
Post by Arthur Sauer
Post by Stefan Nussbaumer
Could you provide some code that triggers the behavior on your machine?
I'm using Ndef a lot in combination with the Conductor quark. Within
Conductor the NodeProxy:-set gets overwritten. However, there has
been
a
change to the original (the overwritten) method that made NodeProxy:-set
fail as defined within Conductor.
I do not use Ndef nor Conductor, and, to be honest, I do not know
to
much
about these.
Never mind. Obviously the issue you're experiencing isn't related to
that. And Ndef resp. Conductor probably wouldn't help with it.
Post by Arthur Sauer
To give some perspective: this show has been touring for 13
years.
All
samplers (E64, MPC2000XL) have SCSI interfaces. Backup systems
used
Zip
and Jaz (cool stuff for computer historians...). In short: the way
of
the
way dodo. After a SCSI disk died I decided to program these samplers
in
SC.
So what I have is mainly soundfileplayers that simulate OneShot samples,
Looping samples, mono and stereo.
"127.0.0.1", port: 57111), options: nil, clientID: 0);
Here is an example of a SynthDef (sorry for the comments in Dutch,
but
I
Don't worry about Dutch comments - as a German speaking person
it's
not
too hard to guess what they mean.
:)
I've been able to compile your synthdef and instantiate a synth
from
it.
Though I couldn't hear any sound (used a mono soundfile for testing)
setting any of the args defined within the synthdef while the
synth
was
playing didn't cause any failures either. The only thing that I changed
was to use 'add' instead of 'send' for the synthdef compilation (I
compiled it for Server.local only). Also, I am currently working on
Linux, using SC 3.7 (using the latest, self-compiled version from the
git repository).
As stated in a previous post, I will try to deconstruct the software,
maybe partly as pseudocode.
I'm sorry if this isn't helpful. I can totally understand your
frustration. It's not annoying - it's a real threat for a professional
artist if things that used work suddenly fail. But I'm unable to say
why...
Maybe give SC 3.7 a try? I know, compiling it is a bit of a hassle but
at least 3.6.x and 3.7 can be run in parallel under OS X.
sorry again if my comments weren't too helpful...
Very helpful!
I'm going to try to compile 3.7. Haven't done that for some time (must
have been before cmake et al. were introduced).
Best regards,
Arthur
stefan
Post by Arthur Sauer
// MONO LOOPING SYNTH
serversArray.do({
arg item, i;
theMonoLoopingSynthDef = SynthDef(\quickMonoLoopSampler, { |
bufnum,
out
= 0,
envelopeAttackTime = 0, envelopeDecayTime = 0,
envelopeSustainLevel
=
1, envelopeReleaseTime = 0, envelopePeakLevel = 1, envelopeCurve =
0,
gate
= 1,
startInSeconds, endInSeconds, loopFadeLengthInSeconds = 0.001,
fadeCurve = 1, rate = 1.0, volume = 1, velocity = 1, gain = 1 |
var loopStartInSamples, loopEndInSamples,
endMinusStartInSeconds,
upOrDown, loopLengthInSeconds;
var startLoopFrequency, loopFrequency, trigger, triggers,
firstLoopXFadeEnvelopeGenerator, xFadeEnvelopeGenerators;
var firstLoopBufferPosition, bufferPositions, envelopes,
theFirstLoopBufferReader, theBufferReader, sample;
// Conversie van seconden naar samples; samplerichting; loopfrequentie
loopStartInSamples = startInSeconds *
BufSampleRate.ir(bufnum);
//
originele samplerate van de soundfile
loopEndInSamples = endInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
endMinusStartInSeconds = endInSeconds - startInSeconds;
upOrDown = endMinusStartInSeconds.sign;
loopLengthInSeconds = abs(endMinusStartInSeconds);
loopFrequency = 1 / (loopLengthInSeconds -
loopFadeLengthInSeconds);
// PulseDivider: Outputs one impulse each time it receives a certain
number (= div) of triggers at its input
// start: Starting value for the trigger count. If startCount is
negative it adds that many counts to the first time the output triggers.
// Er lopen twee PulseDividers: de ene begint op 1 (-1), de
andere
op 2
(-0).
// Het resultaat is 2 triggers die elkaar afwisselen
trigger = Impulse.kr(freq: loopFrequency);
triggers = PulseDivider.kr(trig: trigger, div: 2, start: [-0,-1]);
//triggers.scope("triggers", zoom: 0.001);
// omdat de attack tijdens de 1e loop niet gecrossfade wordt, is
er
een
aparte EnvGen nodig
// Omdat Env.linen een fixed length heeft werkt de gate als
een
trigger.
firstLoopXFadeEnvelopeGenerator = EnvGen.kr(
envelope: Env.linen(
attackTime: 0,
sustainTime: loopLengthInSeconds - loopFadeLengthInSeconds,
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: gate);
//firstLoopXFadeEnvelopeGenerator.scope("firstLoopXFadeEnvelope
G
en
er
a
t
or
");
// Omdat Env.linen een fixed length heeft werkt de gate als
een
trigger.
xFadeEnvelopeGenerators = EnvGen.kr(
envelope: Env.linen(
attackTime: loopFadeLengthInSeconds,
sustainTime: loopLengthInSeconds - (2 *
loopFadeLengthInSeconds),
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: triggers);
//xFadeEnvelopeGenerators.scope("xFadeEnvelopeGenerators");
// OSCFunc = sendTrigMessage
/tr, int: Node ID, int: Trigger ID, float: Trigger Value
loopLengthInSeconds);
BufRateScale.kr(bufnum));
BufSampleRate.ir(bufnum));
SampleRate.ir(bufnum));
firstLoopBufferPosition = Line.ar(
start: loopStartInSamples,
end: loopEndInSamples,
dur: (loopLengthInSeconds / rate) // je hoeft niet te
corrigeren
met
BufRateScale omdat de lengte van Line in secondes wordt gegeven
);
//firstLoopBufferPosition.poll;
// These Phasors are used as indexes into the buffers.
// The triggers reset the positions of the two phasors.
// rate: The amount of change per sample, i.e at a rate of 1
the
value
of each sample will be 1 greater than the preceding sample.
// resetPos: The value to jump to upon receiving a trigger.
bufferPositions = Phasor.ar(
trig: triggers,
rate: rate * BufRateScale.kr(bufnum) * upOrDown, // Als rate
= 1
dan
is de waarde van iedere volgende sample 1 groter
// je moet hier corrigeren met BufRateScale omdat de snelheid van
Phasor is gebaseerd op de huidige samplerate
start: loopStartInSamples,
end: loopEndInSamples,
resetPos: loopStartInSamples);
//bufferPositions.poll;
//(bufferPositions/ 500000).scope("buf", zoom: 0.001);
// ADSR envelope
envelopes = EnvGen.kr(
envelope: Env.adsr(
attackTime: envelopeAttackTime,
decayTime: envelopeDecayTime,
sustainLevel: envelopeSustainLevel,
releaseTime: envelopeReleaseTime,
peakLevel: envelopePeakLevel,
curve: envelopeCurve),
gate: gate,
doneAction: 2 // free the enclosing synth
);
theFirstLoopBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: firstLoopBufferPosition,
loop: 0);
theBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: bufferPositions, // 2 Phasors: Audio rate modulateable index
into the buffer.
loop: 0);
//theBufferReader.scope("theBufferReader");
// Two Mono BufferReaders
sample = (
(
(theFirstLoopBufferReader * 0.5) +
(theBufferReader * xFadeEnvelopeGenerators)
)
* envelopes * volume * velocity * gain;
).sum;
// sample = [ an OutputProxy, an OutputProxy ].sum ==> sample
= a
BinaryOpUGen
// [ an OutputProxy, an OutputProxy ] is een Array
// The use of the binary operator sum (= +) instantiates a BinaryOpUGen.
Out.ar(out, sample ! 2); // equivalent to dup(2): return an
Array
with
2 BinaryOpUGens: [ a BinaryOpUGen, a BinaryOpUGen ]
}).send(item); // Compile the def and send it to server without writing
to disk
// add(libname, completionMsg, keepDef: true)
// SynthDescLib.global.addServer(server)
// SynthDescLib.global.browse;
//
SynthDescLib.global.synthDescs.at(\quickMonoLoopSampler).hasGate;
// SynthDef.synthDefDir;
});
I hope this code makes enough sense to be helpful. Does this have any
relation to the kind of problems you mention? If so, I'm willing
to
look
into the peculiarities of Ndef. I have no quarks installed (installing
quarks became sort of a hassle, in combination with limited time, and
still lots to learn...).
In my opinion this matter is quite important with regards to using
SC
in a
professional environment. I'm willing invest what is needed to
bring
SC
back to a level where it can be trusted on a Mac, since I lack the
time
to
look into Linux (at least during this tour...).
Thanks for looking into this.
Best regards,
Arthur
Post by Stefan Nussbaumer
Just a shot in the dark but my guts feeling says it's not related
to
the
OS but something that has changed in SC...
regards, stefan
Post by xs4all sauermusic
It happend more than once. All nodes were killed. I have been touring
with this software for two months already without problems on
10.8.
The
only differences: computer, OS.
Any pointers on what to look for (Console, XCode, SC)? Worth
trying
3.7
(would nor like to have another unknown in the equation)?
Other suggestions?
Best regards,
Arthur
Sent from Arthur's iPhone
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Arthur Sauer
2014-10-07 15:05:53 UTC
Permalink
Post by Arthur Sauer
Just had a soundcheck, the computer flipped out twice.
I've checked almost all of the software for asynchronicity problems and
only found a wait that I replaced with a Condition, but apparently no luck.
ALL samples are preloaded in memory, and each sample is loaded into a
Synthbefore the show.
Sorry, meant: loaded into a Buffer before the show. Synths are made with
NoteOns... Which will be the next thing to check. First get some food for
the night...

The noAppVersion I will check tomorrow. I hope that will make an end to
this misery.

Best regards,

Arthur
Post by Arthur Sauer
Before starting the samples are checked, but while playing some samples
just do not respond.
I do not get error messages.
I use 8 servers since I have 8 processors. I might be that instead of a
single Synth a complete Server stops working, but I have not had time to
check this.
Will build the noapp version now.
Best regards,
Arthur
Post by Arthur Sauer
I was just going to aks about it! Thanks, I will rebuild!
Post by Rainer Schuetz
Hi Arthur,
try building again from latest master. Just a few hours ago a patch was
committed that prevents sclang taking a nap. Let¹s hope it it helps!
Best
.r.
Post by Arthur Sauer
Post by Stefan Nussbaumer
Unfortunatly I can't say anything about the 'App Nap' settings. However,
compiling 3.7 in Debug mode resulted in a considerable amount of
additional CPU usage for me.
Did 3.7 help with your problems so far?
So far succeeded in installing 3.7 on OSX 10.8 and 10.9.
I'm now starting to deconstruct the software so I can test it in my hotel
room without the hardware I use in the theatre. Luckily I have a fast
internet connection in this hotel. Had to use mobile connections before...
Best regards,
Arthur
Post by Stefan Nussbaumer
best regards + good luck,
Stefan
Post by Arthur Sauer
Unlike the 3.6 version I had on OSX 10.9, the 3.7 version I built
does
NOT
have a checkbox with 'Prevent App Nap' in the 'Get Info' window
$ cmake
-DCMAKE_INSTALL_PREFIX=./install
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_OSX_ARCHITECTURES='x86_64'
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
-DNATIVE=ON
-DSC_SYMLINK_CLASSLIB=OFF
-DREADLINE_INCLUDE_DIR=/opt/local/include
-DREADLINE_LIBRARY=/opt/local/lib/libreadline.dylib
-DSNDFILE_INCLUDE_DIR=/opt/local/include
-DSNDFILE_LIBRARY=/opt/local/lib/libsndfile.dylib
..
Does this mean that with these cmake settings 'Prevent App Nap' is
automatically enabled, or should I change the cmake build settings?
And checking this I found that the 'Prevent App Nap' settings were
DISABLED on the 3.6 version I use for the perfomrance, while they were
most certainly enabled.
Something to check before each performance!!!
Best regards,
Arthur Sauer
Post by Arthur Sauer
What -DCMAKE_BUILD_TYPE would be the best to use to be able to find the
cause of my problem,
taking into account that I will want to use this version for the
- RelWithDebInfo or
- Debug.
Would it be wise to use such builds for a performance or should I use a
Release build for that?
Best regards,
Arthur
Post by Arthur Sauer
Post by Arthur Sauer
Post by Stefan Nussbaumer
Could you provide some code that triggers the behavior on your machine?
I've seen this happening here too. However, it was related to
my
I'm using Ndef a lot in combination with the Conductor quark. Within
Conductor the NodeProxy:-set gets overwritten. However, there has
been
a
change to the original (the overwritten) method that made
NodeProxy:-set
fail as defined within Conductor.
I do not use Ndef nor Conductor, and, to be honest, I do not know
to
much
about these.
Never mind. Obviously the issue you're experiencing isn't related to
that. And Ndef resp. Conductor probably wouldn't help with it.
Post by Arthur Sauer
To give some perspective: this show has been touring for 13
years.
All
samplers (E64, MPC2000XL) have SCSI interfaces. Backup systems
used
Zip
and Jaz (cool stuff for computer historians...). In short: the way
of
the
way dodo. After a SCSI disk died I decided to program these samplers
in
SC.
So what I have is mainly soundfileplayers that simulate OneShot samples,
Looping samples, mono and stereo.
"127.0.0.1", port: 57111), options: nil, clientID: 0);
Here is an example of a SynthDef (sorry for the comments in Dutch,
but
I
Don't worry about Dutch comments - as a German speaking person
it's
not
too hard to guess what they mean.
:)
I've been able to compile your synthdef and instantiate a synth
from
it.
Though I couldn't hear any sound (used a mono soundfile for testing)
setting any of the args defined within the synthdef while the
synth
was
playing didn't cause any failures either. The only thing that I changed
was to use 'add' instead of 'send' for the synthdef compilation (I
compiled it for Server.local only). Also, I am currently working on
Linux, using SC 3.7 (using the latest, self-compiled version from the
git repository).
As stated in a previous post, I will try to deconstruct the software,
maybe partly as pseudocode.
I'm sorry if this isn't helpful. I can totally understand your
frustration. It's not annoying - it's a real threat for a professional
artist if things that used work suddenly fail. But I'm unable to say
why...
Maybe give SC 3.7 a try? I know, compiling it is a bit of a
hassle
but
at least 3.6.x and 3.7 can be run in parallel under OS X.
sorry again if my comments weren't too helpful...
Very helpful!
I'm going to try to compile 3.7. Haven't done that for some time (must
have been before cmake et al. were introduced).
Best regards,
Arthur
stefan
Post by Arthur Sauer
// MONO LOOPING SYNTH
serversArray.do({
arg item, i;
theMonoLoopingSynthDef = SynthDef(\quickMonoLoopSampler, { |
bufnum,
out
= 0,
envelopeAttackTime = 0, envelopeDecayTime = 0,
envelopeSustainLevel
=
1, envelopeReleaseTime = 0, envelopePeakLevel = 1, envelopeCurve =
0,
gate
= 1,
startInSeconds, endInSeconds, loopFadeLengthInSeconds = 0.001,
fadeCurve = 1, rate = 1.0, volume = 1, velocity = 1, gain = 1 |
var loopStartInSamples, loopEndInSamples,
endMinusStartInSeconds,
upOrDown, loopLengthInSeconds;
var startLoopFrequency, loopFrequency, trigger, triggers,
firstLoopXFadeEnvelopeGenerator, xFadeEnvelopeGenerators;
var firstLoopBufferPosition, bufferPositions, envelopes,
theFirstLoopBufferReader, theBufferReader, sample;
// Conversie van seconden naar samples; samplerichting; loopfrequentie
loopStartInSamples = startInSeconds *
BufSampleRate.ir(bufnum);
//
originele samplerate van de soundfile
loopEndInSamples = endInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
endMinusStartInSeconds = endInSeconds - startInSeconds;
upOrDown = endMinusStartInSeconds.sign;
loopLengthInSeconds = abs(endMinusStartInSeconds);
loopFrequency = 1 / (loopLengthInSeconds -
loopFadeLengthInSeconds);
// PulseDivider: Outputs one impulse each time it receives a certain
number (= div) of triggers at its input
// start: Starting value for the trigger count. If startCount is
negative it adds that many counts to the first time the output triggers.
// Er lopen twee PulseDividers: de ene begint op 1 (-1), de
andere
op 2
(-0).
// Het resultaat is 2 triggers die elkaar afwisselen
trigger = Impulse.kr(freq: loopFrequency);
triggers = PulseDivider.kr(trig: trigger, div: 2, start: [-0,-1]);
//triggers.scope("triggers", zoom: 0.001);
// omdat de attack tijdens de 1e loop niet gecrossfade wordt, is
er
een
aparte EnvGen nodig
// Omdat Env.linen een fixed length heeft werkt de gate als
een
trigger.
firstLoopXFadeEnvelopeGenerator = EnvGen.kr(
envelope: Env.linen(
attackTime: 0,
sustainTime: loopLengthInSeconds - loopFadeLengthInSeconds,
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: gate);
//firstLoopXFadeEnvelopeGenerator.scope("firstLoopXFadeEnvelop
e
G
en
er
a
t
or
");
// Omdat Env.linen een fixed length heeft werkt de gate als
een
trigger.
xFadeEnvelopeGenerators = EnvGen.kr(
envelope: Env.linen(
attackTime: loopFadeLengthInSeconds,
sustainTime: loopLengthInSeconds - (2 *
loopFadeLengthInSeconds),
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: triggers);
//xFadeEnvelopeGenerators.scope("xFadeEnvelopeGenerators");
// OSCFunc = sendTrigMessage
loopFadeLengthInSeconds); // The trigger message sent back to
the
/tr, int: Node ID, int: Trigger ID, float: Trigger Value
loopLengthInSeconds);
BufRateScale.kr(bufnum));
BufSampleRate.ir(bufnum));
SampleRate.ir(bufnum));
firstLoopBufferPosition = Line.ar(
start: loopStartInSamples,
end: loopEndInSamples,
dur: (loopLengthInSeconds / rate) // je hoeft niet te
corrigeren
met
BufRateScale omdat de lengte van Line in secondes wordt gegeven
);
//firstLoopBufferPosition.poll;
// These Phasors are used as indexes into the buffers.
// The triggers reset the positions of the two phasors.
// rate: The amount of change per sample, i.e at a rate of 1
the
value
of each sample will be 1 greater than the preceding sample.
// resetPos: The value to jump to upon receiving a trigger.
bufferPositions = Phasor.ar(
trig: triggers,
rate: rate * BufRateScale.kr(bufnum) * upOrDown, // Als rate
= 1
dan
is de waarde van iedere volgende sample 1 groter
// je moet hier corrigeren met BufRateScale omdat de
snelheid
van
Phasor is gebaseerd op de huidige samplerate
start: loopStartInSamples,
end: loopEndInSamples,
resetPos: loopStartInSamples);
//bufferPositions.poll;
//(bufferPositions/ 500000).scope("buf", zoom: 0.001);
// ADSR envelope
envelopes = EnvGen.kr(
envelope: Env.adsr(
attackTime: envelopeAttackTime,
decayTime: envelopeDecayTime,
sustainLevel: envelopeSustainLevel,
releaseTime: envelopeReleaseTime,
peakLevel: envelopePeakLevel,
curve: envelopeCurve),
gate: gate,
doneAction: 2 // free the enclosing synth
);
theFirstLoopBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: firstLoopBufferPosition,
loop: 0);
theBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: bufferPositions, // 2 Phasors: Audio rate
modulateable
index
into the buffer.
loop: 0);
//theBufferReader.scope("theBufferReader");
// Two Mono BufferReaders
sample = (
(
(theFirstLoopBufferReader * 0.5) +
(theBufferReader * xFadeEnvelopeGenerators)
)
* envelopes * volume * velocity * gain;
).sum;
// sample = [ an OutputProxy, an OutputProxy ].sum ==> sample
= a
BinaryOpUGen
// [ an OutputProxy, an OutputProxy ] is een Array
// The use of the binary operator sum (= +) instantiates a
BinaryOpUGen.
Out.ar(out, sample ! 2); // equivalent to dup(2): return an
Array
with
2 BinaryOpUGens: [ a BinaryOpUGen, a BinaryOpUGen ]
}).send(item); // Compile the def and send it to server
without
writing
to disk
// add(libname, completionMsg, keepDef: true)
// SynthDescLib.global.addServer(server)
// SynthDescLib.global.browse;
//
SynthDescLib.global.synthDescs.at(\quickMonoLoopSampler).hasGate;
// SynthDef.synthDefDir;
});
I hope this code makes enough sense to be helpful. Does this
have
any
relation to the kind of problems you mention? If so, I'm willing
to
look
into the peculiarities of Ndef. I have no quarks installed (installing
quarks became sort of a hassle, in combination with limited
time,
and
still lots to learn...).
In my opinion this matter is quite important with regards to using
SC
in a
professional environment. I'm willing invest what is needed to
bring
SC
back to a level where it can be trusted on a Mac, since I lack the
time
to
look into Linux (at least during this tour...).
Thanks for looking into this.
Best regards,
Arthur
Post by Stefan Nussbaumer
Just a shot in the dark but my guts feeling says it's not related
to
the
OS but something that has changed in SC...
regards, stefan
Post by xs4all sauermusic
It happend more than once. All nodes were killed. I have been touring
with this software for two months already without problems on
10.8.
The
only differences: computer, OS.
Any pointers on what to look for (Console, XCode, SC)? Worth
trying
3.7
(would nor like to have another unknown in the equation)?
Other suggestions?
Best regards,
Arthur
Sent from Arthur's iPhone
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Arthur Sauer
2014-10-07 21:57:43 UTC
Permalink
In the noAppNap version I suddenly got this error in the Post window:
*** ERROR: dlopen
'/Applications/Geluid/Language/SuperCollider_f/SuperCollider 3.7
noAppNap/SuperCollider 3.7
noAppNap.app/Contents/Resources/plugins/DiskIO_UGens.scx' err
'dlopen(/Applications/Geluid/Language/SuperCollider_f/SuperCollider 3.7
noAppNap/SuperCollider 3.7
noAppNap.app/Contents/Resources/plugins/DiskIO_UGens.scx, 2): Library not
loaded: /usr/local/lib/libsndfile.1.dylib
Referenced from:
/Applications/Geluid/Language/SuperCollider_f/SuperCollider 3.7
noAppNap/SuperCollider 3.7
noAppNap.app/Contents/Resources/plugins/DiskIO_UGens.scx
Reason: image not found'


I copied libsndfile.1.dylib from the SC package to /usr/local/lib/ and the
problem disappeared. I don't think I had this problem in the theater
today, but then, I might have missed it...


I look through all my code and could not find any problems. I have now
enabled a lot of postf's in the code so I can see where it fails...

I'm going to try to let it run with Logic sending MIDI and sending audio
to the built-in output and see what I can find out.

Best regards,

Arthur
Post by Arthur Sauer
Post by Arthur Sauer
Just had a soundcheck, the computer flipped out twice.
I've checked almost all of the software for asynchronicity problems and
only found a wait that I replaced with a Condition, but apparently no luck.
ALL samples are preloaded in memory, and each sample is loaded into a
Synthbefore the show.
Sorry, meant: loaded into a Buffer before the show. Synths are made with
NoteOns... Which will be the next thing to check. First get some food for
the night...
The noAppVersion I will check tomorrow. I hope that will make an end to
this misery.
Best regards,
Arthur
Post by Arthur Sauer
Before starting the samples are checked, but while playing some samples
just do not respond.
I do not get error messages.
I use 8 servers since I have 8 processors. I might be that instead of a
single Synth a complete Server stops working, but I have not had time to
check this.
Will build the noapp version now.
Best regards,
Arthur
Post by Arthur Sauer
I was just going to aks about it! Thanks, I will rebuild!
Post by Rainer Schuetz
Hi Arthur,
try building again from latest master. Just a few hours ago a patch was
committed that prevents sclang taking a nap. Let¹s hope it it helps!
Best
.r.
Post by Arthur Sauer
Post by Stefan Nussbaumer
Unfortunatly I can't say anything about the 'App Nap' settings. However,
compiling 3.7 in Debug mode resulted in a considerable amount of
additional CPU usage for me.
Did 3.7 help with your problems so far?
So far succeeded in installing 3.7 on OSX 10.8 and 10.9.
I'm now starting to deconstruct the software so I can test it in my hotel
room without the hardware I use in the theatre. Luckily I have a fast
internet connection in this hotel. Had to use mobile connections before...
Best regards,
Arthur
Post by Stefan Nussbaumer
best regards + good luck,
Stefan
Post by Arthur Sauer
Unlike the 3.6 version I had on OSX 10.9, the 3.7 version I built
does
NOT
have a checkbox with 'Prevent App Nap' in the 'Get Info' window
$ cmake
-DCMAKE_INSTALL_PREFIX=./install
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_OSX_ARCHITECTURES='x86_64'
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
-DNATIVE=ON
-DSC_SYMLINK_CLASSLIB=OFF
-DREADLINE_INCLUDE_DIR=/opt/local/include
-DREADLINE_LIBRARY=/opt/local/lib/libreadline.dylib
-DSNDFILE_INCLUDE_DIR=/opt/local/include
-DSNDFILE_LIBRARY=/opt/local/lib/libsndfile.dylib
..
Does this mean that with these cmake settings 'Prevent App Nap' is
automatically enabled, or should I change the cmake build settings?
And checking this I found that the 'Prevent App Nap' settings were
DISABLED on the 3.6 version I use for the perfomrance, while they were
most certainly enabled.
Something to check before each performance!!!
Best regards,
Arthur Sauer
Post by Arthur Sauer
What -DCMAKE_BUILD_TYPE would be the best to use to be able to
find
the
cause of my problem,
taking into account that I will want to use this version for the
- RelWithDebInfo or
- Debug.
Would it be wise to use such builds for a performance or should I use a
Release build for that?
Best regards,
Arthur
Post by Arthur Sauer
Op 2-10-14 23:13 schreef Stefan Nussbaumer
Post by Stefan Nussbaumer
Could you provide some code that triggers the behavior on your
machine?
I've seen this happening here too. However, it was related to
my
I'm using Ndef a lot in combination with the Conductor quark. Within
Conductor the NodeProxy:-set gets overwritten. However, there has
been
a
change to the original (the overwritten) method that made
NodeProxy:-set
fail as defined within Conductor.
I do not use Ndef nor Conductor, and, to be honest, I do not know
to
much
about these.
Never mind. Obviously the issue you're experiencing isn't
related
to
that. And Ndef resp. Conductor probably wouldn't help with it.
To give some perspective: this show has been touring for 13
years.
All
samplers (E64, MPC2000XL) have SCSI interfaces. Backup systems
used
Zip
and Jaz (cool stuff for computer historians...). In short: the way
of
the
way dodo. After a SCSI disk died I decided to program these samplers
in
SC.
So what I have is mainly soundfileplayers that simulate OneShot
samples,
Looping samples, mono and stereo.
"127.0.0.1", port: 57111), options: nil, clientID: 0);
Here is an example of a SynthDef (sorry for the comments in Dutch,
but
I
Don't worry about Dutch comments - as a German speaking person
it's
not
too hard to guess what they mean.
:)
I've been able to compile your synthdef and instantiate a synth
from
it.
Though I couldn't hear any sound (used a mono soundfile for testing)
setting any of the args defined within the synthdef while the
synth
was
playing didn't cause any failures either. The only thing that I changed
was to use 'add' instead of 'send' for the synthdef compilation (I
compiled it for Server.local only). Also, I am currently working on
Linux, using SC 3.7 (using the latest, self-compiled version
from
the
git repository).
As stated in a previous post, I will try to deconstruct the software,
maybe partly as pseudocode.
I'm sorry if this isn't helpful. I can totally understand your
frustration. It's not annoying - it's a real threat for a professional
artist if things that used work suddenly fail. But I'm unable to say
why...
Maybe give SC 3.7 a try? I know, compiling it is a bit of a
hassle
but
at least 3.6.x and 3.7 can be run in parallel under OS X.
sorry again if my comments weren't too helpful...
Very helpful!
I'm going to try to compile 3.7. Haven't done that for some time (must
have been before cmake et al. were introduced).
Best regards,
Arthur
stefan
// MONO LOOPING SYNTH
serversArray.do({
arg item, i;
theMonoLoopingSynthDef = SynthDef(\quickMonoLoopSampler, { |
bufnum,
out
= 0,
envelopeAttackTime = 0, envelopeDecayTime = 0,
envelopeSustainLevel
=
1, envelopeReleaseTime = 0, envelopePeakLevel = 1,
envelopeCurve
=
0,
gate
= 1,
startInSeconds, endInSeconds, loopFadeLengthInSeconds = 0.001,
fadeCurve = 1, rate = 1.0, volume = 1, velocity = 1, gain = 1 |
var loopStartInSamples, loopEndInSamples,
endMinusStartInSeconds,
upOrDown, loopLengthInSeconds;
var startLoopFrequency, loopFrequency, trigger, triggers,
firstLoopXFadeEnvelopeGenerator, xFadeEnvelopeGenerators;
var firstLoopBufferPosition, bufferPositions, envelopes,
theFirstLoopBufferReader, theBufferReader, sample;
// Conversie van seconden naar samples; samplerichting;
loopfrequentie
loopStartInSamples = startInSeconds *
BufSampleRate.ir(bufnum);
//
originele samplerate van de soundfile
loopEndInSamples = endInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
endMinusStartInSeconds = endInSeconds - startInSeconds;
upOrDown = endMinusStartInSeconds.sign;
loopLengthInSeconds = abs(endMinusStartInSeconds);
loopFrequency = 1 / (loopLengthInSeconds -
loopFadeLengthInSeconds);
// PulseDivider: Outputs one impulse each time it receives a certain
number (= div) of triggers at its input
// start: Starting value for the trigger count. If
startCount
is
negative it adds that many counts to the first time the output
triggers.
// Er lopen twee PulseDividers: de ene begint op 1 (-1), de
andere
op 2
(-0).
// Het resultaat is 2 triggers die elkaar afwisselen
trigger = Impulse.kr(freq: loopFrequency);
triggers = PulseDivider.kr(trig: trigger, div: 2, start: [-0,-1]);
//triggers.scope("triggers", zoom: 0.001);
// omdat de attack tijdens de 1e loop niet gecrossfade
wordt,
is
er
een
aparte EnvGen nodig
// Omdat Env.linen een fixed length heeft werkt de gate als
een
trigger.
firstLoopXFadeEnvelopeGenerator = EnvGen.kr(
envelope: Env.linen(
attackTime: 0,
sustainTime: loopLengthInSeconds -
loopFadeLengthInSeconds,
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: gate);
//firstLoopXFadeEnvelopeGenerator.scope("firstLoopXFadeEnvelo
p
e
G
en
er
a
t
or
");
// Omdat Env.linen een fixed length heeft werkt de gate als
een
trigger.
xFadeEnvelopeGenerators = EnvGen.kr(
envelope: Env.linen(
attackTime: loopFadeLengthInSeconds,
sustainTime: loopLengthInSeconds - (2 *
loopFadeLengthInSeconds),
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: triggers);
//xFadeEnvelopeGenerators.scope("xFadeEnvelopeGenerators");
// OSCFunc = sendTrigMessage
loopFadeLengthInSeconds); // The trigger message sent back to
the
/tr, int: Node ID, int: Trigger ID, float: Trigger Value
loopLengthInSeconds);
BufRateScale.kr(bufnum));
BufSampleRate.ir(bufnum));
SampleRate.ir(bufnum));
firstLoopBufferPosition = Line.ar(
start: loopStartInSamples,
end: loopEndInSamples,
dur: (loopLengthInSeconds / rate) // je hoeft niet te
corrigeren
met
BufRateScale omdat de lengte van Line in secondes wordt gegeven
);
//firstLoopBufferPosition.poll;
// These Phasors are used as indexes into the buffers.
// The triggers reset the positions of the two phasors.
// rate: The amount of change per sample, i.e at a rate of 1
the
value
of each sample will be 1 greater than the preceding sample.
// resetPos: The value to jump to upon receiving a trigger.
bufferPositions = Phasor.ar(
trig: triggers,
rate: rate * BufRateScale.kr(bufnum) * upOrDown, // Als rate
= 1
dan
is de waarde van iedere volgende sample 1 groter
// je moet hier corrigeren met BufRateScale omdat de
snelheid
van
Phasor is gebaseerd op de huidige samplerate
start: loopStartInSamples,
end: loopEndInSamples,
resetPos: loopStartInSamples);
//bufferPositions.poll;
//(bufferPositions/ 500000).scope("buf", zoom: 0.001);
// ADSR envelope
envelopes = EnvGen.kr(
envelope: Env.adsr(
attackTime: envelopeAttackTime,
decayTime: envelopeDecayTime,
sustainLevel: envelopeSustainLevel,
releaseTime: envelopeReleaseTime,
peakLevel: envelopePeakLevel,
curve: envelopeCurve),
gate: gate,
doneAction: 2 // free the enclosing synth
);
theFirstLoopBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: firstLoopBufferPosition,
loop: 0);
theBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: bufferPositions, // 2 Phasors: Audio rate
modulateable
index
into the buffer.
loop: 0);
//theBufferReader.scope("theBufferReader");
// Two Mono BufferReaders
sample = (
(
(theFirstLoopBufferReader * 0.5) +
(theBufferReader * xFadeEnvelopeGenerators)
)
* envelopes * volume * velocity * gain;
).sum;
// sample = [ an OutputProxy, an OutputProxy ].sum ==> sample
= a
BinaryOpUGen
// [ an OutputProxy, an OutputProxy ] is een Array
// The use of the binary operator sum (= +) instantiates a
BinaryOpUGen.
Out.ar(out, sample ! 2); // equivalent to dup(2): return an
Array
with
2 BinaryOpUGens: [ a BinaryOpUGen, a BinaryOpUGen ]
}).send(item); // Compile the def and send it to server
without
writing
to disk
// add(libname, completionMsg, keepDef: true)
// SynthDescLib.global.addServer(server)
// SynthDescLib.global.browse;
//
SynthDescLib.global.synthDescs.at(\quickMonoLoopSampler).hasGate
;
// SynthDef.synthDefDir;
});
I hope this code makes enough sense to be helpful. Does this
have
any
relation to the kind of problems you mention? If so, I'm willing
to
look
into the peculiarities of Ndef. I have no quarks installed (installing
quarks became sort of a hassle, in combination with limited
time,
and
still lots to learn...).
In my opinion this matter is quite important with regards to using
SC
in a
professional environment. I'm willing invest what is needed to
bring
SC
back to a level where it can be trusted on a Mac, since I lack the
time
to
look into Linux (at least during this tour...).
Thanks for looking into this.
Best regards,
Arthur
Post by Stefan Nussbaumer
Just a shot in the dark but my guts feeling says it's not related
to
the
OS but something that has changed in SC...
regards, stefan
Post by xs4all sauermusic
It happend more than once. All nodes were killed. I have been
touring
with this software for two months already without problems on
10.8.
The
only differences: computer, OS.
Any pointers on what to look for (Console, XCode, SC)? Worth
trying
3.7
(would nor like to have another unknown in the equation)?
Other suggestions?
Best regards,
Arthur
Sent from Arthur's iPhone
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Rainer Schuetz
2014-10-07 22:54:51 UTC
Permalink
Hi Arthur,

sorry for the libsndfile issue. This has no relation to your actual problem, and I am not sure yet why SC expects libsndfile.1.dylib in /usr/local/lib rather than using the bundled one. If with libsndfile.1.dlyb “from the package” you refer to the one that came with the noAppNap build (in Contents/MacOS) your workaround should be safe but I’ll provide another build soon that uses the libsndfile library that is provided with the SC-source.

After rereading your problem description I am pretty sure that you have the AppNap problem, I saw very similar symptoms in a project that loads a lot of samples on startup, and with the AppNap-patch they disappeared completely. If you are curious and are willing to spend a few minutes on verifying this, you can do the following: open the “Energy”-tab in Activity Monitor. Start your pre AppNap-fix-version of SC and observe the value in the column “App Nap” for scide, sclang (that’s the one causing the problem) and scsynth. At some point, after you boot the server (and have scide in the foreground) the sclang value will turn to yes - in that state processes like loading samples will slow down dramatically. You can push sclang to the foreground by clicking the cubic icon in the dock and you should see both the sclang-value for AppNap turn back to No in AM/Energy, and experience a dramatical speed up of the sc-processes.

It is a bit weird that you don’t get the AppNap switch in the context-menu of the SC-application bundle. But I remember vaguely that that can happen if you ever installed a SC-version in the same path, that does not require the switch. OSX stores the status regarding AppNap in some cache pointing to this specific path, and does not notice if another version - that requires the switch - is installed there.

Anyways, sorry for not reading your mail more carefully the other day, or I would have shared my past experience earlier, which was not as dramatic as yours. At that time (Dec 2013) Snickel kindly provided a patch very quickly. Unfortunately it was only merged yesterday (see https://github.com/supercollider/supercollider/pull/1011#issuecomment-58222096)

Best
.r.
Post by Arthur Sauer
*** ERROR: dlopen
'/Applications/Geluid/Language/SuperCollider_f/SuperCollider 3.7
noAppNap/SuperCollider 3.7
noAppNap.app/Contents/Resources/plugins/DiskIO_UGens.scx' err
'dlopen(/Applications/Geluid/Language/SuperCollider_f/SuperCollider 3.7
noAppNap/SuperCollider 3.7
noAppNap.app/Contents/Resources/plugins/DiskIO_UGens.scx, 2): Library not
loaded: /usr/local/lib/libsndfile.1.dylib
/Applications/Geluid/Language/SuperCollider_f/SuperCollider 3.7
noAppNap/SuperCollider 3.7
noAppNap.app/Contents/Resources/plugins/DiskIO_UGens.scx
Reason: image not found'
I copied libsndfile.1.dylib from the SC package to /usr/local/lib/ and the
problem disappeared. I don't think I had this problem in the theater
today, but then, I might have missed it...
I look through all my code and could not find any problems. I have now
enabled a lot of postf's in the code so I can see where it fails...
I'm going to try to let it run with Logic sending MIDI and sending audio
to the built-in output and see what I can find out.
Best regards,
Arthur
Post by Arthur Sauer
Post by Arthur Sauer
Just had a soundcheck, the computer flipped out twice.
I've checked almost all of the software for asynchronicity problems and
only found a wait that I replaced with a Condition, but apparently no luck.
ALL samples are preloaded in memory, and each sample is loaded into a
Synthbefore the show.
Sorry, meant: loaded into a Buffer before the show. Synths are made with
NoteOns... Which will be the next thing to check. First get some food for
the night...
The noAppVersion I will check tomorrow. I hope that will make an end to
this misery.
Best regards,
Arthur
Post by Arthur Sauer
Before starting the samples are checked, but while playing some samples
just do not respond.
I do not get error messages.
I use 8 servers since I have 8 processors. I might be that instead of a
single Synth a complete Server stops working, but I have not had time to
check this.
Will build the noapp version now.
Best regards,
Arthur
Post by Arthur Sauer
I was just going to aks about it! Thanks, I will rebuild!
Post by Rainer Schuetz
Hi Arthur,
try building again from latest master. Just a few hours ago a patch was
committed that prevents sclang taking a nap. Let¹s hope it it helps!
Best
.r.
Post by Arthur Sauer
Post by Stefan Nussbaumer
Unfortunatly I can't say anything about the 'App Nap' settings. However,
compiling 3.7 in Debug mode resulted in a considerable amount of
additional CPU usage for me.
Did 3.7 help with your problems so far?
So far succeeded in installing 3.7 on OSX 10.8 and 10.9.
I'm now starting to deconstruct the software so I can test it in my hotel
room without the hardware I use in the theatre. Luckily I have a fast
internet connection in this hotel. Had to use mobile connections before...
Best regards,
Arthur
Post by Stefan Nussbaumer
best regards + good luck,
Stefan
Post by Arthur Sauer
Unlike the 3.6 version I had on OSX 10.9, the 3.7 version I built
does
NOT
have a checkbox with 'Prevent App Nap' in the 'Get Info' window
$ cmake
-DCMAKE_INSTALL_PREFIX=./install
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_OSX_ARCHITECTURES='x86_64'
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
-DNATIVE=ON
-DSC_SYMLINK_CLASSLIB=OFF
-DREADLINE_INCLUDE_DIR=/opt/local/include
-DREADLINE_LIBRARY=/opt/local/lib/libreadline.dylib
-DSNDFILE_INCLUDE_DIR=/opt/local/include
-DSNDFILE_LIBRARY=/opt/local/lib/libsndfile.dylib
..
Does this mean that with these cmake settings 'Prevent App Nap' is
automatically enabled, or should I change the cmake build settings?
And checking this I found that the 'Prevent App Nap' settings were
DISABLED on the 3.6 version I use for the perfomrance, while they were
most certainly enabled.
Something to check before each performance!!!
Best regards,
Arthur Sauer
Post by Arthur Sauer
What -DCMAKE_BUILD_TYPE would be the best to use to be able to
find
the
cause of my problem,
taking into account that I will want to use this version for the
- RelWithDebInfo or
- Debug.
Would it be wise to use such builds for a performance or should I use a
Release build for that?
Best regards,
Arthur
Post by Arthur Sauer
Op 2-10-14 23:13 schreef Stefan Nussbaumer
Post by Stefan Nussbaumer
Could you provide some code that triggers the behavior on your
machine?
I've seen this happening here too. However, it was related to
my
I'm using Ndef a lot in combination with the Conductor quark.
Within
Conductor the NodeProxy:-set gets overwritten. However, there has
been
a
change to the original (the overwritten) method that made
NodeProxy:-set
fail as defined within Conductor.
I do not use Ndef nor Conductor, and, to be honest, I do not know
to
much
about these.
Never mind. Obviously the issue you're experiencing isn't
related
to
that. And Ndef resp. Conductor probably wouldn't help with it.
To give some perspective: this show has been touring for 13
years.
All
samplers (E64, MPC2000XL) have SCSI interfaces. Backup systems
used
Zip
and Jaz (cool stuff for computer historians...). In short: the way
of
the
way dodo. After a SCSI disk died I decided to program these samplers
in
SC.
So what I have is mainly soundfileplayers that simulate OneShot
samples,
Looping samples, mono and stereo.
"127.0.0.1", port: 57111), options: nil, clientID: 0);
Here is an example of a SynthDef (sorry for the comments in Dutch,
but
I
Don't worry about Dutch comments - as a German speaking person
it's
not
too hard to guess what they mean.
:)
I've been able to compile your synthdef and instantiate a synth
from
it.
Though I couldn't hear any sound (used a mono soundfile for testing)
setting any of the args defined within the synthdef while the
synth
was
playing didn't cause any failures either. The only thing that I changed
was to use 'add' instead of 'send' for the synthdef compilation (I
compiled it for Server.local only). Also, I am currently working on
Linux, using SC 3.7 (using the latest, self-compiled version
from
the
git repository).
As stated in a previous post, I will try to deconstruct the software,
maybe partly as pseudocode.
I'm sorry if this isn't helpful. I can totally understand your
frustration. It's not annoying - it's a real threat for a professional
artist if things that used work suddenly fail. But I'm unable to say
why...
Maybe give SC 3.7 a try? I know, compiling it is a bit of a
hassle
but
at least 3.6.x and 3.7 can be run in parallel under OS X.
sorry again if my comments weren't too helpful...
Very helpful!
I'm going to try to compile 3.7. Haven't done that for some time (must
have been before cmake et al. were introduced).
Best regards,
Arthur
stefan
// MONO LOOPING SYNTH
serversArray.do({
arg item, i;
theMonoLoopingSynthDef = SynthDef(\quickMonoLoopSampler, { |
bufnum,
out
= 0,
envelopeAttackTime = 0, envelopeDecayTime = 0,
envelopeSustainLevel
=
1, envelopeReleaseTime = 0, envelopePeakLevel = 1,
envelopeCurve
=
0,
gate
= 1,
startInSeconds, endInSeconds, loopFadeLengthInSeconds = 0.001,
fadeCurve = 1, rate = 1.0, volume = 1, velocity = 1, gain = 1 |
var loopStartInSamples, loopEndInSamples,
endMinusStartInSeconds,
upOrDown, loopLengthInSeconds;
var startLoopFrequency, loopFrequency, trigger, triggers,
firstLoopXFadeEnvelopeGenerator, xFadeEnvelopeGenerators;
var firstLoopBufferPosition, bufferPositions, envelopes,
theFirstLoopBufferReader, theBufferReader, sample;
// Conversie van seconden naar samples; samplerichting;
loopfrequentie
loopStartInSamples = startInSeconds *
BufSampleRate.ir(bufnum);
//
originele samplerate van de soundfile
loopEndInSamples = endInSeconds * BufSampleRate.ir(bufnum); //
originele samplerate van de soundfile
endMinusStartInSeconds = endInSeconds - startInSeconds;
upOrDown = endMinusStartInSeconds.sign;
loopLengthInSeconds = abs(endMinusStartInSeconds);
loopFrequency = 1 / (loopLengthInSeconds -
loopFadeLengthInSeconds);
// PulseDivider: Outputs one impulse each time it receives a
certain
number (= div) of triggers at its input
// start: Starting value for the trigger count. If
startCount
is
negative it adds that many counts to the first time the output
triggers.
// Er lopen twee PulseDividers: de ene begint op 1 (-1), de
andere
op 2
(-0).
// Het resultaat is 2 triggers die elkaar afwisselen
trigger = Impulse.kr(freq: loopFrequency);
triggers = PulseDivider.kr(trig: trigger, div: 2, start: [-0,-1]);
//triggers.scope("triggers", zoom: 0.001);
// omdat de attack tijdens de 1e loop niet gecrossfade
wordt,
is
er
een
aparte EnvGen nodig
// Omdat Env.linen een fixed length heeft werkt de gate als
een
trigger.
firstLoopXFadeEnvelopeGenerator = EnvGen.kr(
envelope: Env.linen(
attackTime: 0,
sustainTime: loopLengthInSeconds -
loopFadeLengthInSeconds,
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: gate);
//firstLoopXFadeEnvelopeGenerator.scope("firstLoopXFadeEnvelo
p
e
G
en
er
a
t
or
");
// Omdat Env.linen een fixed length heeft werkt de gate als
een
trigger.
xFadeEnvelopeGenerators = EnvGen.kr(
envelope: Env.linen(
attackTime: loopFadeLengthInSeconds,
sustainTime: loopLengthInSeconds - (2 *
loopFadeLengthInSeconds),
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: triggers);
//xFadeEnvelopeGenerators.scope("xFadeEnvelopeGenerators");
// OSCFunc = sendTrigMessage
loopFadeLengthInSeconds); // The trigger message sent back to
the
/tr, int: Node ID, int: Trigger ID, float: Trigger Value
loopLengthInSeconds);
BufRateScale.kr(bufnum));
BufSampleRate.ir(bufnum));
SampleRate.ir(bufnum));
firstLoopBufferPosition = Line.ar(
start: loopStartInSamples,
end: loopEndInSamples,
dur: (loopLengthInSeconds / rate) // je hoeft niet te
corrigeren
met
BufRateScale omdat de lengte van Line in secondes wordt gegeven
);
//firstLoopBufferPosition.poll;
// These Phasors are used as indexes into the buffers.
// The triggers reset the positions of the two phasors.
// rate: The amount of change per sample, i.e at a rate of 1
the
value
of each sample will be 1 greater than the preceding sample.
// resetPos: The value to jump to upon receiving a trigger.
bufferPositions = Phasor.ar(
trig: triggers,
rate: rate * BufRateScale.kr(bufnum) * upOrDown, // Als rate
= 1
dan
is de waarde van iedere volgende sample 1 groter
// je moet hier corrigeren met BufRateScale omdat de
snelheid
van
Phasor is gebaseerd op de huidige samplerate
start: loopStartInSamples,
end: loopEndInSamples,
resetPos: loopStartInSamples);
//bufferPositions.poll;
//(bufferPositions/ 500000).scope("buf", zoom: 0.001);
// ADSR envelope
envelopes = EnvGen.kr(
envelope: Env.adsr(
attackTime: envelopeAttackTime,
decayTime: envelopeDecayTime,
sustainLevel: envelopeSustainLevel,
releaseTime: envelopeReleaseTime,
peakLevel: envelopePeakLevel,
curve: envelopeCurve),
gate: gate,
doneAction: 2 // free the enclosing synth
);
theFirstLoopBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: firstLoopBufferPosition,
loop: 0);
theBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: bufferPositions, // 2 Phasors: Audio rate
modulateable
index
into the buffer.
loop: 0);
//theBufferReader.scope("theBufferReader");
// Two Mono BufferReaders
sample = (
(
(theFirstLoopBufferReader * 0.5) +
(theBufferReader * xFadeEnvelopeGenerators)
)
* envelopes * volume * velocity * gain;
).sum;
// sample = [ an OutputProxy, an OutputProxy ].sum ==> sample
= a
BinaryOpUGen
// [ an OutputProxy, an OutputProxy ] is een Array
// The use of the binary operator sum (= +) instantiates a
BinaryOpUGen.
Out.ar(out, sample ! 2); // equivalent to dup(2): return an
Array
with
2 BinaryOpUGens: [ a BinaryOpUGen, a BinaryOpUGen ]
}).send(item); // Compile the def and send it to server
without
writing
to disk
// add(libname, completionMsg, keepDef: true)
// SynthDescLib.global.addServer(server)
// SynthDescLib.global.browse;
//
SynthDescLib.global.synthDescs.at(\quickMonoLoopSampler).hasGate
;
// SynthDef.synthDefDir;
});
I hope this code makes enough sense to be helpful. Does this
have
any
relation to the kind of problems you mention? If so, I'm willing
to
look
into the peculiarities of Ndef. I have no quarks installed
(installing
quarks became sort of a hassle, in combination with limited
time,
and
still lots to learn...).
In my opinion this matter is quite important with regards to using
SC
in a
professional environment. I'm willing invest what is needed to
bring
SC
back to a level where it can be trusted on a Mac, since I lack the
time
to
look into Linux (at least during this tour...).
Thanks for looking into this.
Best regards,
Arthur
Post by Stefan Nussbaumer
Just a shot in the dark but my guts feeling says it's not related
to
the
OS but something that has changed in SC...
regards, stefan
Post by xs4all sauermusic
It happend more than once. All nodes were killed. I have been
touring
with this software for two months already without problems on
10.8.
The
only differences: computer, OS.
Any pointers on what to look for (Console, XCode, SC)? Worth
trying
3.7
(would nor like to have another unknown in the equation)?
Other suggestions?
Best regards,
Arthur
Sent from Arthur's iPhone
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Arthur Sauer
2014-10-07 23:28:37 UTC
Permalink
Post by Rainer Schuetz
Hi Arthur,
sorry for the libsndfile issue. This has no relation to your actual
problem, and I am not sure yet why SC expects libsndfile.1.dylib in
/usr/local/lib rather than using the bundled one. If with
libsndfile.1.dlyb “from the package” you refer to the one that came with
the noAppNap build
That's the one
Post by Rainer Schuetz
(in Contents/MacOS) your workaround should be safe but I’ll provide
another build soon that uses the libsndfile library that is provided with
the SC-source.
After rereading your problem description I am pretty sure that you have
the AppNap problem, I saw very similar symptoms in a project that loads a
lot of samples on startup, and with the AppNap-patch they disappeared
completely. If you are curious and are willing to spend a few minutes on
verifying this, you can do the following: open the “Energy”-tab in
Activity Monitor. Start your pre AppNap-fix-version of SC and observe the
value in the column “App Nap” for scide, sclang (that’s the one causing
the problem) and scsynth. At some point, after you boot the server (and
have scide in the foreground) the sclang value will turn to yes - in that
state processes like loading samples will slow down dramatically. You can
push sclang to the foreground by clicking the cubic icon in the dock and
you should see both the sclang-value for AppNap turn back to No in
AM/Energy, and experience a dramatical speed up of the sc-processes.
I'll try that tomorrow, I'm to tired now...
Post by Rainer Schuetz
It is a bit weird that you don’t get the AppNap switch in the
context-menu of the SC-application bundle. But I remember vaguely that
that can happen if you ever installed a SC-version in the same path, that
does not require the switch. OSX stores the status regarding AppNap in
some cache pointing to this specific path, and does not notice if another
version - that requires the switch - is installed there.
OK, I'll check that out!
Post by Rainer Schuetz
Anyways, sorry for not reading your mail more carefully the other day, or
I would have shared my past experience earlier, which was not as dramatic
as yours. At that time (Dec 2013) Snickel kindly provided a patch very
quickly. Unfortunately it was only merged yesterday (see
https://github.com/supercollider/supercollider/pull/1011#issuecomment-5822
2096)
No problem, you did now :)

I'll see what I can find tomorrow, and maybe I'll have to use another
laptop on 10.8 (that I use now for emailing...)

Best regards,

Arthur
Post by Rainer Schuetz
Best
.r.
Post by Arthur Sauer
*** ERROR: dlopen
'/Applications/Geluid/Language/SuperCollider_f/SuperCollider 3.7
noAppNap/SuperCollider 3.7
noAppNap.app/Contents/Resources/plugins/DiskIO_UGens.scx' err
'dlopen(/Applications/Geluid/Language/SuperCollider_f/SuperCollider 3.7
noAppNap/SuperCollider 3.7
noAppNap.app/Contents/Resources/plugins/DiskIO_UGens.scx, 2): Library not
loaded: /usr/local/lib/libsndfile.1.dylib
/Applications/Geluid/Language/SuperCollider_f/SuperCollider 3.7
noAppNap/SuperCollider 3.7
noAppNap.app/Contents/Resources/plugins/DiskIO_UGens.scx
Reason: image not found'
I copied libsndfile.1.dylib from the SC package to /usr/local/lib/ and the
problem disappeared. I don't think I had this problem in the theater
today, but then, I might have missed it...
I look through all my code and could not find any problems. I have now
enabled a lot of postf's in the code so I can see where it fails...
I'm going to try to let it run with Logic sending MIDI and sending audio
to the built-in output and see what I can find out.
Best regards,
Arthur
Post by Arthur Sauer
Post by Arthur Sauer
Just had a soundcheck, the computer flipped out twice.
I've checked almost all of the software for asynchronicity problems and
only found a wait that I replaced with a Condition, but apparently no luck.
ALL samples are preloaded in memory, and each sample is loaded into a
Synthbefore the show.
Sorry, meant: loaded into a Buffer before the show. Synths are made with
NoteOns... Which will be the next thing to check. First get some food for
the night...
The noAppVersion I will check tomorrow. I hope that will make an end to
this misery.
Best regards,
Arthur
Post by Arthur Sauer
Before starting the samples are checked, but while playing some samples
just do not respond.
I do not get error messages.
I use 8 servers since I have 8 processors. I might be that instead of a
single Synth a complete Server stops working, but I have not had time to
check this.
Will build the noapp version now.
Best regards,
Arthur
Post by Arthur Sauer
I was just going to aks about it! Thanks, I will rebuild!
Post by Rainer Schuetz
Hi Arthur,
try building again from latest master. Just a few hours ago a patch was
committed that prevents sclang taking a nap. Let¹s hope it it helps!
Best
.r.
Post by Arthur Sauer
Post by Stefan Nussbaumer
Unfortunatly I can't say anything about the 'App Nap' settings. However,
compiling 3.7 in Debug mode resulted in a considerable amount of
additional CPU usage for me.
Did 3.7 help with your problems so far?
So far succeeded in installing 3.7 on OSX 10.8 and 10.9.
I'm now starting to deconstruct the software so I can test it in my hotel
room without the hardware I use in the theatre. Luckily I have a fast
internet connection in this hotel. Had to use mobile connections before...
Best regards,
Arthur
Post by Stefan Nussbaumer
best regards + good luck,
Stefan
Post by Arthur Sauer
Unlike the 3.6 version I had on OSX 10.9, the 3.7 version I built
does
NOT
have a checkbox with 'Prevent App Nap' in the 'Get Info' window
$ cmake
-DCMAKE_INSTALL_PREFIX=./install
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_OSX_ARCHITECTURES='x86_64'
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
-DNATIVE=ON
-DSC_SYMLINK_CLASSLIB=OFF
-DREADLINE_INCLUDE_DIR=/opt/local/include
-DREADLINE_LIBRARY=/opt/local/lib/libreadline.dylib
-DSNDFILE_INCLUDE_DIR=/opt/local/include
-DSNDFILE_LIBRARY=/opt/local/lib/libsndfile.dylib
..
Does this mean that with these cmake settings 'Prevent App Nap' is
automatically enabled, or should I change the cmake build settings?
And checking this I found that the 'Prevent App Nap' settings were
DISABLED on the 3.6 version I use for the perfomrance, while they were
most certainly enabled.
Something to check before each performance!!!
Best regards,
Arthur Sauer
Post by Arthur Sauer
What -DCMAKE_BUILD_TYPE would be the best to use to be able to
find
the
cause of my problem,
taking into account that I will want to use this version for the
- RelWithDebInfo or
- Debug.
Would it be wise to use such builds for a performance or should
I
use a
Release build for that?
Best regards,
Arthur
Op 3-10-14 13:51 schreef Stefan Nussbaumer
Op 2-10-14 23:13 schreef Stefan Nussbaumer
Post by Stefan Nussbaumer
Could you provide some code that triggers the behavior on your
machine?
I've seen this happening here too. However, it was related to
my
I'm using Ndef a lot in combination with the Conductor quark.
Within
Conductor the NodeProxy:-set gets overwritten. However,
there
has
been
a
change to the original (the overwritten) method that made
NodeProxy:-set
fail as defined within Conductor.
I do not use Ndef nor Conductor, and, to be honest, I do not know
to
much
about these.
Never mind. Obviously the issue you're experiencing isn't
related
to
that. And Ndef resp. Conductor probably wouldn't help with it.
To give some perspective: this show has been touring for 13
years.
All
samplers (E64, MPC2000XL) have SCSI interfaces. Backup systems
used
Zip
the
way
of
the
way dodo. After a SCSI disk died I decided to program these
samplers
in
SC.
So what I have is mainly soundfileplayers that simulate OneShot
samples,
Looping samples, mono and stereo.
"127.0.0.1", port: 57111), options: nil, clientID: 0);
Here is an example of a SynthDef (sorry for the comments in Dutch,
but
I
Don't worry about Dutch comments - as a German speaking person
it's
not
too hard to guess what they mean.
:)
I've been able to compile your synthdef and instantiate a synth
from
it.
Though I couldn't hear any sound (used a mono soundfile for testing)
setting any of the args defined within the synthdef while the
synth
was
playing didn't cause any failures either. The only thing that
I
changed
was to use 'add' instead of 'send' for the synthdef
compilation
(I
compiled it for Server.local only). Also, I am currently
working
on
Linux, using SC 3.7 (using the latest, self-compiled version
from
the
git repository).
As stated in a previous post, I will try to deconstruct the software,
maybe partly as pseudocode.
I'm sorry if this isn't helpful. I can totally understand your
frustration. It's not annoying - it's a real threat for a
professional
artist if things that used work suddenly fail. But I'm unable
to
say
why...
Maybe give SC 3.7 a try? I know, compiling it is a bit of a
hassle
but
at least 3.6.x and 3.7 can be run in parallel under OS X.
sorry again if my comments weren't too helpful...
Very helpful!
I'm going to try to compile 3.7. Haven't done that for some
time
(must
have been before cmake et al. were introduced).
Best regards,
Arthur
stefan
// MONO LOOPING SYNTH
serversArray.do({
arg item, i;
theMonoLoopingSynthDef = SynthDef(\quickMonoLoopSampler, { |
bufnum,
out
= 0,
envelopeAttackTime = 0, envelopeDecayTime = 0,
envelopeSustainLevel
=
1, envelopeReleaseTime = 0, envelopePeakLevel = 1,
envelopeCurve
=
0,
gate
= 1,
startInSeconds, endInSeconds, loopFadeLengthInSeconds = 0.001,
fadeCurve = 1, rate = 1.0, volume = 1, velocity = 1, gain = 1 |
var loopStartInSamples, loopEndInSamples,
endMinusStartInSeconds,
upOrDown, loopLengthInSeconds;
var startLoopFrequency, loopFrequency, trigger, triggers,
firstLoopXFadeEnvelopeGenerator, xFadeEnvelopeGenerators;
var firstLoopBufferPosition, bufferPositions, envelopes,
theFirstLoopBufferReader, theBufferReader, sample;
// Conversie van seconden naar samples; samplerichting;
loopfrequentie
loopStartInSamples = startInSeconds *
BufSampleRate.ir(bufnum);
//
originele samplerate van de soundfile
loopEndInSamples = endInSeconds *
BufSampleRate.ir(bufnum);
//
originele samplerate van de soundfile
endMinusStartInSeconds = endInSeconds - startInSeconds;
upOrDown = endMinusStartInSeconds.sign;
loopLengthInSeconds = abs(endMinusStartInSeconds);
loopFrequency = 1 / (loopLengthInSeconds -
loopFadeLengthInSeconds);
// PulseDivider: Outputs one impulse each time it receives a
certain
number (= div) of triggers at its input
// start: Starting value for the trigger count. If
startCount
is
negative it adds that many counts to the first time the output
triggers.
// Er lopen twee PulseDividers: de ene begint op 1 (-1), de
andere
op 2
(-0).
// Het resultaat is 2 triggers die elkaar afwisselen
trigger = Impulse.kr(freq: loopFrequency);
[-0,-1]);
//triggers.scope("triggers", zoom: 0.001);
// omdat de attack tijdens de 1e loop niet gecrossfade
wordt,
is
er
een
aparte EnvGen nodig
// Omdat Env.linen een fixed length heeft werkt de gate als
een
trigger.
firstLoopXFadeEnvelopeGenerator = EnvGen.kr(
envelope: Env.linen(
attackTime: 0,
sustainTime: loopLengthInSeconds -
loopFadeLengthInSeconds,
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: gate);
//firstLoopXFadeEnvelopeGenerator.scope("firstLoopXFadeEnve
lo
p
e
G
en
er
a
t
or
");
// Omdat Env.linen een fixed length heeft werkt de gate als
een
trigger.
xFadeEnvelopeGenerators = EnvGen.kr(
envelope: Env.linen(
attackTime: loopFadeLengthInSeconds,
sustainTime: loopLengthInSeconds - (2 *
loopFadeLengthInSeconds),
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: triggers);
//xFadeEnvelopeGenerators.scope("xFadeEnvelopeGenerators");
// OSCFunc = sendTrigMessage
loopFadeLengthInSeconds); // The trigger message sent back to
the
/tr, int: Node ID, int: Trigger ID, float: Trigger Value
loopLengthInSeconds);
BufRateScale.kr(bufnum));
BufSampleRate.ir(bufnum));
SampleRate.ir(bufnum));
firstLoopBufferPosition = Line.ar(
start: loopStartInSamples,
end: loopEndInSamples,
dur: (loopLengthInSeconds / rate) // je hoeft niet te
corrigeren
met
BufRateScale omdat de lengte van Line in secondes wordt gegeven
);
//firstLoopBufferPosition.poll;
// These Phasors are used as indexes into the buffers.
// The triggers reset the positions of the two phasors.
// rate: The amount of change per sample, i.e at a rate
of
1
the
value
of each sample will be 1 greater than the preceding sample.
// resetPos: The value to jump to upon receiving a trigger.
bufferPositions = Phasor.ar(
trig: triggers,
rate: rate * BufRateScale.kr(bufnum) * upOrDown, // Als rate
= 1
dan
is de waarde van iedere volgende sample 1 groter
// je moet hier corrigeren met BufRateScale omdat de
snelheid
van
Phasor is gebaseerd op de huidige samplerate
start: loopStartInSamples,
end: loopEndInSamples,
resetPos: loopStartInSamples);
//bufferPositions.poll;
//(bufferPositions/ 500000).scope("buf", zoom: 0.001);
// ADSR envelope
envelopes = EnvGen.kr(
envelope: Env.adsr(
attackTime: envelopeAttackTime,
decayTime: envelopeDecayTime,
sustainLevel: envelopeSustainLevel,
releaseTime: envelopeReleaseTime,
peakLevel: envelopePeakLevel,
curve: envelopeCurve),
gate: gate,
doneAction: 2 // free the enclosing synth
);
theFirstLoopBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: firstLoopBufferPosition,
loop: 0);
theBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: bufferPositions, // 2 Phasors: Audio rate
modulateable
index
into the buffer.
loop: 0);
//theBufferReader.scope("theBufferReader");
// Two Mono BufferReaders
sample = (
(
(theFirstLoopBufferReader * 0.5) +
(theBufferReader * xFadeEnvelopeGenerators)
)
* envelopes * volume * velocity * gain;
).sum;
// sample = [ an OutputProxy, an OutputProxy ].sum ==> sample
= a
BinaryOpUGen
// [ an OutputProxy, an OutputProxy ] is een Array
// The use of the binary operator sum (= +) instantiates a
BinaryOpUGen.
Out.ar(out, sample ! 2); // equivalent to dup(2): return an
Array
with
2 BinaryOpUGens: [ a BinaryOpUGen, a BinaryOpUGen ]
}).send(item); // Compile the def and send it to server
without
writing
to disk
// add(libname, completionMsg, keepDef: true)
// SynthDescLib.global.addServer(server)
// SynthDescLib.global.browse;
//
SynthDescLib.global.synthDescs.at(\quickMonoLoopSampler).hasGa
te
;
// SynthDef.synthDefDir;
});
I hope this code makes enough sense to be helpful. Does this
have
any
relation to the kind of problems you mention? If so, I'm willing
to
look
into the peculiarities of Ndef. I have no quarks installed
(installing
quarks became sort of a hassle, in combination with limited
time,
and
still lots to learn...).
In my opinion this matter is quite important with regards to using
SC
in a
professional environment. I'm willing invest what is needed to
bring
SC
back to a level where it can be trusted on a Mac, since I
lack
the
time
to
look into Linux (at least during this tour...).
Thanks for looking into this.
Best regards,
Arthur
Post by Stefan Nussbaumer
Just a shot in the dark but my guts feeling says it's not related
to
the
OS but something that has changed in SC...
regards, stefan
Post by xs4all sauermusic
It happend more than once. All nodes were killed. I have been
touring
with this software for two months already without problems on
10.8.
The
only differences: computer, OS.
Any pointers on what to look for (Console, XCode, SC)? Worth
trying
3.7
(would nor like to have another unknown in the equation)?
Other suggestions?
Best regards,
Arthur
Sent from Arthur's iPhone
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Rainer Schuetz
2014-10-07 23:35:03 UTC
Permalink
The build with statically linked libsndfile is here:

https://drive.google.com/file/d/0B7igZrWv7UxdM1dLNWV1R1dNVzA/view?usp=sharing
Post by Arthur Sauer
I'll see what I can find tomorrow, and maybe I'll have to use another
laptop on 10.8 (that I use now for emailing…)
I’d rather hear that your problems are gone, but that’s a way to save your performance too :)

Best
.r.
Post by Arthur Sauer
Post by Rainer Schuetz
Hi Arthur,
sorry for the libsndfile issue. This has no relation to your actual
problem, and I am not sure yet why SC expects libsndfile.1.dylib in
/usr/local/lib rather than using the bundled one. If with
libsndfile.1.dlyb “from the package” you refer to the one that came with
the noAppNap build
That's the one
Post by Rainer Schuetz
(in Contents/MacOS) your workaround should be safe but I’ll provide
another build soon that uses the libsndfile library that is provided with
the SC-source.
After rereading your problem description I am pretty sure that you have
the AppNap problem, I saw very similar symptoms in a project that loads a
lot of samples on startup, and with the AppNap-patch they disappeared
completely. If you are curious and are willing to spend a few minutes on
verifying this, you can do the following: open the “Energy”-tab in
Activity Monitor. Start your pre AppNap-fix-version of SC and observe the
value in the column “App Nap” for scide, sclang (that’s the one causing
the problem) and scsynth. At some point, after you boot the server (and
have scide in the foreground) the sclang value will turn to yes - in that
state processes like loading samples will slow down dramatically. You can
push sclang to the foreground by clicking the cubic icon in the dock and
you should see both the sclang-value for AppNap turn back to No in
AM/Energy, and experience a dramatical speed up of the sc-processes.
I'll try that tomorrow, I'm to tired now...
Post by Rainer Schuetz
It is a bit weird that you don’t get the AppNap switch in the
context-menu of the SC-application bundle. But I remember vaguely that
that can happen if you ever installed a SC-version in the same path, that
does not require the switch. OSX stores the status regarding AppNap in
some cache pointing to this specific path, and does not notice if another
version - that requires the switch - is installed there.
OK, I'll check that out!
Post by Rainer Schuetz
Anyways, sorry for not reading your mail more carefully the other day, or
I would have shared my past experience earlier, which was not as dramatic
as yours. At that time (Dec 2013) Snickel kindly provided a patch very
quickly. Unfortunately it was only merged yesterday (see
https://github.com/supercollider/supercollider/pull/1011#issuecomment-5822
2096)
No problem, you did now :)
I'll see what I can find tomorrow, and maybe I'll have to use another
laptop on 10.8 (that I use now for emailing...)
Best regards,
Arthur
Post by Rainer Schuetz
Best
.r.
Post by Arthur Sauer
*** ERROR: dlopen
'/Applications/Geluid/Language/SuperCollider_f/SuperCollider 3.7
noAppNap/SuperCollider 3.7
noAppNap.app/Contents/Resources/plugins/DiskIO_UGens.scx' err
'dlopen(/Applications/Geluid/Language/SuperCollider_f/SuperCollider 3.7
noAppNap/SuperCollider 3.7
noAppNap.app/Contents/Resources/plugins/DiskIO_UGens.scx, 2): Library not
loaded: /usr/local/lib/libsndfile.1.dylib
/Applications/Geluid/Language/SuperCollider_f/SuperCollider 3.7
noAppNap/SuperCollider 3.7
noAppNap.app/Contents/Resources/plugins/DiskIO_UGens.scx
Reason: image not found'
I copied libsndfile.1.dylib from the SC package to /usr/local/lib/ and the
problem disappeared. I don't think I had this problem in the theater
today, but then, I might have missed it...
I look through all my code and could not find any problems. I have now
enabled a lot of postf's in the code so I can see where it fails...
I'm going to try to let it run with Logic sending MIDI and sending audio
to the built-in output and see what I can find out.
Best regards,
Arthur
Post by Arthur Sauer
Post by Arthur Sauer
Just had a soundcheck, the computer flipped out twice.
I've checked almost all of the software for asynchronicity problems and
only found a wait that I replaced with a Condition, but apparently no luck.
ALL samples are preloaded in memory, and each sample is loaded into a
Synthbefore the show.
Sorry, meant: loaded into a Buffer before the show. Synths are made with
NoteOns... Which will be the next thing to check. First get some food for
the night...
The noAppVersion I will check tomorrow. I hope that will make an end to
this misery.
Best regards,
Arthur
Post by Arthur Sauer
Before starting the samples are checked, but while playing some samples
just do not respond.
I do not get error messages.
I use 8 servers since I have 8 processors. I might be that instead of a
single Synth a complete Server stops working, but I have not had time to
check this.
Will build the noapp version now.
Best regards,
Arthur
Post by Arthur Sauer
I was just going to aks about it! Thanks, I will rebuild!
Post by Rainer Schuetz
Hi Arthur,
try building again from latest master. Just a few hours ago a patch was
committed that prevents sclang taking a nap. Let¹s hope it it helps!
Best
.r.
Post by Arthur Sauer
Post by Stefan Nussbaumer
Unfortunatly I can't say anything about the 'App Nap' settings. However,
compiling 3.7 in Debug mode resulted in a considerable amount of
additional CPU usage for me.
Did 3.7 help with your problems so far?
So far succeeded in installing 3.7 on OSX 10.8 and 10.9.
I'm now starting to deconstruct the software so I can test it in my hotel
room without the hardware I use in the theatre. Luckily I have a fast
internet connection in this hotel. Had to use mobile connections before...
Best regards,
Arthur
Post by Stefan Nussbaumer
best regards + good luck,
Stefan
Post by Arthur Sauer
Unlike the 3.6 version I had on OSX 10.9, the 3.7 version I built
does
NOT
have a checkbox with 'Prevent App Nap' in the 'Get Info' window
$ cmake
-DCMAKE_INSTALL_PREFIX=./install
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_OSX_ARCHITECTURES='x86_64'
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
-DNATIVE=ON
-DSC_SYMLINK_CLASSLIB=OFF
-DREADLINE_INCLUDE_DIR=/opt/local/include
-DREADLINE_LIBRARY=/opt/local/lib/libreadline.dylib
-DSNDFILE_INCLUDE_DIR=/opt/local/include
-DSNDFILE_LIBRARY=/opt/local/lib/libsndfile.dylib
..
Does this mean that with these cmake settings 'Prevent App Nap' is
automatically enabled, or should I change the cmake build settings?
And checking this I found that the 'Prevent App Nap' settings were
DISABLED on the 3.6 version I use for the perfomrance, while they were
most certainly enabled.
Something to check before each performance!!!
Best regards,
Arthur Sauer
Post by Arthur Sauer
What -DCMAKE_BUILD_TYPE would be the best to use to be able to
find
the
cause of my problem,
taking into account that I will want to use this version for the
- RelWithDebInfo or
- Debug.
Would it be wise to use such builds for a performance or should
I
use a
Release build for that?
Best regards,
Arthur
Op 3-10-14 13:51 schreef Stefan Nussbaumer
Op 2-10-14 23:13 schreef Stefan Nussbaumer
Post by Stefan Nussbaumer
Could you provide some code that triggers the behavior on your
machine?
I've seen this happening here too. However, it was related to
my
I'm using Ndef a lot in combination with the Conductor quark.
Within
Conductor the NodeProxy:-set gets overwritten. However,
there
has
been
a
change to the original (the overwritten) method that made
NodeProxy:-set
fail as defined within Conductor.
I do not use Ndef nor Conductor, and, to be honest, I do not know
to
much
about these.
Never mind. Obviously the issue you're experiencing isn't
related
to
that. And Ndef resp. Conductor probably wouldn't help with it.
To give some perspective: this show has been touring for 13
years.
All
samplers (E64, MPC2000XL) have SCSI interfaces. Backup systems
used
Zip
the
way
of
the
way dodo. After a SCSI disk died I decided to program these
samplers
in
SC.
So what I have is mainly soundfileplayers that simulate OneShot
samples,
Looping samples, mono and stereo.
"127.0.0.1", port: 57111), options: nil, clientID: 0);
Here is an example of a SynthDef (sorry for the comments in
Dutch,
but
I
Don't worry about Dutch comments - as a German speaking person
it's
not
too hard to guess what they mean.
:)
I've been able to compile your synthdef and instantiate a synth
from
it.
Though I couldn't hear any sound (used a mono soundfile for
testing)
setting any of the args defined within the synthdef while the
synth
was
playing didn't cause any failures either. The only thing that
I
changed
was to use 'add' instead of 'send' for the synthdef
compilation
(I
compiled it for Server.local only). Also, I am currently
working
on
Linux, using SC 3.7 (using the latest, self-compiled version
from
the
git repository).
As stated in a previous post, I will try to deconstruct the software,
maybe partly as pseudocode.
I'm sorry if this isn't helpful. I can totally understand your
frustration. It's not annoying - it's a real threat for a
professional
artist if things that used work suddenly fail. But I'm unable
to
say
why...
Maybe give SC 3.7 a try? I know, compiling it is a bit of a
hassle
but
at least 3.6.x and 3.7 can be run in parallel under OS X.
sorry again if my comments weren't too helpful...
Very helpful!
I'm going to try to compile 3.7. Haven't done that for some
time
(must
have been before cmake et al. were introduced).
Best regards,
Arthur
stefan
// MONO LOOPING SYNTH
serversArray.do({
arg item, i;
theMonoLoopingSynthDef = SynthDef(\quickMonoLoopSampler, { |
bufnum,
out
= 0,
envelopeAttackTime = 0, envelopeDecayTime = 0,
envelopeSustainLevel
=
1, envelopeReleaseTime = 0, envelopePeakLevel = 1,
envelopeCurve
=
0,
gate
= 1,
startInSeconds, endInSeconds, loopFadeLengthInSeconds = 0.001,
fadeCurve = 1, rate = 1.0, volume = 1, velocity = 1, gain = 1 |
var loopStartInSamples, loopEndInSamples,
endMinusStartInSeconds,
upOrDown, loopLengthInSeconds;
var startLoopFrequency, loopFrequency, trigger, triggers,
firstLoopXFadeEnvelopeGenerator, xFadeEnvelopeGenerators;
var firstLoopBufferPosition, bufferPositions, envelopes,
theFirstLoopBufferReader, theBufferReader, sample;
// Conversie van seconden naar samples; samplerichting;
loopfrequentie
loopStartInSamples = startInSeconds *
BufSampleRate.ir(bufnum);
//
originele samplerate van de soundfile
loopEndInSamples = endInSeconds *
BufSampleRate.ir(bufnum);
//
originele samplerate van de soundfile
endMinusStartInSeconds = endInSeconds - startInSeconds;
upOrDown = endMinusStartInSeconds.sign;
loopLengthInSeconds = abs(endMinusStartInSeconds);
loopFrequency = 1 / (loopLengthInSeconds -
loopFadeLengthInSeconds);
// PulseDivider: Outputs one impulse each time it receives a
certain
number (= div) of triggers at its input
// start: Starting value for the trigger count. If
startCount
is
negative it adds that many counts to the first time the output
triggers.
// Er lopen twee PulseDividers: de ene begint op 1 (-1), de
andere
op 2
(-0).
// Het resultaat is 2 triggers die elkaar afwisselen
trigger = Impulse.kr(freq: loopFrequency);
[-0,-1]);
//triggers.scope("triggers", zoom: 0.001);
// omdat de attack tijdens de 1e loop niet gecrossfade
wordt,
is
er
een
aparte EnvGen nodig
// Omdat Env.linen een fixed length heeft werkt de gate als
een
trigger.
firstLoopXFadeEnvelopeGenerator = EnvGen.kr(
envelope: Env.linen(
attackTime: 0,
sustainTime: loopLengthInSeconds -
loopFadeLengthInSeconds,
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: gate);
//firstLoopXFadeEnvelopeGenerator.scope("firstLoopXFadeEnve
lo
p
e
G
en
er
a
t
or
");
// Omdat Env.linen een fixed length heeft werkt de gate als
een
trigger.
xFadeEnvelopeGenerators = EnvGen.kr(
envelope: Env.linen(
attackTime: loopFadeLengthInSeconds,
sustainTime: loopLengthInSeconds - (2 *
loopFadeLengthInSeconds),
releaseTime: loopFadeLengthInSeconds,
curve: fadeCurve),
gate: triggers);
//xFadeEnvelopeGenerators.scope("xFadeEnvelopeGenerators");
// OSCFunc = sendTrigMessage
loopFadeLengthInSeconds); // The trigger message sent back to
the
/tr, int: Node ID, int: Trigger ID, float: Trigger Value
loopLengthInSeconds);
BufRateScale.kr(bufnum));
BufSampleRate.ir(bufnum));
SampleRate.ir(bufnum));
firstLoopBufferPosition = Line.ar(
start: loopStartInSamples,
end: loopEndInSamples,
dur: (loopLengthInSeconds / rate) // je hoeft niet te
corrigeren
met
BufRateScale omdat de lengte van Line in secondes wordt gegeven
);
//firstLoopBufferPosition.poll;
// These Phasors are used as indexes into the buffers.
// The triggers reset the positions of the two phasors.
// rate: The amount of change per sample, i.e at a rate
of
1
the
value
of each sample will be 1 greater than the preceding sample.
// resetPos: The value to jump to upon receiving a trigger.
bufferPositions = Phasor.ar(
trig: triggers,
rate: rate * BufRateScale.kr(bufnum) * upOrDown, // Als rate
= 1
dan
is de waarde van iedere volgende sample 1 groter
// je moet hier corrigeren met BufRateScale omdat de
snelheid
van
Phasor is gebaseerd op de huidige samplerate
start: loopStartInSamples,
end: loopEndInSamples,
resetPos: loopStartInSamples);
//bufferPositions.poll;
//(bufferPositions/ 500000).scope("buf", zoom: 0.001);
// ADSR envelope
envelopes = EnvGen.kr(
envelope: Env.adsr(
attackTime: envelopeAttackTime,
decayTime: envelopeDecayTime,
sustainLevel: envelopeSustainLevel,
releaseTime: envelopeReleaseTime,
peakLevel: envelopePeakLevel,
curve: envelopeCurve),
gate: gate,
doneAction: 2 // free the enclosing synth
);
theFirstLoopBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: firstLoopBufferPosition,
loop: 0);
theBufferReader = BufRd.ar(
numChannels: 1,
bufnum: bufnum,
phase: bufferPositions, // 2 Phasors: Audio rate
modulateable
index
into the buffer.
loop: 0);
//theBufferReader.scope("theBufferReader");
// Two Mono BufferReaders
sample = (
(
(theFirstLoopBufferReader * 0.5) +
(theBufferReader * xFadeEnvelopeGenerators)
)
* envelopes * volume * velocity * gain;
).sum;
// sample = [ an OutputProxy, an OutputProxy ].sum ==>
sample
= a
BinaryOpUGen
// [ an OutputProxy, an OutputProxy ] is een Array
// The use of the binary operator sum (= +) instantiates a
BinaryOpUGen.
Out.ar(out, sample ! 2); // equivalent to dup(2): return an
Array
with
2 BinaryOpUGens: [ a BinaryOpUGen, a BinaryOpUGen ]
}).send(item); // Compile the def and send it to server
without
writing
to disk
// add(libname, completionMsg, keepDef: true)
// SynthDescLib.global.addServer(server)
// SynthDescLib.global.browse;
//
SynthDescLib.global.synthDescs.at(\quickMonoLoopSampler).hasGa
te
;
// SynthDef.synthDefDir;
});
I hope this code makes enough sense to be helpful. Does this
have
any
relation to the kind of problems you mention? If so, I'm willing
to
look
into the peculiarities of Ndef. I have no quarks installed
(installing
quarks became sort of a hassle, in combination with limited
time,
and
still lots to learn...).
In my opinion this matter is quite important with regards to
using
SC
in a
professional environment. I'm willing invest what is needed to
bring
SC
back to a level where it can be trusted on a Mac, since I
lack
the
time
to
look into Linux (at least during this tour...).
Thanks for looking into this.
Best regards,
Arthur
Post by Stefan Nussbaumer
Just a shot in the dark but my guts feeling says it's not
related
to
the
OS but something that has changed in SC...
regards, stefan
Post by xs4all sauermusic
It happend more than once. All nodes were killed. I have been
touring
with this software for two months already without problems on
10.8.
The
only differences: computer, OS.
Any pointers on what to look for (Console, XCode, SC)? Worth
trying
3.7
(would nor like to have another unknown in the equation)?
Other suggestions?
Best regards,
Arthur
Sent from Arthur's iPhone
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
James Harkins
2014-10-08 00:08:07 UTC
Permalink
Post by Rainer Schuetz
https://drive.google.com/file/d/0B7igZrWv7UxdM1dLNWV1R1dNVzA/view?usp=sharing
Post by Arthur Sauer
I'll see what I can find tomorrow, and maybe I'll have to use another
laptop on 10.8 (that I use now for emailing…)
I’d rather hear that your problems are gone, but that’s a way to save your
performance too :)
An aside: Was there a particular need to preserve hundreds of lines of
quotes here? Among them, at least 16 copies of the mailing list footer?

hjh

Sent with AquaMail for Android
http://www.aqua-mail.com





_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Arthur Sauer
2014-10-08 07:53:40 UTC
Permalink
Sorry
Post by James Harkins
An aside: Was there a particular need to preserve hundreds of lines of
quotes here? Among them, at least 16 copies of the mailing list footer?
hjh
Sent with AquaMail for Android
http://www.aqua-mail.com
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Arthur Sauer
2014-10-08 08:58:10 UTC
Permalink
Using the "noNapApp with Internal LibSndFile" SuperCollider version I get
results that make me decide to run the show on another laptop with 10.8.



Did some testing using Logic to send MIDI data:

Results:
If Logic is in the foreground and I play a loop, nothing happens. If I
stop Logic and click on a note, I might hear something. Then once it stops
reacting, it will not come back.
If I send a ProgramChange from Logic, it is received.
If I send a ProgramChange from another window in SuperCollider to the same
IAC-bus that I use for Logic, no ProgramChanges are received.

I also looked into the Activity Monitor:
In the CPU tab:
If you show the column App Nap:
the App Nap of SuperCollider switches on and off all the time.

I Use an RME UFX interface and the TotalMix FX also had the App Nap on. I
decided to turn it off, and I get the same effect: App Nap turning on an
off.

So it is not just only SuperCollider showing this behaviour.




I do not see scide in the Activity Monitor with any of the SC version I
tried.



I AM curious, so I opened the Release version I built with the following
settings:

$ cmake -DCMAKE_INSTALL_PREFIX=./install -DCMAKE_BUILD_TYPE=Release
-DCMAKE_OSX_ARCHITECTURES='x86_64' -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
-DNATIVE=ON -DSC_SYMLINK_CLASSLIB=OFF
-DREADLINE_INCLUDE_DIR=/opt/local/include
-DREADLINE_LIBRARY=/opt/local/lib/libreadline.dylib
-DSNDFILE_INCLUDE_DIR=/opt/local/include
-DSNDFILE_LIBRARY=/opt/local/lib/libsndfile.dylib ..


which was built from commit 24298ffa41068cf235dc60cafec4ea5b93aaad63

and App Nap is not switching on and off... App Nap is off.
This is a version that has no App Nap checkbox in the Get Info Window.


Getting more curious, I opened the 3.6.6 version (a version I downloaded
without building it myself), AFTER disabling 'Prevent App Nap' in the Get
Info Window. This is the original version I used for the show.

And lo and behold: after keeping the scide in the foreground for some
time, App Nap does not turn off for sclang, nor for the scsynths and not
for SuperCollider.

I can't make any coffee of it (translated Dutch saying...), meaning that I
cannot find any logic in the observed behaviour.

I'm willing to help solve this problem, so any pointers are welcome. I
guess I should start with an XCode build on the Mac?

I'm now going to test if I can run everything from my older laptop.

Best regards,

Arthur


PS kept the quote from the last mail as a point of reference...
Post by Rainer Schuetz
Hi Arthur,
sorry for the libsndfile issue. This has no relation to your actual
problem, and I am not sure yet why SC expects libsndfile.1.dylib in
/usr/local/lib rather than using the bundled one. If with
libsndfile.1.dlyb ³from the package² you refer to the one that came with
the noAppNap build (in Contents/MacOS) your workaround should be safe but
I¹ll provide another build soon that uses the libsndfile library that is
provided with the SC-source.
After rereading your problem description I am pretty sure that you have
the AppNap problem, I saw very similar symptoms in a project that loads a
lot of samples on startup, and with the AppNap-patch they disappeared
completely. If you are curious and are willing to spend a few minutes on
verifying this, you can do the following: open the ³Energy²-tab in
Activity Monitor. Start your pre AppNap-fix-version of SC and observe the
value in the column ³App Nap² for scide, sclang (that¹s the one causing
the problem) and scsynth. At some point, after you boot the server (and
have scide in the foreground) the sclang value will turn to yes - in that
state processes like loading samples will slow down dramatically. You can
push sclang to the foreground by clicking the cubic icon in the dock and
you should see both the sclang-value for AppNap turn back to No in
AM/Energy, and experience a dramatical speed up of the sc-processes.
It is a bit weird that you don¹t get the AppNap switch in the
context-menu of the SC-application bundle. But I remember vaguely that
that can happen if you ever installed a SC-version in the same path, that
does not require the switch. OSX stores the status regarding AppNap in
some cache pointing to this specific path, and does not notice if another
version - that requires the switch - is installed there.
Anyways, sorry for not reading your mail more carefully the other day, or
I would have shared my past experience earlier, which was not as dramatic
as yours. At that time (Dec 2013) Snickel kindly provided a patch very
quickly. Unfortunately it was only merged yesterday (see
https://github.com/supercollider/supercollider/pull/1011#issuecomment-5822
2096)
Best
.r.
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Rainer Schuetz
2014-10-08 11:06:10 UTC
Permalink
Hi Arthur,
Post by Arthur Sauer
I'm willing to help solve this problem, so any pointers are welcome. I
guess I should start with an XCode build on the Mac?
That’s very kind, the more so as so seem to be in the middle of show preparations! We seem to need this kind of real world scenario to demonstrate how disastrous the effects of AppNap can be for SuperCollider. Let’s hope that for the sake of this discussion your problem *is* the AppNap-Trap (your findings seem to be so contradictory that one starts doubting again. So Sherlock Holmes mode on :)). I think the most reliable way to verify that we actually are dealing with AppNap, is to press the Dock-Icon of the napping sc-component (as seen in Activity Monitor) *during* an ongoing process that is assumed to be inhibited/slowed down by AppNap and see if anything changes to the good. That might often not be possible, but sometimes it is, and in that case you have a positive that AppNap is involved. (“Scide" seems to be represented by the “SuperCollider" process in Activity monitor (hopefully it’s not more complicated than that).

After the prologue let me say this first: it is likely that some of the people who could help are not reading this thread because it’s on SC-User. This is actually an SC-Dev issue, and the other space where people are listening is Github. So I think you should consider “escalating” :) the issue. If Github, the thread to go is this one (Snickell, the author of the patch is getting notification, as well as Dan and Tim):

https://github.com/supercollider/supercollider/pull/1011#issuecomment-58288403

Among others you will see a brief discussion for which components of SC AppNap should be prevented. SC-Dev is a good place too, more OSX-people are likely to listen there, but I am not sure if Snickell is listening there, who is very helpful. Unfortunately the group of people interested in the maintenance of SC is split over four places that only partially overlap.
Post by Arthur Sauer
If Logic is in the foreground and I play a loop, nothing happens. If I
stop Logic and click on a note, I might hear something. Then once it stops
reacting, it will not come back.
If I send a ProgramChange from Logic, it is received.
If I send a ProgramChange from another window in SuperCollider to the same
IAC-bus that I use for Logic, no ProgramChanges are received.
the App Nap of SuperCollider switches on and off all the time.
But not sclang, right. That would show that the patch is helping. (scsynth never napped, even in the past, it seems to be a process recognised as time-critcal by the OS automatically). In theory it should not matter if scide takes a nap, as it should be independent of the communication going on with sclang and scsynth, but maybe that needs more consideration. Your finding shows that the patch does not cover whatever is represented by “SuperCollider”. Again in theory this might not be a problem, but your findings make it likely that it is.
Post by Arthur Sauer
I Use an RME UFX interface and the TotalMix FX also had the App Nap on. I
decided to turn it off, and I get the same effect: App Nap turning on an
off.
So it is not just only SuperCollider showing this behaviour.
Right, AppNap is intended behaviour aimed at saving energy. The point is to prevent AppNap for processes that are time-critical. OSX recognises some processes automatically, others must express their wish not to be sent to bed explicitly.
Post by Arthur Sauer
This is a version that has no App Nap checkbox in the Get Info Window.
I think the AppNap-switch in the info-box should appear for all applications not built with SDK 10.9. But there is (or used to be) this confusing factor that if an Application is already registered in the system with a specific AppNat-status, that status does not change, although you install a different version of the App, and you don’t get a choice in the GUI any more. So if you ever had an Application installed that was build using SDK-10.9, OSX thinks this Application knows what it is doing with respect to AppNap and does not offer the switch any more, even if you install a different version.
But you can change the AppNap status on the command line with

defaults write <app domain name> NSAppSleepDisabled -bool YES

as described for example here

http://cobbservations.wordpress.com/2013/11/05/disabling-app-nap-in-os-x-mavericks/

Command-line/Info-box-switching of AppNap-status works on application level - one might prefer a more fine tuned behaviour as SC consists of several sort of independent processes.
Post by Arthur Sauer
.. which was built from commit 24298ffa41068cf235dc60cafec4ea5b93aaad63
and App Nap is not switching on and off... App Nap is off.
So you are really saying no AppNap in a build without the AppNap patch? That’s indeed a very irritating finding. Some explanations would be: latest OSX recognises privileged Applications better and prevents SC from napping automatically. Another explanation would be that AppNap-rules from an older install are cached somewhere and are still active although you installed another version. Or some processes on your system interact with SC in a way that prevents AppNap. Exclude the impossible and you will embrace truth :) Hopefully somebody that understands these things technically will have an idea...
Post by Arthur Sauer
Getting more curious, I opened the 3.6.6 version (a version I downloaded
without building it myself), AFTER disabling 'Prevent App Nap' in the Get
Info Window. This is the original version I used for the show.
And lo and behold: after keeping the scide in the foreground for some
time, App Nap does not turn off for sclang, nor for the scsynths and not
for SuperCollider.
Hmm, *maybe* the explanation is like the one above. Once the system knows how to deal with SuperCollider it keeps that setting. But probably not - I did see the symptoms of AppNap returning after using a master-vanilla build without the patch on my system. So this needs more research… But you keep having your problems communicating from Logic, right? So the patch or any OSX-cleverness do not cover the case that “SuperCollider" is accessed from outside - I can confirm this. In my build including the patch the “SuperCollider” process also naps if in the background, but sclang stays awake. The question remains if this causes problems to processes going on with sclang and scsynth. I always had SuperCollider in the foreground in my experiments back then, so I didn’t meet that use case.

All the best, please keep communicating on this issue, we need a robust solution for the AppNap problem. And we probably have to seek help from people not seeing this thread.

Best
Rainer


Not sent with AquaMail for Android
http://www.aqua-mail.com


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/

Daniel Mayer
2014-10-03 00:37:25 UTC
Permalink
Could it be a synchronicity issue ?

It can happen that sequences of asynchronous commands
work in *most* cases without syncing although syncing should be done -
this can be a quite hidden thing (e.g. nested Functions triggering start/stop/pause).

Then, when changing to another computer/system, subprocesses might take
different times and mess up the fragile order from before:
e.g. a Synth is going to be set before it actually exists server-side
or after another action has released it or such ...

Greetings

Daniel

----------------------------
www.daniel-mayer.at
-----------------------------



_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Arthur Sauer
2014-10-03 06:09:36 UTC
Permalink
Post by Daniel Mayer
Could it be a synchronicity issue ?
It can happen that sequences of asynchronous commands
work in *most* cases without syncing although syncing should be done -
this can be a quite hidden thing (e.g. nested Functions triggering start/stop/pause).
All processes are synced where needed. I'm aware of asynchronous commands.

Start and stop of a sample is triggered by MIDI noteon and noteoffs, sent
by a MIDI keyboard and a Korg PadKontrol.
A noteon could start a synth like the one in a previous email.
No LFO's or other 'fancy' stuff.

It is good to know that:
All samples are preloaded in memory before the start of the show.

When I have a server failure, I cannot trigger any new samples. It is like
the server has become deaf...


You can see a filmed version of this show on:


Not all sounds are coming from the computer, there are acoustic
instruments and minidisks as well.

Best regards,

Arthur
Post by Daniel Mayer
Then, when changing to another computer/system, subprocesses might take
e.g. a Synth is going to be set before it actually exists server-side
or after another action has released it or such ...
Greetings
Daniel
----------------------------
www.daniel-mayer.at
-----------------------------
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Daniel Mayer
2014-10-03 09:09:10 UTC
Permalink
Post by Arthur Sauer
Post by Daniel Mayer
Could it be a synchronicity issue ?
It can happen that sequences of asynchronous commands
work in *most* cases without syncing although syncing should be done -
this can be a quite hidden thing (e.g. nested Functions triggering start/stop/pause).
All processes are synced where needed. I'm aware of asynchronous commands.
It can really be overlooked quite easily, especially if it works all the time at first.
I've often been fooled by such things.
Post by Arthur Sauer
When I have a server failure, I cannot trigger any new samples. It is like
the server has become deaf...
The error message you posted doesn't look like that,
compare messages when evaluating in order:


s.boot

x = Synth.basicNew(\default)

x.set(\amp, 0.5)


s.quit

x.set(\amp, 0.5)


Greetings

Daniel

-----------------------------
www.daniel-mayer.at
-----------------------------




_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Arthur Sauer
2014-10-03 14:23:30 UTC
Permalink
Post by Daniel Mayer
Post by Arthur Sauer
Post by Daniel Mayer
Could it be a synchronicity issue ?
It can happen that sequences of asynchronous commands
work in *most* cases without syncing although syncing should be done -
this can be a quite hidden thing (e.g. nested Functions triggering start/stop/pause).
All processes are synced where needed. I'm aware of asynchronous commands.
It can really be overlooked quite easily, especially if it works all the time at first.
I've often been fooled by such things.
I've decided to deconstruct the software to see if I can find anything
like it. This will take some time.
Post by Daniel Mayer
Post by Arthur Sauer
When I have a server failure, I cannot trigger any new samples. It is like
the server has become deaf...
The error message you posted doesn't look like that,
That leads me to a new conclusion: the error message is a side effect of
what is really happening. And now I remember it happened one time when
this error message was not present.

Hard to keep track of these things during rehearsal or performance. :{
Post by Daniel Mayer
s.boot
booting 57110
localhost
Found 0 LADSPA plugins
Number of Devices: 8
0 : "Built-in Microph"
1 : "Built-in Output"
2 : "Avid CoreAudio Device"
3 : "JackRouter"
4 : "LogMeInSoundDriver"
5 : "Soundflower (2ch)"
6 : "Soundflower (64ch)"
7 : "Pro Tools Aggregate I/O"

"Built-in Microph" Input Device
Streams: 1
0 channels 2

"Built-in Output" Output Device
Streams: 1
0 channels 2

SC_AudioDriver: sample rate = 48000.000000, driver's block size = 512
SuperCollider 3 server ready.
Receiving notification messages from server localhost
Shared memory server interface initialized
Post by Daniel Mayer
x = Synth.basicNew(\default)
Synth("default" : 1000)
Post by Daniel Mayer
x.set(\amp, 0.5)
Synth("default" : 1000)
FAILURE IN SERVER /n_set Node 1000 not found
Post by Daniel Mayer
s.quit
/quit sent

localhost
RESULT = 0
Post by Daniel Mayer
x.set(\amp, 0.5)
Synth("default" : 1000)



Very interesting indeed!


Have to go to the theater now...

Best regards,

Arthur
Post by Daniel Mayer
Greetings
Daniel
-----------------------------
www.daniel-mayer.at
-----------------------------
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Loading...