@@ -15,6 +15,7 @@ import {
1515 GetColorDropdown ,
1616 GetNumberField ,
1717 GetSoloDropdown ,
18+ getDelayModes ,
1819} from '../choices/common.js'
1920import { getNodeNumber , getNumber , runTransition } from './utils.js'
2021import { InstanceBaseExt } from '../types.js'
@@ -50,6 +51,9 @@ export enum CommonActions {
5051 RestorePanorama = 'restore-panorama' ,
5152 DeltaPanorama = 'panorama-delta' ,
5253 UndoDeltaPanorama = 'undo-panorama' ,
54+ // Delay
55+ SetDelay = 'set-delay' ,
56+ SetDelayAmount = 'set-delay-amount' ,
5357
5458 //////////// SEND
5559 SetSendMute = 'set-send-mute' ,
@@ -504,6 +508,132 @@ export function createCommonActions(self: InstanceBaseExt<WingConfig>): Companio
504508 }
505509 } ,
506510 } ,
511+ ////////////////////////////////////////////////////////////////
512+ // Delay
513+ ////////////////////////////////////////////////////////////////
514+ [ CommonActions . SetDelay ] : {
515+ name : 'Set Delay' ,
516+ description : 'Enable or disable the delay of a bus, matrix or main.' ,
517+ options : [
518+ GetDropdown ( 'Selection' , 'sel' , [
519+ ...state . namedChoices . mains ,
520+ ...state . namedChoices . matrices ,
521+ ...state . namedChoices . busses ,
522+ ] ) ,
523+ {
524+ type : 'checkbox' ,
525+ label : 'Delay On/Off' ,
526+ id : 'delay' ,
527+ default : false ,
528+ } ,
529+ ] ,
530+ callback : async ( event ) => {
531+ const sel = event . options . sel as string
532+ const cmd = ActionUtil . getDelayOnCommand ( sel , getNodeNumber ( event , 'sel' ) )
533+ send ( cmd , event . options . delay ? 1 : 0 )
534+ } ,
535+ } ,
536+
537+ [ CommonActions . SetDelayAmount ] : {
538+ name : 'Set Delay Mode' ,
539+ description : 'Set the delay mode of a bus, matrix or main.' ,
540+ options : [
541+ GetDropdown ( 'Selection' , 'sel' , [
542+ ...state . namedChoices . mains ,
543+ ...state . namedChoices . matrices ,
544+ ...state . namedChoices . busses ,
545+ ] ) ,
546+ GetDropdown ( 'Delay Mode' , 'mode' , getDelayModes ( ) ) ,
547+ {
548+ type : 'number' ,
549+ label : 'Amount (meters)' ,
550+ id : 'amount_m' ,
551+ min : 0 ,
552+ max : 150 ,
553+ step : 0.1 ,
554+ default : 0 ,
555+ range : true ,
556+ isVisible : ( options ) => {
557+ console . log ( 'options: ' , options )
558+ return ( options . mode as string ) === 'M'
559+ } ,
560+ } ,
561+ {
562+ type : 'number' ,
563+ label : 'Amount (ft)' ,
564+ id : 'amount_ft' ,
565+ min : 0.5 ,
566+ max : 500 ,
567+ step : 0.5 ,
568+ default : 0.5 ,
569+ range : true ,
570+ isVisible : ( options ) => {
571+ return options . mode === 'FT'
572+ } ,
573+ } ,
574+ {
575+ type : 'number' ,
576+ label : 'Amount (ms)' ,
577+ id : 'amount_ms' ,
578+ min : 0.5 ,
579+ max : 500 ,
580+ step : 0.1 ,
581+ default : 0.5 ,
582+ range : true ,
583+ isVisible : ( options ) => {
584+ return options . mode === 'MS'
585+ } ,
586+ } ,
587+ {
588+ type : 'number' ,
589+ label : 'Amount (samples)' ,
590+ id : 'amount_samples' ,
591+ min : 16 ,
592+ max : 500 ,
593+ step : 1 ,
594+ default : 16 ,
595+ range : true ,
596+ isVisible : ( options ) => {
597+ return options . mode === 'SMP'
598+ } ,
599+ } ,
600+ ] ,
601+ callback : async ( event ) => {
602+ const sel = event . options . sel as string
603+ const mode = event . options . mode as string
604+ send ( ActionUtil . getDelayModeCommand ( sel , getNodeNumber ( event , 'sel' ) ) , mode )
605+ switch ( mode ) {
606+ case 'M' :
607+ send (
608+ ActionUtil . getDelayAmountCommand ( sel , getNodeNumber ( event , 'sel' ) ) ,
609+ event . options . amount_m as number ,
610+ true ,
611+ )
612+ break
613+ case 'FT' :
614+ send (
615+ ActionUtil . getDelayAmountCommand ( sel , getNodeNumber ( event , 'sel' ) ) ,
616+ event . options . amount_ft as number ,
617+ true ,
618+ )
619+ break
620+ case 'MS' :
621+ send (
622+ ActionUtil . getDelayAmountCommand ( sel , getNodeNumber ( event , 'sel' ) ) ,
623+ event . options . amount_ms as number ,
624+ true ,
625+ )
626+ break
627+ case 'SMP' :
628+ send (
629+ ActionUtil . getDelayAmountCommand ( sel , getNodeNumber ( event , 'sel' ) ) ,
630+ event . options . amount_samples as number ,
631+ true ,
632+ )
633+ break
634+ }
635+ } ,
636+ } ,
507637
508638 ////////////////////////////////////////////////////////////////
509639 // Send Fader
0 commit comments