dathinaios / CuePlayer

A tool for composing and performing real-time and mixed electronic works using SuperCollider.
27 stars 5 forks source link

Next cue only works on increments of 1 #9

Closed kflak closed 7 years ago

kflak commented 7 years ago

It would be very handy to be able to insert cues with float ids and have the "Next cue" button work down the list instead of having to give the cues contiguous integer identifiers. When you have a small set it is no big deal to renumber the cues, but when cue-numbers starts getting up to three digits and you have to insert just one tiny little cue in the middle five minutes before show-time it would be very good to be able to call it 20.5 instead of 21 and then manually relabel the rest of the cue list. Float cue numbers are also a very good organizational feature for knowing which cues belong together.

dathinaios commented 7 years ago

Yes, I see what you mean. I gave it some thought and I believe you can achieve what you want with the current design.

  1. Instead of put use the method add
  2. Instead of using a CueInfo or a Function directly use a path (string) to an scd file for every cue. The file should return either a Function or better a CueInfo with details regarding the cue.

If you use this method you will be able to insert cues without having to change a thing.

Give it a try and let me know how it went!

kflak commented 7 years ago

Sweet! I will try it when I have a bit more time and let you know how it works out.

kflak commented 7 years ago

Hello again, So, this is not quite working out the way I thought it would. By doing this:

var cue = CuePlayer.new;

cue.add((~projectfolder++"cues/beginning.scd").standardizePath);
cue.add((~projectfolder++"cues/crunchy_impro.scd").standardizePath);
cue.add((~projectfolder++"cues/wudan.scd").standardizePath);
cue.add((~projectfolder++"cues/end.scd").standardizePath);

I am able to load the first cue, but I don't seem to be able to get the remaining cues into the cuelist. I tried also passing a function, as well as the concatenated string without .standardizePath. In the end I even resorted to absolute paths, but to no avail. Reassignment (cue = cue.add(...)) didn't work. Is there a way to list the current state of the cuelist, to see which cues are loaded?

dathinaios commented 7 years ago

Woops! I tested and you are right. There seems to be a bug with .add. I am going to have a look at it and let you know!

P.S: You can use .cueList to see them.

dathinaios commented 7 years ago

Ok, I fixed it (hopefully). I published it so you can just update your Quarks and you should get the changes. Haven't tested much as you can imagine so please keep reporting here if you are still having problems.

Thanks for all the feedback by the way! :)

kflak commented 7 years ago

You’re most welcome :-) I’m a bit obsessed with finding a good replacement for QLab, now that I’ve decided to go fully open source ;-) CuePlayer is in many ways much, much better, especially considering how it is embedded in sc. Tried doing something similar in Max, but I’d rather eat my own foot than try that again...

kflak commented 7 years ago

I'm very happy to confirm that the .add method now works as advertised on my system, both for functions as well as filename strings.

dathinaios commented 7 years ago

Great! 👍

I hope this workflow solves your original problem but let me know here if you find it creates different issues.

kflak commented 7 years ago

So far so good :-)

I tested this version now:

(
    var cue = CuePlayer.new;
    var cues = [
        ~beginning,
        ~crunchy_impro,
        ~wudan,
        ~end,
    ];

    cues.do{ |item| cue.add(item) };

    cue.gui(
        monitorInChannels: 2,
        monitorOutChannels: 2,
        options:(
            shortcuts:true,
            largeDisplay: true,
            metronome: false,
        )
    );
)

and it seems to work very well.

dathinaios commented 7 years ago

Looks good :)

By the way, if you choose to use scd files instead of functions you gain the advantage that any change in the files are automatically seen by CuePlayer. This means that you can change cue definitions on the fly without having to re-evaluate any code at all.

kflak commented 7 years ago

That is indeed a good argument for using .scd... Thanks for the tip and all the other help as well!