working jamtrack config
This commit is contained in:
parent
1cf051da0c
commit
708d370013
|
|
@ -1949,7 +1949,7 @@ module JamRuby
|
|||
end
|
||||
|
||||
def can_buy_test_drive?
|
||||
lesson_purchases.where('lesson_package_type_id in (?)', LessonPackageType.test_drive_package_ids).where('created_at > ?', Rails.application.config.test_drive_wait_period_year.years.ago).count == 0
|
||||
lesson_purchases.where('lesson_package_type_id in (?)', LessonPackageType.test_drive_package_ids).where('created_at > ?', APP_CONFIG.test_drive_wait_period_year.years.ago).count == 0
|
||||
end
|
||||
|
||||
def lessons_with_teacher(teacher)
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
var $btnCancel = null;
|
||||
var $btnAddNewGear = null;
|
||||
var $btnUpdateTrackSettings = null;
|
||||
var $btnCloseJamBlasterConfig = null;
|
||||
|
||||
var configureTracksHelper = null;
|
||||
var voiceChatHelper = null;
|
||||
|
|
@ -244,7 +245,10 @@
|
|||
}
|
||||
|
||||
function afterShow() {
|
||||
sessionUtils.SessionPageEnter();
|
||||
|
||||
if (!window.JamBlasterStore.pairedJamBlaster) {
|
||||
sessionUtils.SessionPageEnter();
|
||||
}
|
||||
|
||||
window.JamBlasterActions.resyncBonjour()
|
||||
|
||||
|
|
@ -258,7 +262,9 @@
|
|||
|
||||
function afterHide() {
|
||||
voiceChatHelper.beforeHide();
|
||||
sessionUtils.SessionPageLeave();
|
||||
if(!window.JamBlasterStore.pairedJamBlaster) {
|
||||
sessionUtils.SessionPageLeave();
|
||||
}
|
||||
}
|
||||
|
||||
function initialize() {
|
||||
|
|
|
|||
|
|
@ -3,90 +3,102 @@ JamBlasterActions = @JamBlasterActions
|
|||
|
||||
@ConfigureTracksDialogContents = React.createClass({
|
||||
|
||||
mixins: [Reflux.listenTo(@AppStore, "onAppInit"), Reflux.listenTo(@JamBlasterStore, "onJamBlasterChanged")]
|
||||
mixins: [Reflux.listenTo(@AppStore, "onAppInit"), Reflux.listenTo(@JamBlasterStore, "onJamBlasterChanged")]
|
||||
|
||||
|
||||
onAppInit: (@app) ->
|
||||
onAppInit: (@app) ->
|
||||
|
||||
onJamBlasterChanged: (jamblasterState) ->
|
||||
@setState(jamblasterState)
|
||||
onJamBlasterChanged: (jamblasterState) ->
|
||||
@setState(jamblasterState)
|
||||
|
||||
getInitialState: () ->
|
||||
{
|
||||
timer: null,
|
||||
pairing: false,
|
||||
pairStart: null,
|
||||
allJamBlasters: [],
|
||||
pairingTimeout: false,
|
||||
paired: false,
|
||||
userJamBlasters: [],
|
||||
localJamBlasters: []
|
||||
}
|
||||
getInitialState: () ->
|
||||
{
|
||||
timer: null,
|
||||
pairing: false,
|
||||
pairStart: null,
|
||||
allJamBlasters: [],
|
||||
pairingTimeout: false,
|
||||
paired: false,
|
||||
userJamBlasters: [],
|
||||
localJamBlasters: []
|
||||
}
|
||||
|
||||
closeDialog: (e) ->
|
||||
e.preventDefault()
|
||||
if !this.state.waitingOnTracks
|
||||
@app.layout.closeDialog('configure-tracks')
|
||||
|
||||
|
||||
render: () ->
|
||||
pairedJamBlaster = this.state.pairedJamBlaster
|
||||
hasPairedJamBlaster = pairedJamBlaster?
|
||||
render: () ->
|
||||
pairedJamBlaster = this.state.pairedJamBlaster
|
||||
hasPairedJamBlaster = pairedJamBlaster?
|
||||
|
||||
if hasPairedJamBlaster
|
||||
`<JamBlasterTrackConfig />`
|
||||
else
|
||||
`<div>
|
||||
<div className="dialog-tabs">
|
||||
<a className="selected tab-configure-audio">Inputs & Outputs</a>
|
||||
<a className="tab-configure-voice">Voice Chat</a>
|
||||
</div>
|
||||
<div className="instructions">
|
||||
if hasPairedJamBlaster
|
||||
`<div>
|
||||
<JamBlasterTrackConfig />
|
||||
|
||||
<div className="buttons">
|
||||
<a className="btn-close-jamblaster-config button-orange" disabled={this.state.waitingOnTracks}onClick={this.closeDialog}>CLOSE</a>
|
||||
</div>
|
||||
</div>`
|
||||
else
|
||||
`<div>
|
||||
<div className="dialog-tabs">
|
||||
<a className="selected tab-configure-audio">Inputs & Outputs</a>
|
||||
<a className="tab-configure-voice">Voice Chat</a>
|
||||
</div>
|
||||
<div className="instructions">
|
||||
<span>Choose your audio device. Drag and drop to assign input ports to tracks, and specify the instrument
|
||||
for each track. Drag and drop to assign a pair of output ports for session stereo audio monitoring.</span>
|
||||
</div>
|
||||
<div className="clearall"></div>
|
||||
<div className="tab no-selection-range" data-tab-id="music-audio">
|
||||
<ConfigureTracks />
|
||||
|
||||
<div className="clearall"></div>
|
||||
</div>
|
||||
<div className="tab" data-tab-id="voice-chat">
|
||||
<form className="select-voice-chat-option section voice">
|
||||
<div className="sub-header">Select Voice Chat Option</div>
|
||||
<div className="voicechat-option reuse-audio-input">
|
||||
<input type="radio" name="voicechat" defaultChecked="checked"/>
|
||||
|
||||
<h3>Use Music Microphone</h3>
|
||||
|
||||
<p>I am already using a microphone to capture my vocal or instrumental music, so I can talk with other
|
||||
musicians using that microphone</p>
|
||||
</div>
|
||||
<div className="voicechat-option use-chat-input">
|
||||
<input type="radio" name="voicechat"/>
|
||||
|
||||
<h3>Use Chat Microphone</h3>
|
||||
|
||||
<p>I am not using a microphone for acoustic instruments or vocals, so use the input selected to the right
|
||||
for voice chat during my sessions</p>
|
||||
</div>
|
||||
</form>
|
||||
<div className="clearall"></div>
|
||||
<div className="select-voice-chat">
|
||||
<div className="sub-header">Voice Chat Input</div>
|
||||
<div className="ftue-box chat-inputs"></div>
|
||||
<div className="vu-meter">
|
||||
<div className="ftue-controls">
|
||||
<div className="ftue-vu-left voice-chat-vu-left"></div>
|
||||
<div className="ftue-fader chat-fader"></div>
|
||||
<div className="gain-label">GAIN</div>
|
||||
<div className="ftue-vu-right voice-chat-vu-right"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="clearall"></div>
|
||||
</div>
|
||||
<div className="tab no-selection-range" data-tab-id="music-audio">
|
||||
<ConfigureTracks />
|
||||
|
||||
<div className="buttons">
|
||||
<a className="btn-add-new-audio-gear button-grey">ADD NEW AUDIO GEAR</a>
|
||||
<a className="button-grey btn-cancel">CANCEL</a>
|
||||
<a className="button-orange btn-update-settings">SAVE SETTINGS</a>
|
||||
</div>
|
||||
</div>`
|
||||
<div className="clearall"></div>
|
||||
</div>
|
||||
<div className="tab" data-tab-id="voice-chat">
|
||||
<form className="select-voice-chat-option section voice">
|
||||
<div className="sub-header">Select Voice Chat Option</div>
|
||||
<div className="voicechat-option reuse-audio-input">
|
||||
<input type="radio" name="voicechat" defaultChecked="checked"/>
|
||||
|
||||
<h3>Use Music Microphone</h3>
|
||||
|
||||
<p>I am already using a microphone to capture my vocal or instrumental music, so I can talk with other
|
||||
musicians using that microphone</p>
|
||||
</div>
|
||||
<div className="voicechat-option use-chat-input">
|
||||
<input type="radio" name="voicechat"/>
|
||||
|
||||
<h3>Use Chat Microphone</h3>
|
||||
|
||||
<p>I am not using a microphone for acoustic instruments or vocals, so use the input selected to the
|
||||
right
|
||||
for voice chat during my sessions</p>
|
||||
</div>
|
||||
</form>
|
||||
<div className="clearall"></div>
|
||||
<div className="select-voice-chat">
|
||||
<div className="sub-header">Voice Chat Input</div>
|
||||
<div className="ftue-box chat-inputs"></div>
|
||||
<div className="vu-meter">
|
||||
<div className="ftue-controls">
|
||||
<div className="ftue-vu-left voice-chat-vu-left"></div>
|
||||
<div className="ftue-fader chat-fader"></div>
|
||||
<div className="gain-label">GAIN</div>
|
||||
<div className="ftue-vu-right voice-chat-vu-right"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="clearall"></div>
|
||||
</div>
|
||||
|
||||
<div className="buttons">
|
||||
<a className="btn-add-new-audio-gear button-grey">ADD NEW AUDIO GEAR</a>
|
||||
<a className="button-grey btn-cancel">CANCEL</a>
|
||||
<a className="button-orange btn-update-settings">SAVE SETTINGS</a>
|
||||
</div>
|
||||
</div>`
|
||||
}
|
||||
)
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ JamBlasterActions = @JamBlasterActions
|
|||
@setState(jamblasterState)
|
||||
|
||||
componentDidMount: () ->
|
||||
@checkboxes = [{selector: 'input.dhcp', stateKey: 'dhcp'}]
|
||||
@checkboxes = [{selector: 'input.dhcp', stateKey: 'userdhcp'}]
|
||||
@root = $(@getDOMNode())
|
||||
@iCheckify()
|
||||
|
||||
|
|
@ -279,14 +279,17 @@ JamBlasterActions = @JamBlasterActions
|
|||
onSaveNetworkSettings: (e) ->
|
||||
e.preventDefault()
|
||||
|
||||
JamBlasterActions.saveNetworkSettings({
|
||||
settings = {
|
||||
dhcp: this.state.userdhcp,
|
||||
addr: this.state.useraddr,
|
||||
gateway: this.state.usergateway,
|
||||
subnet: this.state.usersubnet,
|
||||
dns1: this.state.userdns1,
|
||||
dns2: this.state.userdns2
|
||||
})
|
||||
}
|
||||
|
||||
logger.debug("saving network settings", settings)
|
||||
JamBlasterActions.saveNetworkSettings(settings)
|
||||
@networkStale = true
|
||||
|
||||
usb: () ->
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ JamBlasterActions = @JamBlasterActions
|
|||
|
||||
value = $(e.target).val()
|
||||
name = $(e.target).attr('name')
|
||||
console.log("checkbox changed: ", value)
|
||||
console.log("checkbox changed: ", checked, value)
|
||||
|
||||
if $(e.target).attr('type') == 'checkbox'
|
||||
state = {}
|
||||
|
|
@ -70,7 +70,7 @@ JamBlasterActions = @JamBlasterActions
|
|||
JamBlasterActions.updateAudio(name, value)
|
||||
|
||||
instrumentChanged: (key, e) ->
|
||||
value = $(e.target).val()
|
||||
value = $(e.target).val()
|
||||
state = {}
|
||||
state[key] = value
|
||||
@setState(state)
|
||||
|
|
@ -97,6 +97,7 @@ JamBlasterActions = @JamBlasterActions
|
|||
hasPairedJamBlaster = pairedJamBlaster?
|
||||
masterDisabled = this.props.disabled
|
||||
|
||||
|
||||
if !hasPairedJamBlaster
|
||||
return `<div className="jamblaster-track-config">
|
||||
You have no paired JamBlaster currently. If you've paired the JamBlaster in the past, be sure it's plugged in
|
||||
|
|
@ -108,7 +109,7 @@ JamBlasterActions = @JamBlasterActions
|
|||
for instrument in context.JK.server_to_client_instrument_alpha
|
||||
instruments.push(`<option key={instrument.server_id} value={instrument.server_id}>{instrument.display}</option>`)
|
||||
|
||||
console.log("JAMBLASTERTRACKCONFIG", pairedJamBlaster )
|
||||
#console.log("JAMBLASTERTRACKCONFIG", pairedJamBlaster)
|
||||
|
||||
combined = @state.combined
|
||||
track1Active = @state.track1Active
|
||||
|
|
@ -118,80 +119,98 @@ JamBlasterActions = @JamBlasterActions
|
|||
track1Phantom = @state.track1Phantom
|
||||
track2Phantom = @state.track2Phantom
|
||||
micActive = @state.micActive
|
||||
track1Instrument = context.JK.convertClientInstrumentToServer(@state.track1Instrument)
|
||||
track2Instrument = context.JK.convertClientInstrumentToServer(@state.track2Instrument)
|
||||
track1Instrument = @state.track1Instrument #context.JK.convertClientInstrumentToServer(@state.track1Instrument)
|
||||
track2Instrument = @state.track2Instrument #context.JK.convertClientInstrumentToServer(@state.track2Instrument)
|
||||
|
||||
console.log("track1Active", track1Active)
|
||||
if this.state.waitingOnTracks
|
||||
contents = `<div className="waiting-on-tracks">
|
||||
<div className="spinner spinner-large">
|
||||
</div>
|
||||
<br/>
|
||||
<p>Please wait as the JamBlaster reconfigures it's settings.</p>
|
||||
</div>`
|
||||
else
|
||||
contents = `<div>
|
||||
<div className="input-1">
|
||||
<h3>Input 1</h3>
|
||||
|
||||
<div className="input-type-section">
|
||||
<h4>Type</h4>
|
||||
|
||||
<div className="input-type field">
|
||||
<div className="input-type-choice">
|
||||
<input className="input-type inputTypeTrack1" type="radio" name="inputTypeTrack1" readOnly={true}
|
||||
value="line" disabled={masterDisabled}
|
||||
defaultChecked={inputTypeTrack1}/><label>Line</label>
|
||||
</div>
|
||||
<div className="input-type-choice">
|
||||
<input className="input-type inputTypeTrack1" type="radio" name="inputTypeTrack1" readOnly={true}
|
||||
value="instrument" disabled={masterDisabled}
|
||||
defaultChecked={!inputTypeTrack1}/><label>Instrument</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="phantom-section">
|
||||
<h4>Power</h4>
|
||||
|
||||
<div className="phantom field">
|
||||
<input className="phantom track1Phantom" name="track1Phantom" type="checkbox" disabled={masterDisabled}
|
||||
value={track1Phantom}/><label>Phantom power</label>
|
||||
</div>
|
||||
</div>
|
||||
<div className="instrument-section">
|
||||
<h4>Instrument</h4>
|
||||
<select name="track1Instrument" value={track1Instrument} disabled={masterDisabled}
|
||||
onChange={this.instrumentChanged.bind(this, 'track1Instrument')}>
|
||||
{instruments}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div className="input-2">
|
||||
<h3>Input 2</h3>
|
||||
|
||||
<div className="input-type-section">
|
||||
<h4>Type</h4>
|
||||
|
||||
<div className="input-type field">
|
||||
<div className="input-type-choice">
|
||||
<input className="input-type inputTypeTrack2" type="radio" name="inputTypeTrack2" readOnly={true}
|
||||
value="line" disabled={masterDisabled || combined}
|
||||
defaultChecked={inputTypeTrack2}/><label>Line</label>
|
||||
</div>
|
||||
<div className="input-type-choice">
|
||||
<input className="input-type inputTypeTrack2" type="radio" name="inputTypeTrack2" readOnly={true}
|
||||
value="instrument" disabled={masterDisabled || combined}
|
||||
defaultChecked={!inputTypeTrack2}/><label>Instrument</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="phantom-section">
|
||||
<h4>Power</h4>
|
||||
|
||||
<div className="phantom field">
|
||||
<input className="phantom track2Phantom" name="track2Phantom" type="checkbox" disabled={masterDisabled || combined}
|
||||
value={track2Phantom}/><label>Phantom power</label>
|
||||
</div>
|
||||
</div>
|
||||
<div className="instrument-section">
|
||||
<h4>Instrument</h4>
|
||||
<select name="track2Instrument" value={track2Instrument} disabled={masterDisabled || combined}
|
||||
onChange={this.instrumentChanged.bind(this, 'track2Instrument')}>
|
||||
{instruments}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<br className="clearall"/>
|
||||
|
||||
<div className="combined-option">
|
||||
<input className="combined" type="checkbox" name="combined" value={combined}
|
||||
disabled={masterDisabled}></input><label>Combined inputs 1 & 2 into a single stereo track</label>
|
||||
</div>
|
||||
</div>`
|
||||
`<div className="jamblaster-track-config">
|
||||
<div className="input-1">
|
||||
<h3>Input 1</h3>
|
||||
<div className="input-type-section">
|
||||
<h4>Type</h4>
|
||||
|
||||
<div className="input-type field">
|
||||
<div className="input-type-choice">
|
||||
<input className="input-type inputTypeTrack1" type="radio" name="inputTypeTrack1" readOnly={true} value="line" disabled={masterDisabled}
|
||||
defaultChecked={inputTypeTrack1}/><label>Line</label>
|
||||
</div>
|
||||
<div className="input-type-choice">
|
||||
<input className="input-type inputTypeTrack1" type="radio" name="inputTypeTrack1" readOnly={true} value="instrument" disabled={masterDisabled}
|
||||
defaultChecked={!inputTypeTrack1}/><label>Instrument</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="phantom-section">
|
||||
<h4>Power</h4>
|
||||
|
||||
<div className="phantom field">
|
||||
<input className="phantom track1Phantom" name="track1Phantom" type="checkbox" disabled={masterDisabled}
|
||||
value={track1Phantom}/><label>Phantom power</label>
|
||||
</div>
|
||||
</div>
|
||||
<div className="instrument-section">
|
||||
<h4>Instrument</h4>
|
||||
<select name="track1Instrument" value={track1Instrument} disabled={masterDisabled} onChange={this.instrumentChanged.bind(this, 'track1Instrument')} >
|
||||
{instruments}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div className="input-2">
|
||||
<h3>Input 2</h3>
|
||||
|
||||
<div className="input-type-section">
|
||||
<h4>Type</h4>
|
||||
|
||||
<div className="input-type field">
|
||||
<div className="input-type-choice">
|
||||
<input className="input-type inputTypeTrack2" type="radio" name="inputTypeTrack2" readOnly={true} value="line" disabled={masterDisabled}
|
||||
defaultChecked={inputTypeTrack2}/><label>Line</label>
|
||||
</div>
|
||||
<div className="input-type-choice">
|
||||
<input className="input-type inputTypeTrack2" type="radio" name="inputTypeTrack2" readOnly={true} value="instrument" disabled={masterDisabled}
|
||||
defaultChecked={!inputTypeTrack2}/><label>Instrument</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="phantom-section">
|
||||
<h4>Power</h4>
|
||||
|
||||
<div className="phantom field">
|
||||
<input className="phantom track2Phantom" name="track2Phantom" type="checkbox" disabled={masterDisabled}
|
||||
value={track2Phantom}/><label>Phantom power</label>
|
||||
</div>
|
||||
</div>
|
||||
<div className="instrument-section">
|
||||
<h4>Instrument</h4>
|
||||
<select name="track2Instrument" value={track2Instrument} disabled={masterDisabled} onChange={this.instrumentChanged.bind(this, 'track2Instrument')}>
|
||||
{instruments}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<br className="clearall"/>
|
||||
|
||||
<div className="combined-option">
|
||||
<input className="combined" type="checkbox" name="combined" value={combined} disabled={masterDisabled} ></input><label>Combined inputs 1 & 2 into a single stereo track</label>
|
||||
</div>
|
||||
{contents}
|
||||
</div>`
|
||||
})
|
||||
|
|
@ -15,6 +15,9 @@ context = window
|
|||
|
||||
for participant in session.otherParticipants()
|
||||
|
||||
if participant.is_jamblaster
|
||||
continue
|
||||
|
||||
name = participant.user.name;
|
||||
|
||||
if participant.tracks.length > 0
|
||||
|
|
|
|||
|
|
@ -16,6 +16,9 @@ MixerActions = context.MixerActions
|
|||
|
||||
for participant in session.otherParticipants()
|
||||
|
||||
if participant.is_jamblaster
|
||||
continue
|
||||
|
||||
if participant.client_id == @app.clientId
|
||||
participant.user.possessive = "Your"
|
||||
participant.self = true
|
||||
|
|
|
|||
|
|
@ -6,5 +6,6 @@ context = window
|
|||
saveNetworkSettings: {},
|
||||
pairState: {},
|
||||
setAutoPair: {},
|
||||
updateAudio: {}
|
||||
updateAudio: {},
|
||||
jamblasterTracksUpdated: {}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -4,6 +4,9 @@ logger = context.JK.logger
|
|||
SessionActions = @SessionActions
|
||||
JamBlasterActions = @JamBlasterActions
|
||||
|
||||
#window.StupidCallback: () =>
|
||||
# alert("STUPID CALLBACK")
|
||||
|
||||
@CallbackStore = Reflux.createStore(
|
||||
{
|
||||
init: () ->
|
||||
|
|
@ -12,13 +15,18 @@ JamBlasterActions = @JamBlasterActions
|
|||
|
||||
onAppInit: (@app) ->
|
||||
if context.jamClient.RegisterGenericCallBack?
|
||||
context.jamClient.RegisterGenericCallBack('CallbackActions.genericCallback')
|
||||
console.log("REGISTERING GENERIC CALLBACK")
|
||||
context.jamClient.RegisterGenericCallBack('CallbackStore.onGenericCallback')
|
||||
#context.jamClient.RegisterGenericCallBack('StupidCallback')
|
||||
|
||||
onGenericCallback: (map) ->
|
||||
console.log("GENERIC CALLBACK CALLED: ", map)
|
||||
if map.cmd == 'join_session'
|
||||
SessionActions.joinSession(map['music_session_id'])
|
||||
else if map.cmd == 'client_pair_state'
|
||||
JamBlasterActions.pairState(map)
|
||||
else if map.cmd == 'jamblaster_tracks_updated'
|
||||
JamBlasterActions.jamblasterTracksUpdated()
|
||||
|
||||
}
|
||||
)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ logger = context.JK.logger
|
|||
userJamBlasters: []
|
||||
localJamBlasters: []
|
||||
allJamBlasters: []
|
||||
waitingOnTracks: false
|
||||
|
||||
init: () ->
|
||||
# Register with the app store to get @app
|
||||
|
|
@ -18,8 +19,11 @@ logger = context.JK.logger
|
|||
|
||||
postSimpleChange: (result, msg) ->
|
||||
if result
|
||||
@lastClientTrackState = null
|
||||
@getLocalClients(@userJamBlasters)
|
||||
setTimeout(()=>
|
||||
@lastClientTrackState = null
|
||||
@getLocalClients(@userJamBlasters)
|
||||
, 1000)
|
||||
|
||||
else
|
||||
context.JK.Banner.showAlert('unable to update the JamBlaster', msg)
|
||||
|
||||
|
|
@ -55,6 +59,16 @@ logger = context.JK.logger
|
|||
@postSimpleChange(result, 'Unable to set the phantom power for Track 2')
|
||||
return
|
||||
|
||||
#else if name == 'track1Instrument'
|
||||
# result = context.jamClient.set48vAndLineInstState({input2_48V: value})
|
||||
# @postSimpleChange(result, 'Unable to set the phantom power for Track 2')
|
||||
# return
|
||||
|
||||
#else if name == 'track1Instrument'
|
||||
# result = context.jamClient.set48vAndLineInstState({input2_48V: value})
|
||||
# @postSimpleChange(result, 'Unable to set the phantom power for Track 2')
|
||||
# return
|
||||
|
||||
|
||||
audio = $.extend({}, @pairedJamBlaster.tracks)
|
||||
if name == 'inputTypeTrack1'
|
||||
|
|
@ -68,6 +82,7 @@ logger = context.JK.logger
|
|||
else if name == 'micActive'
|
||||
audio.has_chat = value
|
||||
|
||||
|
||||
#track1Active = @pairedJamBlaster.tracks.track1Active
|
||||
#if name == 'track1Active'
|
||||
# track1Active = value
|
||||
|
|
@ -78,6 +93,10 @@ logger = context.JK.logger
|
|||
|
||||
track1Active = true
|
||||
track2Active = true
|
||||
has_chat = true
|
||||
|
||||
|
||||
audio.has_chat = true
|
||||
|
||||
combined = @pairedJamBlaster.tracks.combined
|
||||
if name == 'combined'
|
||||
|
|
@ -90,10 +109,17 @@ logger = context.JK.logger
|
|||
if name == 'track2Instrument'
|
||||
track2Instrument = @convertToClientInstrument(value)
|
||||
|
||||
if !track1Instrument
|
||||
track1Instrument = context.JK.server_to_client_instrument_map.Other.client_id
|
||||
if !track2Instrument
|
||||
track2Instrument = context.JK.server_to_client_instrument_map.Other.client_id
|
||||
|
||||
|
||||
if combined
|
||||
# user has chosen to combine both inputs into one track. stereo=true is the key flag her
|
||||
|
||||
audio.track1 = {stereo: true, left: true, inst: track1Instrument}
|
||||
delete audio.track2 # backend will treat null as present
|
||||
|
||||
else
|
||||
|
||||
|
|
@ -105,21 +131,42 @@ logger = context.JK.logger
|
|||
else if track1Active #(means track)
|
||||
|
||||
audio.track1 = {stereo: false, left: true, inst: track1Instrument}
|
||||
delete audio.track2 # backend will treat null as present
|
||||
|
||||
else # input2Active
|
||||
|
||||
audio.track2 = {stereo: false, right: true, inst: track2Instrument}
|
||||
delete audio.track1 # backend will treat null as present
|
||||
|
||||
logger.debug("updating JamBlaster track state", audio)
|
||||
context.jamClient.setJbTrackState(audio);
|
||||
@lastClientTrackState = null
|
||||
#@waitOnTracksDone()
|
||||
@waitOnTracks()
|
||||
else
|
||||
context.JK.Banner.showAlert('no paired JamBlaster', 'it seems your JamBlaster has become disconnected. Please ensure it is powered on and connected via an ethernet cable.')
|
||||
|
||||
waitOnTracksDone: () ->
|
||||
@waitingOnTracksDone = true
|
||||
@waitingOnTracksInterval = setInterval()
|
||||
waitOnTracks: () ->
|
||||
@lastClientTrackState = null
|
||||
@waitingOnTracks = true
|
||||
if @waitingOnTracksTimeout
|
||||
clearTimeout(@waitingOnTracksTimeout)
|
||||
@changed()
|
||||
@waitingOnTracksTimeout = setTimeout(() =>
|
||||
@waitingOnTracksTimeout = null
|
||||
if @waitingOnTracks
|
||||
@waitingOnTracks = false
|
||||
@changed()
|
||||
context.JK.Banner.showAlert('something went wrong', 'A notice that the changes were finally applied has not been sent. Leave the session, restart the JamBlaster, and get into a session again.')
|
||||
, 10000)
|
||||
|
||||
# called from backend after track thrashing
|
||||
jamblasterTracksUpdated: () ->
|
||||
if @waitingOnTracksTimeout
|
||||
clearTimeout(@waitingOnTracksTimeout)
|
||||
@waitingOnTracksTimeout = null
|
||||
@waitingOnTracks = false
|
||||
@getLocalClients(@userJamBlasters)
|
||||
@changed()
|
||||
|
||||
convertToClientInstrument: (instrumentId) ->
|
||||
clientInstrumentId = null
|
||||
if instrumentId != null && instrumentId != ''
|
||||
|
|
@ -167,8 +214,11 @@ logger = context.JK.logger
|
|||
else
|
||||
context.JK.Banner.showAlert('network settings updated', 'Please reboot the JamBlaster.')
|
||||
# it will be refreshed by backend
|
||||
@onClearNetworkState()
|
||||
@onResyncBonjour()
|
||||
setTimeout(()=>
|
||||
@onClearNetworkState()
|
||||
@onResyncBonjour()
|
||||
, 1000)
|
||||
|
||||
|
||||
onResyncBonjour: () ->
|
||||
|
||||
|
|
@ -293,7 +343,7 @@ logger = context.JK.logger
|
|||
|
||||
# combined
|
||||
track1 = client.tracks.track1
|
||||
track2 = client.tracks.track1
|
||||
track2 = client.tracks.track2
|
||||
if track1?
|
||||
|
||||
client.tracks.combined = track1.stereo
|
||||
|
|
@ -368,8 +418,12 @@ logger = context.JK.logger
|
|||
@refreshingBonjour = false
|
||||
@changed()
|
||||
|
||||
get48vAndLineState: () ->
|
||||
@phantomAndLineState = context.jamClient.get48vAndLineInstState()
|
||||
console.log("get48vAndLineInstState", @phantomAndLineState)
|
||||
|
||||
|
||||
changed: () ->
|
||||
@trigger({userJamBlasters: @userJamBlasters, allJamBlasters: @clients, localJamBlasters: @localClients, refreshingBonjour: @refreshingBonjour, pairedJamBlaster: @pairedJamBlaster})
|
||||
@trigger({userJamBlasters: @userJamBlasters, allJamBlasters: @clients, localJamBlasters: @localClients, refreshingBonjour: @refreshingBonjour, pairedJamBlaster: @pairedJamBlaster, waitingOnTracks: @waitingOnTracks})
|
||||
}
|
||||
)
|
||||
|
|
|
|||
|
|
@ -77,4 +77,16 @@
|
|||
margin-bottom:10px;
|
||||
}
|
||||
}
|
||||
|
||||
.waiting-on-tracks {
|
||||
text-align:center;
|
||||
}
|
||||
.spinner-large {
|
||||
width:200px;
|
||||
height:200px;
|
||||
line-height: 200px;
|
||||
position:relative;
|
||||
margin:25px auto;
|
||||
display:inline-block;
|
||||
}
|
||||
}
|
||||
|
|
@ -78,7 +78,7 @@
|
|||
|
||||
.userinfo ul {
|
||||
clear:both;
|
||||
background: scale-lightness($ColorUIBackground, 10%);
|
||||
background: #4A4A4A;
|
||||
display:none;
|
||||
position:relative;
|
||||
}
|
||||
|
|
@ -87,6 +87,6 @@
|
|||
display:block;
|
||||
margin: 2px;
|
||||
padding: 2px;
|
||||
background: scale-lightness($ColorUIBackground, 20%);
|
||||
background: #4A4A4A;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ else
|
|||
|
||||
child(:connections => :participants) {
|
||||
collection @music_sessions, :object_root => false
|
||||
attributes :ip_address, :client_id, :joined_session_at, :audio_latency, :id, :metronome_open
|
||||
attributes :ip_address, :client_id, :joined_session_at, :audio_latency, :id, :metronome_open, :is_jamblaster
|
||||
|
||||
node :user do |connection|
|
||||
{ :id => connection.user.id, :photo_url => connection.user.photo_url, :name => connection.user.name, :is_friend => connection.user.friends?(current_user), :connection_state => connection.aasm_state }
|
||||
|
|
|
|||
|
|
@ -151,6 +151,9 @@ def web_config
|
|||
def email_partners_alias
|
||||
"partner-dev@jamkazam.com"
|
||||
end
|
||||
def test_drive_wait_period_year
|
||||
1
|
||||
end
|
||||
end
|
||||
klass.new
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue