@@ -484,6 +484,24 @@ class SongList extends AlertsMixin(
484484 }
485485 }
486486 ) ;
487+ midiManager . registerInput (
488+ this . settings . getString ( 'midi.audioOutput.safety.crossFader' ) ,
489+ e => {
490+ this . _audioOutputCrossFader = e . rawValue ;
491+ }
492+ ) ;
493+ midiManager . registerInput (
494+ this . settings . getString ( 'midi.audioOutput.safety.leftFader' ) ,
495+ e => {
496+ this . _audioOutputLeftFader = e . rawValue ;
497+ }
498+ ) ;
499+ midiManager . registerInput (
500+ this . settings . getString ( 'midi.audioOutput.safety.rightFader' ) ,
501+ e => {
502+ this . _audioOutputRightFader = e . rawValue ;
503+ }
504+ ) ;
487505 midiManager . registerInput (
488506 this . settings . getString ( 'midi.loadLeft' ) , // 70
489507 e => {
@@ -549,13 +567,25 @@ class SongList extends AlertsMixin(
549567 this . scrollTo ( { top : newScrollTop , behavior : 'instant' } ) ;
550568 console . info ( `targetTop: ${ targetTop } , moveTop ${ moveTop } newScrollTop: ${ newScrollTop } , stop ${ selectedRect . top } ` ) ;
551569 }
552- const startPct = this . settings . getInt ( 'songList.previewStartPercent' ) / 100 ;
553- let event = new CustomEvent ( 'audio-preview-song' , {
554- bubbles : true ,
555- composed : true ,
556- detail : { song : this . midiSelectedListItem . song , pct : startPct , player : this . midiSelectedListItem }
557- } ) ;
558- setTimeout ( ( ) => this . dispatchEvent ( event ) , 200 ) ; // wait for audio output to switch
570+ if ( ( // does not have separate audio channels, so no safety checks required
571+ ! this . settings . getString ( 'midi.audioOutput.leftName' ) &&
572+ ! this . settings . getString ( 'midi.audioOutput.rightName' )
573+ ) || ( // left channel safety check
574+ this . _audioOutput == this . settings . getString ( 'midi.audioOutput.leftName' )
575+ && ( this . _audioOutputLeftFader == 0 || this . _audioOutputCrossFader == 0x7F )
576+ ) || ( // right channel safety check
577+ this . _audioOutput == this . settings . getString ( 'midi.audioOutput.rightName' )
578+ && ( this . _audioOutputRightFader == 0 || this . _audioOutputCrossFader == 0 )
579+ )
580+ ) {
581+ const startPct = this . settings . getInt ( 'songList.previewStartPercent' ) / 100 ;
582+ let event = new CustomEvent ( 'audio-preview-song' , {
583+ bubbles : true ,
584+ composed : true ,
585+ detail : { song : this . midiSelectedListItem . song , pct : startPct , player : this . midiSelectedListItem }
586+ } ) ;
587+ setTimeout ( ( ) => this . dispatchEvent ( event ) , 200 ) ; // wait for audio output to switch
588+ }
559589 }
560590 ) ;
561591 }
0 commit comments