2014-01-03 13:32:13 -05:00
|
|
|
ScriptModule = require './ScriptModule'
|
|
|
|
|
|
|
|
module.exports = class PlaybackScriptModule extends ScriptModule
|
|
|
|
@neededFor: (noteGroup) ->
|
|
|
|
return noteGroup.playback?
|
|
|
|
|
|
|
|
startNotes: ->
|
|
|
|
notes = []
|
|
|
|
notes.push(@playingNote()) if @noteGroup.playback.playing?
|
|
|
|
notes.push(@scrubNote()) if @noteGroup.playback.scrub?
|
|
|
|
return notes
|
|
|
|
|
|
|
|
endNotes: ->
|
|
|
|
notes = []
|
|
|
|
# TODO: Want scripts to end where the scrub should go, but this doesn't work
|
|
|
|
# when scripts go somewhere then do something else. Figure out a different technique?
|
|
|
|
# notes.push(@scrubNote(true)) if @noteGroup.playback.scrub?
|
|
|
|
return notes
|
|
|
|
|
|
|
|
skipNotes: ->
|
|
|
|
notes = []
|
|
|
|
notes.push(@playingNote()) if @noteGroup.playback.playing?
|
|
|
|
notes.push(@scrubNote(true)) if @noteGroup.playback.scrub?
|
|
|
|
return notes
|
|
|
|
|
|
|
|
playingNote: ->
|
|
|
|
note =
|
2014-08-27 15:24:03 -04:00
|
|
|
channel: 'level:set-playing'
|
2014-01-03 13:32:13 -05:00
|
|
|
event: {playing: @noteGroup.playback.playing}
|
|
|
|
return note
|
|
|
|
|
|
|
|
scrubNote: (instant=false) ->
|
|
|
|
scrub = @noteGroup.playback.scrub
|
|
|
|
note =
|
2014-08-27 15:24:03 -04:00
|
|
|
channel: 'level:set-time'
|
2014-01-03 13:32:13 -05:00
|
|
|
event:
|
|
|
|
frameOffset: scrub.frameOffset or 2
|
|
|
|
scrubDuration: if instant then 0 else scrub.duration
|
|
|
|
note.event.time = scrub.toTime if scrub.toTime?
|
|
|
|
note.event.ratio = scrub.toRatio if scrub.toRatio?
|
|
|
|
return note
|