Skip to content

Commit

Permalink
feat: SSL ch-fader relation
Browse files Browse the repository at this point in the history
  • Loading branch information
olzzon committed Jul 8, 2023
1 parent 6a495d6 commit db25280
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 44 deletions.
7 changes: 3 additions & 4 deletions server/src/utils/mixerConnections/OscMixerConnection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,6 @@ export class OscMixerConnection {
)
}


setupMixerConnection() {
this.oscConnection
.on('ready', () => {
Expand All @@ -115,7 +114,7 @@ export class OscMixerConnection {
.CHANNEL_VU?.[0].mixerMessage
)
) {
let assignedFaderIndex = this.getAssignedFaderIndex(message.address.split('/')[this.cmdChannelIndex])
const assignedFaderIndex = this.getAssignedFaderIndex(message.address.split('/')[this.cmdChannelIndex])
if (
state.settings[0].mixers[
this.mixerIndex
Expand Down Expand Up @@ -146,7 +145,7 @@ export class OscMixerConnection {
.CHANNEL_VU_REDUCTION?.[0].mixerMessage
)
) {
let assignedFaderIndex = this.getAssignedFaderIndex(message.address.split('/')[this.cmdChannelIndex])
const assignedFaderIndex = this.getAssignedFaderIndex(message.address.split('/')[this.cmdChannelIndex])

sendVuLevel(
assignedFaderIndex,
Expand All @@ -162,7 +161,7 @@ export class OscMixerConnection {
)
) {
let ch = message.address.split('/')[this.cmdChannelIndex]
let assignedFaderIndex = this.getAssignedFaderIndex(ch - 1)
const assignedFaderIndex = this.getAssignedFaderIndex(ch - 1)

if (
assignedFaderIndex >= 0 &&
Expand Down
92 changes: 52 additions & 40 deletions server/src/utils/mixerConnections/SSLMixerConnection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
} from '../../../../shared/src/actions/faderActions'
import { storeSetMixerOnline } from '../../../../shared/src/actions/settingsActions'
import { logger } from '../logger'
import { IChannelReference, IFader } from '../../../../shared/src/reducers/fadersReducer'

export class SSLMixerConnection {
mixerProtocol: IMixerProtocol
Expand Down Expand Up @@ -57,70 +58,77 @@ export class SSLMixerConnection {
return str.substring(1)
}

private getAssignedFaderIndex(channelIndex: number) {
return state.faders[0].fader.findIndex(
(fader: IFader) => fader.assignedChannels.includes({ mixerIndex: this.mixerIndex, channelIndex })
)
}

handleReceivedFaderLevelCommand = (buffer: any) => {
try {
let channelIndex = buffer[6]
let value = buffer.readUInt16BE(7) / 1024
const ch = state.channels[0].chMixerConnection[this.mixerIndex].channel
const thisMixerChannels = state.channels[0].chMixerConnection[this.mixerIndex].channel
const assignedFaderIndex = this.getAssignedFaderIndex(channelIndex)

if (
!ch[channelIndex].fadeActive
!thisMixerChannels[channelIndex].fadeActive
) {
if (
value >
this.mixerProtocol.fader.min +
(this.mixerProtocol.fader.max *
state.settings[0].autoResetLevel) /
100
(this.mixerProtocol.fader.max *
state.settings[0].autoResetLevel) /
100
) {
if (
ch[channelIndex].outputLevel !== value
thisMixerChannels[channelIndex].outputLevel !== value

) {
store.dispatch(
storeFaderLevel(ch[channelIndex].assignedFader, value)
storeFaderLevel(assignedFaderIndex, value)
)
if (!state.faders[0].fader[ch[channelIndex].assignedFader].pgmOn) {
store.dispatch(storeTogglePgm(ch[channelIndex].assignedFader))
if (!state.faders[0].fader[assignedFaderIndex].pgmOn) {
store.dispatch(storeTogglePgm(assignedFaderIndex))
}

if (remoteConnections) {
remoteConnections.updateRemoteFaderState(
ch[channelIndex].assignedFader,
assignedFaderIndex,
value
)
}
if (state.faders[0].fader[ch[channelIndex].assignedFader].pgmOn) {
ch.forEach((channel: any, index: number) => {
if (
channel.assignedFader === ch[channelIndex].assignedFader
) {
this.updateOutLevel(index)

if (state.faders[0].fader[assignedFaderIndex].pgmOn) {
state.faders[0].fader[assignedFaderIndex].assignedChannels.forEach(
(item: IChannelReference) => {
if (item.mixerIndex === this.mixerIndex) {
this.updateOutLevel(item.channelIndex)
}
}
})
)
}
}
} else if (
state.faders[0].fader[ch[channelIndex].assignedFader].pgmOn ||
state.faders[0].fader[ch[channelIndex].assignedFader].voOn
state.faders[0].fader[assignedFaderIndex].pgmOn ||
state.faders[0].fader[assignedFaderIndex].voOn
) {
store.dispatch(storeFaderLevel(ch[channelIndex].assignedFader, value))
ch.forEach(
(item: { assignedFader: any }, index: number) => {
if (item.assignedFader === ch[channelIndex].assignedFader) {
store.dispatch(storeFaderLevel(assignedFaderIndex, value))
state.faders[0].fader[assignedFaderIndex].assignedChannels.forEach(
(item: IChannelReference) => {
if (item.mixerIndex === this.mixerIndex) {
store.dispatch(
storeSetOutputLevel(
this.mixerIndex,
index,
item.channelIndex,
value
)
)
}
}
)
}
global.mainThreadHandler.updatePartialStore(ch[channelIndex].assignedFader)
mixerGenericConnection.updateOutLevel(ch[channelIndex].assignedFader, 0, this.mixerIndex)
global.mainThreadHandler.updatePartialStore(assignedFaderIndex)
mixerGenericConnection.updateOutLevel(assignedFaderIndex, 0, this.mixerIndex)
}
} catch (error) {
logger.error(
Expand All @@ -134,6 +142,7 @@ export class SSLMixerConnection {
// MUTE ON/OFF COMMAND
let commandHex = buffer.toString('hex')
let channelIndex = buffer[6]
const assignedFaderIndex = this.getAssignedFaderIndex(channelIndex)
let value: boolean = buffer[7] === 0 ? true : false
logger.trace(
`Receive Buffer Channel On/off: ${this.formatHexWithSpaces(
Expand All @@ -143,11 +152,6 @@ export class SSLMixerConnection {
)}`
)

let assignedFaderIndex =
state.channels[0].chMixerConnection[this.mixerIndex].channel[
channelIndex
].assignedFader

store.dispatch(storeSetMute(assignedFaderIndex, value))

if (remoteConnections) {
Expand All @@ -156,6 +160,14 @@ export class SSLMixerConnection {
value ? 1 : 0
)
}

state.faders[0].fader[assignedFaderIndex].assignedChannels.forEach(
(item: IChannelReference) => {
if (item.mixerIndex === this.mixerIndex && item.channelIndex !== channelIndex) {
this.updateMuteState(item.channelIndex, value)
}
}
)
state.channels[0].chMixerConnection[this.mixerIndex].channel.forEach(
(channel: any, index: number) => {
if (
Expand Down Expand Up @@ -326,15 +338,15 @@ export class SSLMixerConnection {
sslMessage = sslMessage.replace(
'{channel}',
('0' + channelByte[0].toString(16)).slice(-2) +
' ' +
('0' + channelByte[1].toString(16)).slice(-2)
' ' +
('0' + channelByte[1].toString(16)).slice(-2)
)
sslMessage = sslMessage.replace(
'{level}',
('0' + valueByte[0].toString(16)).slice(-2) +
' ' +
('0' + valueByte[1].toString(16)).slice(-2) +
' '
' ' +
('0' + valueByte[1].toString(16)).slice(-2) +
' '
)
sslMessage = sslMessage + this.calculate_checksum8(sslMessage.slice(9))
let a = sslMessage.split(' ')
Expand All @@ -357,8 +369,8 @@ export class SSLMixerConnection {
sslMessage = sslMessage.replace(
'{channel}',
('0' + channelByte[0].toString(16)).slice(-2) +
' ' +
('0' + channelByte[1].toString(16)).slice(-2)
' ' +
('0' + channelByte[1].toString(16)).slice(-2)
)
sslMessage =
sslMessage + ' ' + this.calculate_checksum8(sslMessage.slice(9))
Expand Down Expand Up @@ -511,7 +523,7 @@ export class SSLMixerConnection {
return true
}

loadMixerPreset(presetName: string) {}
loadMixerPreset(presetName: string) { }

injectCommand(command: string[]) {
return true
Expand Down

0 comments on commit db25280

Please sign in to comment.