dathinaios / cueplayer Goto Github PK
View Code? Open in Web Editor NEWA tool for composing and performing real-time and mixed electronic works using SuperCollider.
A tool for composing and performing real-time and mixed electronic works using SuperCollider.
Add option to display the next cue on cueTitle field
input/output meters stop working after consecutive cmd-periods (SC ver.3.12.1), this relates to GroupManagerCP.sc
Include shortcut description in CuePlayer help file and possibly in the tutorial.
... I'm ending up in a situation now where I have 30 minute long timelines with no way of going to specific points in time. I was wondering if it would be possible to implement this behaviour through setting the
clock
, something in line with~cuelist.clock.beats = 290;to be able to go directly to time 290, but this doesn't work, unfortunately. The use case is to be able to start the show from a specific point in time and let it run in real time after that.
Originally posted by @kflak in #11 (comment)
Hi
I just noticed that if you make a new cueplayer instance, another CmdPeriod callback will be registered, resulting in many copies of the input and output synths being played eventually if you keep reevaluating.
Perhaps a flag should be set once the cmd period is added for cueplayer to make sure it isn't added more than 1 time ?
Thanks ! <3
Triggering next cue tries to set the pause button state even when no timer is used.
^^ The preceding error dump is for ERROR: Message 'pauseButton' not understood.
RECEIVER: nil
Hi,
I'm getting this error when I launch a cue from a midi interface or an osc-def (TouchOsc). The cues work, but I get this error when the GUI is open:
-> a CuePlayer
ERROR: Qt: You can not use this Qt functionality in the current thread. Try scheduling on AppClock instead.
ERROR: Primitive '_QObject_SetProperty' failed.
Failed.
RECEIVER:
Instance of NumberBox { (0x55f2d55acbe8, gc=D4, fmt=00, flg=00, set=06)
instance variables [46]
qObject : RawPointer 0x55f2d19f5420
finalizer : instance of Finalizer (0x55f2d55ad018, size=2, set=1)
virtualSlots : nil
wasRemoved : false
font : nil
resize : Integer 1
alpha : Float 1.000000 00000000 3FF00000
decorator : nil
layout : nil
userCanClose : true
deleteOnClose : true
action : instance of Function (0x55f2d532aa68, size=2, set=2)
mouseDownAction : nil
mouseUpAction : nil
mouseEnterAction : nil
mouseLeaveAction : nil
mouseMoveAction : nil
mouseOverAction : nil
mouseWheelAction : nil
keyDownAction : nil
keyUpAction : nil
keyModifiersChangedAction : nil
keyTyped : nil
focusGainedAction : nil
focusLostAction : nil
dragLabel : nil
beginDragAction : nil
canReceiveDragHandler : nil
receiveDragHandler : nil
toFrontAction : nil
endFrontAction : nil
onClose : nil
onResize : nil
onMove : nil
step : Float 0.100000 9999999A 3FB99999
shift_scale : Float 100.000000 00000000 40590000
ctrl_scale : Float 10.000000 00000000 40240000
alt_scale : Float 0.100000 9999999A 3FB99999
scroll : true
scroll_step : Integer 1
align : Symbol 'center'
buttonsVisible : false
normalColor : instance of Color (0x55f2d5331aa8, size=4, set=2)
typingColor : instance of Color (0x55f2d5352008, size=4, set=2)
object : nil
setBoth : true
}
CALL STACK:
MethodError:reportError
arg this = <instance of PrimitiveFailedError>
Nil:handleError
arg this = nil
arg error = <instance of PrimitiveFailedError>
Thread:handleError
arg this = <instance of Thread>
arg error = <instance of PrimitiveFailedError>
Object:throw
arg this = <instance of PrimitiveFailedError>
Object:primitiveFailed
arg this = <instance of NumberBox>
NumberBox:value_
arg this = <instance of NumberBox>
arg value = 1
CueTriggerCP:setCurrent
arg this = <instance of CueTriggerCP>
arg cueNumber = 1
arg cueObject = <instance of Function>
CuePlayerGUI:setCurrent
arg this = <instance of CuePlayerGUI>
arg cuePlayer = <instance of CuePlayer>
var currentCue = 1
CuePlayerGUI:update
arg this = <instance of CuePlayerGUI>
arg theChanged = <instance of CuePlayer>
arg message = 'current'
< FunctionDef in Method Set:do >
arg item = <instance of CuePlayerGUI>
ArrayedCollection:do
arg this = [*4]
arg function = <instance of Function>
var i = 3
Set:do
arg this = <instance of IdentitySet>
arg function = <instance of Function>
var i = 0
Object:changed
arg this = <instance of CuePlayer>
arg what = 'current'
arg moreArgs = [*0]
Cues:next
arg this = <instance of CuePlayer>
OSCMessageDispatcher:value
arg this = <instance of OSCMessageDispatcher>
arg msg = [*2]
arg time = 687.314069174
arg addr = <instance of NetAddr>
arg recvPort = 57120
Main:recvOSCmessage
arg this = <instance of Main>
arg time = 687.314069174
arg replyAddr = <instance of NetAddr>
arg recvPort = 57120
arg msg = [*2]
^^ The preceding error dump is for ERROR: Primitive '_QObject_SetProperty' failed.
Failed.
RECEIVER: a NumberBox
Example cue:
(
~cuelist = CuePlayer.new();
~cuelist.add({
~startingTheShow = Routine {
"starting".postln;
}.play;
});
//touchOsc as cue trigger
OSCdef(\cue, {~cuelist.next}, "/1/cue");
// LaunchPad as cue trigger. Can run at the same time as OSCdef...
if(~hasLaunchPad){
// LPButton is my own implementation of a MidiFunc
LPButton.new(8, onFunc: {~cuelist.next});
};
~cuelist.gui(
monitorInChannels: s.options.numInputBusChannels,
monitorOutChannels: s.options.numOutputBusChannels,
options:(
shortcuts:true,
metronome: false,
)
);
)
Platform: Arch Linux 5.6.2-rt1-2-rt
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.
Hey, another feature request here: It would be amazing if there was a gui representation of all cues added to the cue player. I imagine some kind of playlist where the currently playing cue is highlighted and where the user can click one of the cues to play a specific one.
Hi, i'm not the best at git so maybe i'm missing something but the updates you mentioned on the SC board are not here:
https://github.com/dathinaios/CuePlayer/blob/master/Cues.sc
but I did see them in the commit history:
Not sure what's wrong.
Also..random question. If I called git clone https://github.com/dathinaios/CuePlayer.git should doing that again update to the newest version? I tried and it put another cueplayer folder inside the one that already existed instead of only updating the changed parts like I expected.
On CuePlayer-GUI, the server's volume-fader does not respond to s.volume
The amazing shortcuts curently only work in the main gui window. It would be amazing if they were also registered in the big cue info window as well!
Best <3
At the moment the options are to use an Array
of time/function pairs or a path to a file that returns such an Array
. When the cue requires a large schedule cue errors can be difficult to track. Using a Timeline
would allow for the use of its .add
method instead of an Array which would make things more manageable. This should be currently possible by using a Timeline
inside the normal cue function but care should be taken to pass the clock of the CuePlayer
to it so that timing is synced. Better to allow it in its right place.
So, I have finally gotten around to playing around with the cueplayer, and have made a couple of interesting discoveries. One for this issue, another one for the next...
First of all: when I set largeDisplay to true and this is in focus, the spacebar keyboard shortcut doesn't work. I need to manually focus the cueplayer window to be able to use the spacebar shortcut. This is on macOS Sierra.
Hi there, I am thinking of ways to keep track of all the unholy stuff I have launched while running through a cue list, and also to be able to step through a cuelist quickly without having to clean up manually or calling .value on a bunch of nil
functions that have not yet been initialized. It would also be handy to be able to hop back and forth between different cues and know that the house-keeping would be taken care of for me.
To do this I am considering writing a Cue class that would function as a wrapper for the cue-function. Each cue would also take an optional cleanup-function that could be triggered at will when skipping forward in the cuelist (which is a very common scenario for me when soundchecking for a show)... The cue would also do all the nil checks, to make sure a nil.value doesn't break the cuelist.
It seems some of this functionality is already implemented by the attachmentList in the Cues class, but it's not quite clear to me how this works. Obviously I'd prefer not to reinvent too many wheels, so if there is already a way of accomplishing what I'm looking for with the existing structure, I'd be very happy to learn more about this!
I know that if you instantiate a timeline directly it has a method to stop it but when I use a timeline as part of a put structure I can't figure out how to stop it. What's happening is that I'm stopping a cue but the timeline keeps running and then triggers the next event on the timeline even though I stopped the cue. I would like to be able to stop the next event in the cue's timeline from happening. This is only an issue during rehearsals where starting and stopping often is needed.
A way to visualize the current cue list could be very useful for getting a sense of the overall structure of the project.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.