2015-10-27 01:20:26 +00:00
$ = jQuery
context = window
logger = context . JK . logger
2015-10-27 14:19:14 +00:00
ASSIGNMENT = context . JK . ASSIGNMENT
VOICE_CHAT = context . JK . VOICE_CHAT
MAX_TRACKS = context . JK . MAX_TRACKS
MAX_OUTPUTS = context . JK . MAX_OUTPUTS
gearUtils = context . JK . GearUtils
2015-12-21 22:42:18 +00:00
AUDIO_UNIT_TYPE_ID = 0
2015-12-23 03:28:19 +00:00
MIDI_TRACK = context . JK . MIDI_TRACK
2015-10-27 01:20:26 +00:00
2015-11-01 12:39:51 +00:00
# ##
QVariantMap scanForPlugins ( ) ;
QVariantMap VSTListVsts ( ) ;
void VSTClearAll ( ) ;
QVariantMap VSTSetTrackAssignment ( const QVariantMap vst , const QString & trackId ) ;
QVariantMap VSTListTrackAssignments ( ) ;
void VSTShowHideGui ( bool show , const QString & trackId ) ;
void VST_ScanForMidiDevices ( ) ;
QVariantMap VST_GetMidiDeviceList ( ) ;
bool VST_EnableMidiForTrack ( const QString & trackId , bool enableMidi , int midiDeviceIndex ) ;
2015-12-21 22:42:18 +00:00
QVariantMap listSearchPaths ( ) ;
void addSearchPath ( int typeId , QString pathToAdd ) ;
void removeSearchPath ( int typeId , QString pathToRemove ) ;
2015-11-01 12:39:51 +00:00
# ##
2015-10-27 01:20:26 +00:00
@ConfigureTracksStore = Reflux . createStore (
{
2015-10-27 14:19:14 +00:00
listenables: ConfigureTracksActions
2015-10-27 01:20:26 +00:00
2015-11-09 21:33:04 +00:00
musicPorts: { inputs: [ ] , outputs: [ ] }
2015-10-30 14:59:50 +00:00
trackNumber: null
editingTrack: null
2015-11-09 21:33:04 +00:00
vstPluginList: { vsts: [ ] }
vstTrackAssignments: { vsts: [ ] }
attachedMidiDevices: { midiDevices: [ ] }
midiTrackAssignments: { tracks: [ ] }
2015-12-21 22:42:18 +00:00
scanPaths: { paths : [ ] }
2015-11-13 21:35:13 +00:00
scanningVsts: false
2015-11-09 21:33:04 +00:00
trackType: ' audio '
2015-12-21 22:42:18 +00:00
hasVst: true
2015-11-09 21:33:04 +00:00
2015-10-27 01:20:26 +00:00
init: () ->
2015-11-09 21:33:04 +00:00
this . listenTo ( context . AppStore , this . onAppInit )
this . listenTo ( context . MixerStore , this . onMixersChanged )
2015-12-27 16:03:56 +00:00
this . listenTo ( context . PlatformStore , this . onPlatformChanged )
2015-10-27 01:20:26 +00:00
onAppInit: (@app) ->
2015-11-09 21:33:04 +00:00
editingTrackValid: () ->
true
onMixersChanged: (mixers) ->
@ loadChannels ( )
@ loadTrackInstruments ( )
@ changed ( )
2015-12-27 16:03:56 +00:00
onPlatformChanged: (platform) ->
@platform = platform
2015-12-23 15:51:43 +00:00
onReset: (loadProfile) ->
2015-10-27 14:19:14 +00:00
logger . debug ( " ConfigureTracksStore:reset " , this )
2015-11-01 12:39:51 +00:00
@trackNumber = null
@editingTrack = null
2015-12-23 15:51:43 +00:00
# you have to load the current profile in order to see track info, which we need
#if loadProfile
#currentProfile = context.jamClient.LastUsedProfileName();
#result = context.jamClient.FTUELoadAudioConfiguration(currentProfile);
2015-10-27 01:20:26 +00:00
@ loadChannels ( )
2015-11-09 21:33:04 +00:00
@ loadTrackInstruments ( )
2015-12-04 21:29:59 +00:00
2015-12-21 22:42:18 +00:00
#if force || context.jamClient.hasVstAssignment()
# @performVstScan()
@ listVsts ( )
@ performMidiScan ( )
@ listPaths ( )
2015-11-09 21:33:04 +00:00
@ changed ( )
2015-10-27 01:20:26 +00:00
2015-12-21 22:42:18 +00:00
onEnableVst: () ->
logger . debug ( " enabling VSTs " )
context . jamClient . VSTLoad ( )
setTimeout ( ( () =>
@ listVsts ( )
@ changed ( )
) , 250 )
2015-10-27 01:20:26 +00:00
onTrySave: () ->
logger . debug ( " ConfigureTracksStore:trySave " )
2015-10-27 14:19:14 +00:00
@ trySave ( )
trySave: () ->
2015-10-27 01:20:26 +00:00
2015-10-30 14:59:50 +00:00
onVstScan: () ->
2015-11-09 21:33:04 +00:00
@ performVstScan ( true )
2015-11-13 21:35:13 +00:00
@ changed ( )
2015-11-09 21:33:04 +00:00
performVstScan: (sendChanged) ->
2015-12-21 22:42:18 +00:00
#@hasVst = gon.global.vst_enabled & context.jamClient.hasVstHost()
2015-11-01 12:39:51 +00:00
logger . debug ( " hasVst " , @ hasVst )
if @ hasVst
2015-10-30 14:59:50 +00:00
logger . debug ( " vstScan starting " )
2015-11-13 21:35:13 +00:00
@scanningVsts = true
2015-12-21 22:42:18 +00:00
@scannedBefore = true
2015-11-09 21:33:04 +00:00
result = context . jamClient . VSTScan ( " window.ConfigureTracksStore.onVstScanComplete " )
2015-10-30 14:59:50 +00:00
2015-11-09 21:33:04 +00:00
onClearVsts: () ->
context . jamClient . VSTClearAll ( )
setTimeout ( ( () =>
@ listVsts ( )
@ changed ( )
) , 250 )
2015-12-21 22:42:18 +00:00
onManageVsts : () ->
logger . debug ( " manage vst selected " )
@ app . layout . showDialog ( ' manage-vsts-dialog ' )
2015-11-09 21:33:04 +00:00
onVstScanComplete: () ->
2015-11-21 21:29:15 +00:00
# XXX must wait a long time to get track assignments after scan/
2015-12-21 22:42:18 +00:00
logger . debug ( " vst scan complete " )
2015-12-04 18:08:40 +00:00
@scanningVsts = false
2015-11-11 11:39:28 +00:00
setTimeout ( ( () =>
@ listVsts ( )
@ changed ( )
2015-12-04 21:29:59 +00:00
) , 100 )
2015-11-21 21:29:15 +00:00
onVstChanged: () ->
2015-12-04 21:29:59 +00:00
setTimeout ( )
2015-11-21 21:29:15 +00:00
logger . debug ( " vst changed " )
setTimeout ( ( () =>
@ listVsts ( )
@ changed ( )
2015-11-11 11:39:28 +00:00
) , 0 )
2015-11-09 21:33:04 +00:00
2015-12-21 22:42:18 +00:00
listPaths: () ->
@scanPaths = context . jamClient . VSTListSearchPaths ( )
2015-12-27 16:03:56 +00:00
# this comes from the JUCE library behavior
vstTypeId: () ->
if @ platform . isWindows
logger . debug ( " vstTypeId is windows " )
0
else
logger . debug ( " vstTypeId is not-windows " )
1
2015-12-21 22:42:18 +00:00
onAddSearchPath: (path) ->
logger . debug ( " VSTAddSearchPath: " + path )
2015-12-27 16:11:22 +00:00
context . jamClient . VSTAddSearchPath ( @ vstTypeId ( ) , path )
2015-12-21 22:42:18 +00:00
@ listPaths ( )
@ changed ( )
onRemoveSearchPath: (path) ->
logger . debug ( " VSTRemoveSearchPath: " + path )
2015-12-27 16:11:22 +00:00
context . jamClient . VSTRemoveSearchPath ( @ vstTypeId ( ) , path )
2015-12-21 22:42:18 +00:00
@ listPaths ( )
@ changed ( )
onSelectVSTDirectory : () ->
context . jamClient . ShowSelectVSTScanDialog ( " window.ConfigureTracksStore.onVSTPathSelected " )
onVSTPathSelected: (result) ->
success = result . success
path = result . vstPath
if success
logger . debug ( " vst path selected! " , path )
@ onAddSearchPath ( path )
else
logger . debug ( " nothing selected " )
2015-11-09 21:33:04 +00:00
listVsts: () ->
2015-11-01 12:39:51 +00:00
2015-11-09 21:33:04 +00:00
@vstPluginList = context . jamClient . VSTListVsts ( )
@vstTrackAssignments = context . jamClient . VSTListTrackAssignments ( )
2015-10-30 14:59:50 +00:00
2015-11-01 12:39:51 +00:00
onMidiScan: () ->
2015-11-09 21:33:04 +00:00
@ performMidiScan ( )
@ changed ( )
2015-11-01 12:39:51 +00:00
2015-11-09 21:33:04 +00:00
performMidiScan: () ->
2015-11-13 20:00:37 +00:00
if ! @ hasVst
logger . debug ( " performMidiScan skipped due to no VST " )
return
2015-11-09 21:33:04 +00:00
context . jamClient . VST_ScanForMidiDevices ( ) ;
@attachedMidiDevices = context . jamClient . VST_GetMidiDeviceList ( ) ;
2015-11-01 12:39:51 +00:00
2015-11-09 21:33:04 +00:00
# trackNumber is 0-based, and optional
onShowVstSettings: (trackNumber) ->
2015-11-13 20:00:37 +00:00
if ! @ hasVst
logger . debug ( " onShowVstSettings skipped due to no VST " )
return
2015-11-09 21:33:04 +00:00
if ! trackNumber ?
trackNumber = @ trackNumber - 1 if @ trackNumber ?
logger . debug ( " show VST GUI " , trackNumber )
context . jamClient . VSTShowHideGui ( true , trackNumber ) if trackNumber ?
2015-10-30 14:59:50 +00:00
2015-12-23 03:28:19 +00:00
findMidiTrack: () ->
midi = null
for assignment in @ trackAssignments . inputs . assigned
if assignment . assignment == MIDI_TRACK
midi = assignment
break
midi
removeMidiTrack: () ->
removeIndex = - 1
for assignment , i in @ trackAssignments . inputs . assigned
if assignment . assignment == MIDI_TRACK
# remove this
removeIndex = i
break
if removeIndex > - 1
@ trackAssignments . inputs . assigned . splice ( removeIndex , 1 )
defaultTrackInstrument: (trackNumber) ->
clientInstrument = context . jamClient . TrackGetInstrument ( trackNumber )
if clientInstrument == 0
logger . debug ( " defaulting midi instrument for assignment #{ trackNumber } " )
# ensure that we always have an instrument set (50 = electric guitar
context . jamClient . TrackSetInstrument ( trackNumber , 50 )
clientInstrument = 50
context . JK . client_to_server_instrument_map [ clientInstrument ] ;
# the backend does not have a consistent way of tracking assigned inputs for midi.
# let's make it seem consistent
injectMidiToTrackAssignments: () ->
if @ vstTrackAssignments ?
for vst in @ vstTrackAssignments . vsts
if vst . track == MIDI_TRACK - 1
if vst . midiDeviceIndex > - 1
# first see if midi is already there
midi = @ findMidiTrack ( )
if ! midi ?
instrument = @ defaultTrackInstrument ( MIDI_TRACK )
midi = [ { assignment: MIDI_TRACK } ]
midi.instrument_id = instrument ? . server_id
midi.assignment = MIDI_TRACK
@ trackAssignments . inputs . assigned . push ( midi )
else
@ removeMidiTrack ( )
2015-10-27 01:20:26 +00:00
changed: () ->
2015-12-23 03:28:19 +00:00
@ injectMidiToTrackAssignments ( )
2015-11-09 21:33:04 +00:00
@editingTrack = [ ]
@editingTrack.assignment = @ trackNumber
if @ trackNumber ?
for inputsForTrack in @ trackAssignments . inputs . assigned
if inputsForTrack . assignment == @ trackNumber
@editingTrack = inputsForTrack
break
2015-11-13 20:00:37 +00:00
# slap on vst, if any, from list of vst assignments
for vst in @ vstTrackAssignments . vsts
if vst . track == @ editingTrack . assignment - 1
@editingTrack.vst = vst
@editingTrack.midiDeviceIndex = vst . midiDeviceIndex
break
2015-12-04 18:08:40 +00:00
for inputsForTrack in @ trackAssignments . inputs . assigned
if vst . track == inputsForTrack . assignment - 1
inputsForTrack.vst = vst
2015-11-13 20:00:37 +00:00
if @ editingTrack . vst ?
logger . debug ( " current track has a VST assigned: " + @ editingTrack . vst . file )
2015-11-09 21:33:04 +00:00
2015-12-04 21:29:59 +00:00
2015-12-21 22:42:18 +00:00
unscanned = ! @ scannedBefore && @ vstPluginList . vsts . length <= 1
2015-12-23 03:28:19 +00:00
2015-11-09 21:33:04 +00:00
@item = {
2015-12-21 22:42:18 +00:00
unscanned: unscanned ,
2015-11-09 21:33:04 +00:00
musicPorts: @ musicPorts ,
trackAssignments: @ trackAssignments ,
trackNumber: @ trackNumber ,
editingTrack: @ editingTrack ,
vstPluginList: @ vstPluginList ,
vstTrackAssignments: @ vstTrackAssignments ,
attachedMidiDevices: @ attachedMidiDevices ,
nextTrackNumber: @ nextTrackNumber ,
newTrack: @ newTrack ,
midiTrackAssignments: @ midiTrackAssignments ,
2015-11-13 21:35:13 +00:00
scanningVsts: @ scanningVsts ,
2015-12-21 22:42:18 +00:00
trackType: @ trackType ,
scanPaths: @ scanPaths
2015-11-09 21:33:04 +00:00
}
2015-10-27 14:19:14 +00:00
@ trigger ( @ item )
2015-10-27 01:20:26 +00:00
loadChannels: (forceInputsToUnassign, inputChannelFilter) ->
# inputChannelFilter is an optional argument that is used by the Gear Wizard.
# basically, if an input channel isn't in there, it's not going to be displayed
@musicPorts = context . jamClient . FTUEGetChannels ( )
2015-10-30 14:59:50 +00:00
# let's populate this bad boy
2015-11-09 21:33:04 +00:00
@trackAssignments = { inputs: { unassigned: [ ] , assigned: [ ] , chat: [ ] } , outputs: { unassigned: [ ] , assigned: [ ] } }
nextTrackNumber = 0
2015-10-30 14:59:50 +00:00
2015-10-27 14:19:14 +00:00
for input in @ musicPorts . inputs
2015-10-30 14:59:50 +00:00
if input . assignment == ASSIGNMENT . UNASSIGNED
2015-10-27 14:19:14 +00:00
@ trackAssignments . inputs . unassigned . push ( input )
else if input . assignment == ASSIGNMENT . CHAT
@ trackAssignments . inputs . chat . push ( input )
else
2015-11-09 21:33:04 +00:00
nextTrackNumber = input . assignment if input . assignment > nextTrackNumber
2015-10-27 14:19:14 +00:00
# make sure this assignment isn't already preset (you can have multiple inputs per 'track slot')
found = false
for assigned in @ trackAssignments . inputs . assigned
2015-10-30 14:59:50 +00:00
if assigned . assignment == input . assignment
2015-10-27 14:19:14 +00:00
assigned . push ( input )
found = true
2015-10-27 01:20:26 +00:00
2015-10-27 14:19:14 +00:00
if ! found
2015-10-30 14:59:50 +00:00
initial = [ input ]
initial.assignment = input . assignment # store the assignment on the array itself, so we don't have to check inside the array for an input's assignment (which will all be the same)
@ trackAssignments . inputs . assigned . push ( initial )
for output in @ musicPorts . outputs
2015-10-27 14:19:14 +00:00
if output . assignment == ASSIGNMENT . OUTPUT
@ trackAssignments . outputs . assigned . push ( output )
else
@ trackAssignments . outputs . unassigned . push ( output )
2015-10-27 01:20:26 +00:00
2015-11-09 21:33:04 +00:00
@nextTrackNumber = nextTrackNumber + 1
2015-11-01 12:39:51 +00:00
2015-10-30 14:59:50 +00:00
loadTrackInstruments: (forceInputsToUnassign) ->
for inputsForTrack in @ trackAssignments . inputs . assigned
2015-11-13 20:00:37 +00:00
2015-11-09 21:33:04 +00:00
clientInstrument = context . jamClient . TrackGetInstrument ( inputsForTrack . assignment )
2015-10-30 14:59:50 +00:00
2015-11-13 20:00:37 +00:00
if clientInstrument == 0
logger . debug ( " defaulting track instrument for assignment #{ @ trackNumber } " )
# ensure that we always have an instrument set (50 = electric guitar
context . jamClient . TrackSetInstrument ( inputsForTrack . assignment , 50 )
clientInstrument = 50
2015-10-30 14:59:50 +00:00
instrument = context . JK . client_to_server_instrument_map [ clientInstrument ] ;
inputsForTrack.instrument_id = instrument ? . server_id
2015-11-09 21:33:04 +00:00
onAssociateInputsWithTrack: (inputId1, inputId2) ->
return unless @ trackNumber ?
for inputs in @ editingTrack
context . jamClient . TrackSetAssignment ( inputs . id , true , ASSIGNMENT . UNASSIGNED )
if inputId1 ?
logger . debug ( " setting input1 #{ inputId1 } to #{ @ trackNumber } " )
context . jamClient . TrackSetAssignment ( inputId1 , true , @ trackNumber )
if inputId2 ?
logger . debug ( " setting input2 #{ inputId2 } to #{ @ trackNumber } " )
context . jamClient . TrackSetAssignment ( inputId2 , true , @ trackNumber )
result = context . jamClient . TrackSaveAssignments ( ) ;
if ( ! result || result . length == 0 )
else
context . JK . Banner . showAlert ( ' Unable to save assignments. ' + result ) ;
onAssociateInstrumentWithTrack: (instrumentId) ->
return unless @ trackNumber ?
logger . debug ( " context.jamClient.TrackSetInstrument(trackNumber, track.instrument_id) " , @ trackNumber , instrumentId )
2015-12-23 03:28:19 +00:00
clientInstrumentId = null
2015-11-09 21:33:04 +00:00
if instrumentId != null && instrumentId != ' '
2015-12-23 03:28:19 +00:00
clientInstrumentId = context . JK . instrument_id_to_instrument [ instrumentId ] . client_id
2015-11-09 21:33:04 +00:00
else
2015-12-23 03:28:19 +00:00
clientInstrumentId = 0
context . jamClient . TrackSetInstrument ( @ trackNumber , clientInstrumentId )
if @ trackNumber == MIDI_TRACK
logger . debug ( " checking midi track for track instrument synchronization " )
# keep artificial midi track in sync
midi = @ findMidiTrack ( )
if midi ?
logger . debug ( " synced midi track with #{ instrumentId } " )
midi.instrument_id = instrumentId
2015-11-09 21:33:04 +00:00
if ( ! result || result . length == 0 )
else
context . JK . Banner . showAlert ( ' Unable to save assignments. ' + result ) ;
result = context . jamClient . TrackSaveAssignments ( )
if ( ! result || result . length == 0 )
else
context . JK . Banner . showAlert ( ' Unable to save assignments. ' + result ) ;
onAssociateVSTWithTrack: (vst) ->
2015-11-13 20:00:37 +00:00
if ! @ hasVst
logger . debug ( " onAssociateVSTWithTrack skipped due to no VST " )
return
2015-11-09 21:33:04 +00:00
if vst ?
2015-12-04 21:29:59 +00:00
logger . debug ( " associating track: #{ @ trackNumber - 1 } with VST: #{ vst . file } " )
2015-11-09 21:33:04 +00:00
found = null
for knownVst in @ vstPluginList . vsts
if knownVst . file == vst . file
found = knownVst
break
if found ?
context . jamClient . VSTSetTrackAssignment ( found , @ trackNumber - 1 )
else
logger . error ( " unable to locate vst for #{ vst } " )
else
logger . debug ( " unassociated track: #{ @ trackNumber } with VST " )
# no way to unset VST assignment yet
setTimeout ( ( () => (
@ listVsts ( )
@ changed ( )
) ) , 250 )
onCancelEdit: () ->
if @ newTrack
for input in @ editingTrack
context . jamClient . TrackSetAssignment ( input . id , true , ASSIGNMENT . UNASSIGNED )
result = context . jamClient . TrackSaveAssignments ( )
if ( ! result || result . length == 0 )
else
context . JK . Banner . showAlert ( ' Unable to save assignments. ' + result ) ;
else
logger . error ( " unable to process cancel for an existing track " )
onDeleteTrack: (assignment) ->
2015-12-23 03:28:19 +00:00
logger . debug ( " deleting track with assignment #{ assignment } " )
if assignment != MIDI_TRACK
track = null
for inputsForTrack in @ trackAssignments . inputs . assigned
if inputsForTrack . assignment == assignment
track = inputsForTrack
break
2015-11-09 21:33:04 +00:00
2015-12-23 03:28:19 +00:00
if track ?
for input in inputsForTrack
context . jamClient . TrackSetAssignment ( input . id , true , ASSIGNMENT . UNASSIGNED )
result = context . jamClient . TrackSaveAssignments ( )
2015-11-09 21:33:04 +00:00
2015-12-23 03:28:19 +00:00
if ( ! result || result . length == 0 )
2015-11-09 21:33:04 +00:00
2015-12-23 03:28:19 +00:00
else
context . JK . Banner . showAlert ( ' Unable to save assignments. ' + result ) ;
else
logger . error ( " unable to find track to delete " )
2015-11-09 21:33:04 +00:00
else
2015-12-23 03:28:19 +00:00
logger . debug ( " deleting midi track " )
@ onAssociateMIDIWithTrack ( null )
@ removeMidiTrack ( )
@ changed ( )
2015-11-09 21:33:04 +00:00
2015-12-23 03:28:19 +00:00
onShowAddNewTrack: (type) ->
2015-11-09 21:33:04 +00:00
# check if we have what we need... namely, free ports
2015-12-23 03:28:19 +00:00
if type == ' audio '
if @ trackAssignments . inputs . unassigned . length == 0
context . JK . Banner . showAlert ( ' You have no more unassigned input ports.<br/><br/>You can free some up by editing an AUDIO track. ' )
return
@ openLiveTrackDialog ( @ nextTrackNumber )
else
if @ findMidiTrack ( ) ?
context . JK . Banner . showAlert ( ' You have only one MIDI input. ' )
return
@ openLiveTrackDialog ( MIDI_TRACK )
2015-11-09 21:33:04 +00:00
onShowEditTrack: (trackNumber) ->
@ openLiveTrackDialog ( trackNumber )
2015-10-30 14:59:50 +00:00
openLiveTrackDialog: (trackNumber) ->
@trackNumber = trackNumber
2015-12-23 15:51:43 +00:00
logger . debug ( " opening live track dialog for track #{ trackNumber } " , @ trackAssignments . inputs . assigned )
2015-10-30 14:59:50 +00:00
2015-11-09 21:33:04 +00:00
@newTrack = true
2015-10-30 14:59:50 +00:00
for inputsForTrack in @ trackAssignments . inputs . assigned
2015-11-09 21:33:04 +00:00
logger . debug ( " inputsForTrack.assignment @trackNumber " , inputsForTrack . assignment , @ trackNumber )
if inputsForTrack . assignment == @ trackNumber
@newTrack = false
2015-10-30 14:59:50 +00:00
break
2015-12-23 03:28:19 +00:00
if @ trackNumber == MIDI_TRACK
@trackType = ' midi '
2015-11-09 21:33:04 +00:00
else
2015-12-23 03:28:19 +00:00
@trackType = ' audio '
2015-11-09 21:33:04 +00:00
if @ newTrack
2015-11-13 20:00:37 +00:00
assignment = context . jamClient . TrackGetInstrument ( @ trackNumber )
if assignment == 0
logger . debug ( " defaulting track instrument for assignment #{ @ trackNumber } " )
# ensure that we always have an instrument set (50 = electric guitar
context . jamClient . TrackSetInstrument ( @ trackNumber , 50 )
2015-11-09 21:33:04 +00:00
2015-12-21 22:42:18 +00:00
#@performVstScan()
2015-12-04 21:29:59 +00:00
@ performMidiScan ( )
2015-10-30 14:59:50 +00:00
@ changed ( )
@ app . layout . showDialog ( ' configure-live-tracks-dialog ' )
2015-11-09 21:33:04 +00:00
onDesiredTrackType: (trackType) ->
@trackType = trackType
2015-12-04 21:29:59 +00:00
if @ trackType == ' midi '
2015-12-23 03:28:19 +00:00
@trackNumber = MIDI_TRACK
2015-11-09 21:33:04 +00:00
@ changed ( )
onUpdateOutputs: (outputId1, outputId2) ->
context . jamClient . TrackSetAssignment ( outputId1 , true , ASSIGNMENT . OUTPUT ) ;
context . jamClient . TrackSetAssignment ( outputId2 , true , ASSIGNMENT . OUTPUT ) ;
result = context . jamClient . TrackSaveAssignments ( ) ;
if ( ! result || result . length == 0 )
else
context . JK . Banner . showAlert ( ' Unable to save assignments. ' + result ) ;
onShowEditOutputs: () ->
@ app . layout . showDialog ( ' configure-outputs-dialog ' )
onAssociateMIDIWithTrack: (midiInterface) ->
2015-12-23 03:28:19 +00:00
@trackNumber = MIDI_TRACK
2015-12-04 21:29:59 +00:00
2015-11-09 21:33:04 +00:00
if ! midiInterface ? || midiInterface == ' '
logger . debug ( " disabling midiInterface: #{ midiInterface } , track: #{ @ trackNumber - 1 } " )
context . jamClient . VST_EnableMidiForTrack ( @ trackNumber - 1 , false , 0 )
else
logger . debug ( " enabling midiInterface: #{ midiInterface } , track: #{ @ trackNumber - 1 } " )
context . jamClient . VST_EnableMidiForTrack ( @ trackNumber - 1 , true , midiInterface )
setTimeout ( ( () => (
@ listVsts ( )
@ changed ( )
) ) , 250 )
2015-10-27 01:20:26 +00:00
}
)