diff --git a/.github/actions/cache/action.yml b/.github/actions/cache/action.yml index 55e7abd3..512d66bf 100644 --- a/.github/actions/cache/action.yml +++ b/.github/actions/cache/action.yml @@ -4,7 +4,7 @@ runs: using: "composite" steps: - name: Cache dependencies - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: ${{ env.node-version }} cache: ${{ env.node-package-manager }} \ No newline at end of file diff --git a/.github/workflows/node-ci.dev.yml b/.github/workflows/node-ci.dev.yml index 7a34f1ed..d2526a80 100644 --- a/.github/workflows/node-ci.dev.yml +++ b/.github/workflows/node-ci.dev.yml @@ -1,7 +1,7 @@ name: Dev Node CI env: - node-version: 16 + node-version: 18 node-package-manager: yarn # on: @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - uses: ./.github/actions/cache - name: Install dependencies run: yarn install --frozen-lockfile @@ -41,7 +41,7 @@ jobs: - validate-dependencies steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - uses: ./.github/actions/cache - name: Install dependencies @@ -51,13 +51,13 @@ jobs: run: yarn build - name: Upload client build artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: ${{ github.event.repository.name }}-client-develop path: client/dist - name: Upload server build artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: ${{ github.event.repository.name }}-server-develop path: server/dist @@ -69,7 +69,7 @@ jobs: defined: ${{ steps.username.outputs.defined == 'true' && steps.password.outputs.defined == 'true' }} steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Check if has username id: username @@ -90,34 +90,34 @@ jobs: - check-docker-credentials steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - - uses: actions/download-artifact@v2 + - uses: actions/download-artifact@v3 with: name: ${{ github.event.repository.name }}-client-develop path: client/dist - - uses: actions/download-artifact@v2 + - uses: actions/download-artifact@v3 with: name: ${{ github.event.repository.name }}-server-develop path: server/dist - name: Docker meta id: meta - uses: docker/metadata-action@v3 + uses: docker/metadata-action@v4 with: images: 'tv2media/${{ github.event.repository.name }}' tags: | type=ref,event=branch - name: Log in to Docker Hub - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and push - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v4 with: context: . push: true diff --git a/.github/workflows/node-ci.prod.yml b/.github/workflows/node-ci.prod.yml index 31642791..a5bb7faa 100644 --- a/.github/workflows/node-ci.prod.yml +++ b/.github/workflows/node-ci.prod.yml @@ -20,7 +20,7 @@ name: Prod Node CI env: - node-version: 16 + node-version: 18 node-package-manager: yarn # on: @@ -34,7 +34,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - uses: ./.github/actions/cache - name: Install dependencies run: yarn install --frozen-lockfile @@ -44,7 +44,7 @@ jobs: needs: cache-dependencies steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - uses: ./.github/actions/cache - name: Install dependencies run: yarn install --frozen-lockfile @@ -56,7 +56,7 @@ jobs: needs: cache-dependencies steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - uses: ./.github/actions/test @@ -81,20 +81,20 @@ jobs: commit_sha: ${{ steps.commit_sha.outputs.commit_sha }} steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Configure committer run: | git config user.name "${{ github.event.pusher.name }}" git config user.email "${{ github.event.pusher.email }}" - name: Bump version and push tag id: tag_version - uses: mathieudutour/github-tag-action@v5.6 + uses: mathieudutour/github-tag-action@v6.1 with: github_token: ${{ secrets.GITHUB_TOKEN }} default_bump: false - name: Update package.json if: steps.tag_version.outputs.new_tag != '' - uses: jossef/action-set-json-field@v1 + uses: jossef/action-set-json-field@v2.1 with: file: package.json field: version @@ -110,7 +110,7 @@ jobs: - name: Commit and push changes to package.json and CHANGELOG.md id: commit_sha if: steps.tag_version.outputs.new_tag != '' - uses: EndBug/add-and-commit@v7 + uses: EndBug/add-and-commit@v9 with: add: "['package.json', 'CHANGELOG.md']" @@ -121,7 +121,7 @@ jobs: - bump-version steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Pull request to develop id: develop continue-on-error: true @@ -142,7 +142,7 @@ jobs: - bump-version steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: ref: ${{ needs.bump-version.outputs.commit_sha }} - name: Ensure commits from bump-version @@ -153,12 +153,12 @@ jobs: - name: Build run: yarn build - name: Upload client build artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: ${{ github.event.repository.name }}-client path: client/dist - name: Upload server build artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: ${{ github.event.repository.name }}-server path: server/dist @@ -170,17 +170,17 @@ jobs: - build steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: ref: ${{ needs.bump-version.outputs.commit_sha }} - name: Ensure commits from bump-version run: git pull - uses: ./.github/actions/cache - - uses: actions/download-artifact@v2 + - uses: actions/download-artifact@v3 with: name: ${{ github.event.repository.name }}-client path: client/dist - - uses: actions/download-artifact@v2 + - uses: actions/download-artifact@v3 with: name: ${{ github.event.repository.name }}-server path: server/dist @@ -189,7 +189,7 @@ jobs: - name: Build desktop run: yarn build:desktop - name: Upload desktop build artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: ${{ github.event.repository.name }}-desktop path: desktop/dist @@ -201,7 +201,7 @@ jobs: defined: ${{ steps.release.outputs.defined == 'true' }} steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Check if is set to release id: release uses: ./.github/actions/check-secret @@ -216,12 +216,12 @@ jobs: - check-github-release steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: ref: ${{ needs.bump-version.outputs.commit_sha }} - name: Ensure commits from bump-version run: git pull - - uses: actions/download-artifact@v2 + - uses: actions/download-artifact@v3 with: name: ${{ github.event.repository.name }}-desktop path: desktop/dist @@ -247,7 +247,7 @@ jobs: defined: ${{ steps.token.outputs.defined == 'true' }} steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Check if has username id: token uses: ./.github/actions/check-secret @@ -262,19 +262,19 @@ jobs: - check-npm-token steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Configure publisher run: | git config user.name "${{ github.event.pusher.name }}" git config user.email "${{ github.event.pusher.email }}" - name: Download artifact - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v3 with: name: ${{ github.event.repository.name }} path: dist - - uses: actions/setup-node@v2 + - uses: actions/setup-node@v3 with: - node-version: '16.x' + node-version: '18.x' registry-url: 'https://registry.npmjs.org' - name: Publish package run: yarn publish --access=public --tag latest --new-version "${{ needs.bump-version.outputs.version }}" @@ -288,7 +288,7 @@ jobs: defined: ${{ steps.username.outputs.defined == 'true' && steps.password.outputs.defined == 'true' }} steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Check if has username id: username uses: ./.github/actions/check-secret @@ -308,7 +308,7 @@ jobs: - check-docker-credentials steps: - name: Access repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Extract version for tags id: version @@ -317,13 +317,13 @@ jobs: version: ${{ needs.bump-version.outputs.version }} - name: Log in to Docker Hub - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Build and push - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v4 with: context: . push: true diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ac90202..f11800b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,65 @@ +## [4.19.0](https://github.com/tv2/sisyfos-audio-controller/compare/v4.18.1...v4.19.0) (2023-09-08) + + +### Features + +* Atem Fairlight Ch-Fader relation ([5bc654e](https://github.com/tv2/sisyfos-audio-controller/commit/5bc654e73cf565240be6c30b7d564f4c5b960533)) +* Ember Ch-Fader relation ([71b69c1](https://github.com/tv2/sisyfos-audio-controller/commit/71b69c11d9f1ab6f049d759685a392287ab9f9a2)) +* Midas channel-fader relation ([6a495d6](https://github.com/tv2/sisyfos-audio-controller/commit/6a495d6c9898f38d99f8fb3d95164afeda563eb9)) +* MidiMixer Channel-Fader relation ([4417b2f](https://github.com/tv2/sisyfos-audio-controller/commit/4417b2fe42ab1ab813b68f1818c6fb185883c2be)) +* Optionally allow the fade time to be specified with the fader level ([edf95b0](https://github.com/tv2/sisyfos-audio-controller/commit/edf95b0f2bc64f61707309529393e946bb1676f2)) +* OSC mixer remove last .assignedFader reference ([a72497a](https://github.com/tv2/sisyfos-audio-controller/commit/a72497a73f62811b97c339bf43657a3c7359a3d8)) +* rename channel to fader ([db40d02](https://github.com/tv2/sisyfos-audio-controller/commit/db40d02feefd4f2b50b423bfe8dfc8fe4c2f8d28)) +* rename channel to faderIndex & use fader ref in channelroutesettings ([454e3a2](https://github.com/tv2/sisyfos-audio-controller/commit/454e3a2c1f318334f64a80f720f4c2238b33fef7)) +* rename handle1to1Routing to handleOneToOneRouting ([6aba807](https://github.com/tv2/sisyfos-audio-controller/commit/6aba8076a07a9fa300c240583e6e6c4f33fe3640)) +* SSL ch-fader relation ([db25280](https://github.com/tv2/sisyfos-audio-controller/commit/db252800fddc38acad1f567a3ce5f70d2b9f717d)) +* VMix channel-fader realtion ([8240673](https://github.com/tv2/sisyfos-audio-controller/commit/8240673d6def0a426559554b98c9e593e2042898)) +* YamahaQl Channel-Fader relation ([6361e39](https://github.com/tv2/sisyfos-audio-controller/commit/6361e39e0e75b58890c5696f123b726f5e6df41f)) + + +### Bug Fixes + +* cleanup fader assignments when number of mixers are changed ([2741f1c](https://github.com/tv2/sisyfos-audio-controller/commit/2741f1c9c1b37c3a8df2779e9d6451277a4f72fb)) +* clear old assignment prior to recalculate them ([ca5373e](https://github.com/tv2/sisyfos-audio-controller/commit/ca5373e2854487e0e1e5091637931be7fae22cba)) +* Don't fade if the start and end levels are the same ([80a2cdf](https://github.com/tv2/sisyfos-audio-controller/commit/80a2cdfdd044b09f0b8062c5e3179c3562c85b03)) +* don't run auxLevel request loop if channel is not assigned to any fader ([ee29125](https://github.com/tv2/sisyfos-audio-controller/commit/ee29125229f30a71e65f10d09c2ff66194f4800f)) +* fader Ch assigment ([2232442](https://github.com/tv2/sisyfos-audio-controller/commit/2232442266815ddffed8101b989c83940b6718e2)) +* false false return gave true ([8890e06](https://github.com/tv2/sisyfos-audio-controller/commit/8890e0619ffcc4d0d4e939c95d140ba3e3c78196)) +* global store war updated everytime a ping was sent ([a2597d9](https://github.com/tv2/sisyfos-audio-controller/commit/a2597d9f558d9e0222dedd68330491a8a1df2ded)) +* if size of mixer changed, SET_ASSIGNED_FADER gave an error ([9371ae1](https://github.com/tv2/sisyfos-audio-controller/commit/9371ae134bb78255500225418ffc5bdadf4cf826)) +* index in iteration was unsused ([61a3b3a](https://github.com/tv2/sisyfos-audio-controller/commit/61a3b3a1306dbd2983b417cbb29336caab16ff8a)) +* Midas OSC messages gave an error when an Fxparameter was on a channel that was not assigned to a fader. ([ab9d7ff](https://github.com/tv2/sisyfos-audio-controller/commit/ab9d7ff0553bd70d2a2e94567f9625978caedcec)) +* more optionals when no channels are assigned to a fader ([991128a](https://github.com/tv2/sisyfos-audio-controller/commit/991128a3e7dd006d31fa9c382ef355e8a0d7bad7)) +* optional if no channels are assigned to a fader ([92b6091](https://github.com/tv2/sisyfos-audio-controller/commit/92b6091042ffde9671349d8cbbef7199f0785157)) +* optional if no cvhannels are assigned to a fader ([81b5beb](https://github.com/tv2/sisyfos-audio-controller/commit/81b5bebb9374e1bb09c2d72d6e386596f0e831df)) +* rename to handleClearAllRouting ([036cc89](https://github.com/tv2/sisyfos-audio-controller/commit/036cc8908c305a7087baa75809ffda5d9d2835ad)) +* return assignedfader instead of faderindex ([686b9de](https://github.com/tv2/sisyfos-audio-controller/commit/686b9de3700c0ab6846506e4cb8be2f03179a19e)) +* revert Midas metering back to code from last release. As metering comes in "all channels at once", so reference to Channel is way more performant. ([546367b](https://github.com/tv2/sisyfos-audio-controller/commit/546367bd1d0c42a93ee4d166418a108679a3df87)) +* spelling error in isAssinged. renamed to assignedFaderIndex ([f25d537](https://github.com/tv2/sisyfos-audio-controller/commit/f25d537166f0d03d90c69ed5126b7f3bb64ef550)) +* SSLmixer remove last references to channel.assignedFader ([fef38ed](https://github.com/tv2/sisyfos-audio-controller/commit/fef38ede5c2b52acbd0e07c79e02a13069c5daf2)) +* status of monitorrouting should be boolean ([3d5bd24](https://github.com/tv2/sisyfos-audio-controller/commit/3d5bd247c08bf83607c5326dc5841238e281511d)) +* throw error if OSC protocol ports are already in use ([42c2c8a](https://github.com/tv2/sisyfos-audio-controller/commit/42c2c8a518bfa3ec06024230ff9fd6510bd7a19b)) +* unbind channel prior to binding it to new channel ([99dc4a0](https://github.com/tv2/sisyfos-audio-controller/commit/99dc4a0556472f618252efb6f21af237bda46a72)) +* update fullClientStore after clearing all ch - fader assignments ([e147a6d](https://github.com/tv2/sisyfos-audio-controller/commit/e147a6d384a38de16364673fd2bc86bbcb005b9d)) +* update gui when assignments to a fader changes ([ee56778](https://github.com/tv2/sisyfos-audio-controller/commit/ee567786052267d5c9dcfae113bc98edf572cf59)) +* use .some instead of includes on objects ([055c82c](https://github.com/tv2/sisyfos-audio-controller/commit/055c82cb0e082c5d53aded9616de67f20dbe29b3)) +* use .some() instead of includes for objects. ([bff1425](https://github.com/tv2/sisyfos-audio-controller/commit/bff14251d6da815a76f0157e6ed97495d8bcdb4c)) +* use optional on .assignedChannels ([487d15c](https://github.com/tv2/sisyfos-audio-controller/commit/487d15c451e84ed6486567173432a7f5464f8765)) + + +### Documentation + +* Document fadeTime arg for faderLevel ([e69b7b1](https://github.com/tv2/sisyfos-audio-controller/commit/e69b7b11e382e341ef76af6299117299dcec3db2)) + + +### [4.18.1](https://github.com/tv2/sisyfos-audio-controller/compare/v4.18.0...v4.18.1) (2023-06-22) + + +### Bug Fixes + +* Corrected package version to 4.18.0. ([94a605c](https://github.com/tv2/sisyfos-audio-controller/commit/94a605cae9f49cfdcb29cf1dcdd7f6980b12b21f)) + + ### [4.17.1](https://github.com/tv2/sisyfos-audio-controller/compare/v4.17.0...v4.17.1) (2022-03-11) diff --git a/Dockerfile b/Dockerfile index 3055802f..e23bcb2a 100755 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # BUILD IMAGE -FROM node:16.14-alpine +FROM node:18.16-alpine RUN apk add --no-cache git WORKDIR /opt/sisyfos-audio-controller COPY . . @@ -9,7 +9,7 @@ RUN yarn --check-files --frozen-lockfile --production --force RUN yarn cache clean # DEPLOY IMAGE -FROM node:16.14-alpine +FROM node:18.16-alpine WORKDIR /opt/sisyfos-audio-controller COPY --from=0 /opt/sisyfos-audio-controller . EXPOSE 1176/tcp diff --git a/README.md b/README.md index 29f95c85..644fec4d 100644 --- a/README.md +++ b/README.md @@ -214,7 +214,9 @@ To set the state send these OSC commands from you Automation to ProducersAudioMi #### Set channel faderlevel: -/ch/1/mix/faderlevel - float {between 0 and 1} +(the first defines the fader level) +(if second is missing it will take default fade value) +/ch/1/mix/faderlevel - float {between 0 and 1} - float { fadetime in ms } #### Set channel label: diff --git a/client/package.json b/client/package.json index e2131e1e..5f9d97a8 100644 --- a/client/package.json +++ b/client/package.json @@ -12,7 +12,7 @@ "@types/node": "^18.16.0", "@types/react-dom": "^18.2.4", "@types/react-test-renderer": "^18.0.0", - "@babel/core": "^7.21.8", + "@babel/core": "^7.22.10", "css-loader": "^6.7.3", "html-webpack-plugin": "^5.5.1", "react-test-renderer": "^18.2.0", diff --git a/client/src/components/ChanStrip.tsx b/client/src/components/ChanStrip.tsx index ccdbff58..13b376d6 100644 --- a/client/src/components/ChanStrip.tsx +++ b/client/src/components/ChanStrip.tsx @@ -85,7 +85,7 @@ class ChanStrip extends React.PureComponent< changeDelay(currentValue: number, addValue: number) { window.socketIoClient.emit(SOCKET_SET_FX, { fxParam: fxParamsList.DelayTime, - channel: this.props.faderIndex, + faderIndex: this.props.faderIndex, level: currentValue + addValue, }) } @@ -93,7 +93,7 @@ class ChanStrip extends React.PureComponent< handleFx(fxParam: fxParamsList, event: any) { window.socketIoClient.emit(SOCKET_SET_FX, { fxParam: fxParam, - channel: this.props.faderIndex, + faderIndex: this.props.faderIndex, level: parseFloat(event), }) } diff --git a/client/src/components/ChanStripEq.tsx b/client/src/components/ChanStripEq.tsx index 24a32985..1f43f0df 100644 --- a/client/src/components/ChanStripEq.tsx +++ b/client/src/components/ChanStripEq.tsx @@ -112,7 +112,7 @@ class ChanStripEq extends React.PureComponent< // window.storeRedux.dispatch(storeFaderFx(fxParam, this.props.faderIndex, parseFloat(level))) window.socketIoClient.emit(SOCKET_SET_FX, { fxParam: fxParam, - channel: this.props.faderIndex, + faderIndex: this.props.faderIndex, level: parseFloat(level), }) } diff --git a/client/src/components/ChanStripFull.tsx b/client/src/components/ChanStripFull.tsx index 03504a82..3396ae84 100644 --- a/client/src/components/ChanStripFull.tsx +++ b/client/src/components/ChanStripFull.tsx @@ -88,7 +88,7 @@ class ChanStripFull extends React.PureComponent< changeDelay(currentValue: number, addValue: number) { window.socketIoClient.emit(SOCKET_SET_FX, { fxParam: fxParamsList.DelayTime, - channel: this.props.faderIndex, + faderIndex: this.props.faderIndex, level: currentValue + addValue, }) } @@ -103,7 +103,7 @@ class ChanStripFull extends React.PureComponent< // window.storeRedux.dispatch(storeFaderFx(fxParam, this.props.faderIndex, parseFloat(level))) window.socketIoClient.emit(SOCKET_SET_FX, { fxParam: fxParam, - channel: this.props.faderIndex, + faderIndex: this.props.faderIndex, level: parseFloat(level), }) } diff --git a/client/src/components/Channel.tsx b/client/src/components/Channel.tsx index a27e5ab0..0834b28e 100644 --- a/client/src/components/Channel.tsx +++ b/client/src/components/Channel.tsx @@ -66,6 +66,7 @@ class Channel extends React.Component< nextProps.settings.showChanStrip != this.props.settings.showChanStrip || nextProps.fader.amixOn != this.props.fader.amixOn || + nextProps.fader.assignedChannels != this.props.fader.assignedChannels || XOR(nextProps.fader.capabilities, this.props.fader.capabilities) || XOR( nextProps.fader.capabilities?.hasAMix, diff --git a/client/src/components/ChannelMonitorOptions.tsx b/client/src/components/ChannelMonitorOptions.tsx index a9af7284..75254f40 100644 --- a/client/src/components/ChannelMonitorOptions.tsx +++ b/client/src/components/ChannelMonitorOptions.tsx @@ -64,7 +64,7 @@ class ChannelMonitorOptions extends React.PureComponent< if ( window.confirm( 'This will remove all monitor assignments to Aux :' + - String(this.props.fader[this.faderIndex].monitor) + String(this.props.fader[this.faderIndex].monitor) ) ) { this.props.channel.forEach((channel: any, index: number) => { @@ -81,7 +81,7 @@ class ChannelMonitorOptions extends React.PureComponent< if ( window.confirm( 'Send all channels to Aux: ' + - String(this.props.fader[this.faderIndex].monitor) + String(this.props.fader[this.faderIndex].monitor) ) ) { this.props.channel.forEach((channel: any, index: number) => { @@ -154,10 +154,11 @@ class ChannelMonitorOptions extends React.PureComponent< />