Skip to content

Commit 9296ee7

Browse files
author
dogatech
committed
add safety midi checks with previews
1 parent 2ee82fc commit 9296ee7

4 files changed

Lines changed: 50 additions & 8 deletions

File tree

be/src/SoulSifterSettings.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ namespace soulsifter {
5252
//ptree.put("midi.audioOutput.leftName", "");
5353
//ptree.put("midi.audioOutput.right", "");
5454
//ptree.put("midi.audioOutput.rightName", "");
55+
//ptree.put("midi.audioOutput.safety.crossFader", "");
56+
//ptree.put("midi.audioOutput.safety.leftFader", "");
57+
//ptree.put("midi.audioOutput.safety.rightFader", "");
5558
//ptree.put("midi.browse", "");
5659
//ptree.put("midi.controllerName", "");
5760
//ptree.put("midi.loadLeft", "");

fe/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "SoulSifter",
33
"version": "1.10.0",
44
"description": "DJ & music organization app.",
5-
"build": 4222,
5+
"build": 4224,
66
"main": "main.js",
77
"scripts": {
88
"fe:build": "vite build",

fe/src/settings-edit.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ class SettingsEdit extends SettingsMixin(LitElement) {
8484
<md-filled-text-field label="Audio source 1 name" .value=${this.midiAudioOutputLeftName} id="midiAudioOutputLeftName"></md-filled-text-field>
8585
<md-filled-text-field label="Audio source 2 midi" .value=${this.midiAudioOutputRight} id="midiAudioOutputRight"></md-filled-text-field>
8686
<md-filled-text-field label="Audio source 2 name" .value=${this.midiAudioOutputRightName} id="midiAudioOutputRightName"></md-filled-text-field>
87+
<md-filled-text-field label="Safty cross fader midi" .value=${this.midiAudioOutputSafetyCrossFader} id="midiAudioOutputSafetyCrossFader"></md-filled-text-field>
88+
<md-filled-text-field label="Safty volume fader 1 midi" .value=${this.midiAudioOutputSafetyLeftFader} id="midiAudioOutputSafetyLeftFader"></md-filled-text-field>
89+
<md-filled-text-field label="Safty volume fader 2 midi" .value=${this.midiAudioOutputSafetyRightFader} id="midiAudioOutputSafetyRightFader"></md-filled-text-field>
8790
</div>
8891
<div class="fields">
8992
<label>Midi for VDJ stem responsiveness</label>
@@ -183,6 +186,9 @@ class SettingsEdit extends SettingsMixin(LitElement) {
183186
this.midiAudioOutputLeftName = this.settings.getString('midi.audioOutput.leftName');
184187
this.midiAudioOutputRight = this.settings.getString('midi.audioOutput.right');
185188
this.midiAudioOutputRightName = this.settings.getString('midi.audioOutput.rightName');
189+
this.midiAudioOutputSafetyCrossFader = this.settings.getString('midi.audioOutput.safety.crossFader');
190+
this.midiAudioOutputSafetyLeftFader = this.settings.getString('midi.audioOutput.safety.leftFader');
191+
this.midiAudioOutputSafetyRightFader = this.settings.getString('midi.audioOutput.safety.rightFader');
186192
this.midiBrowse = this.settings.getString('midi.browse');
187193
this.midiControllerName = this.settings.getString('midi.controllerName');
188194
this.midiLoadLeft = this.settings.getString('midi.loadLeft');
@@ -330,6 +336,9 @@ class SettingsEdit extends SettingsMixin(LitElement) {
330336
this.puts('midi.audioOutput.leftName', this.shadowRoot.getElementById('midiAudioOutputLeftName').value);
331337
this.puts('midi.audioOutput.right', this.shadowRoot.getElementById('midiAudioOutputRight').value);
332338
this.puts('midi.audioOutput.rightName', this.shadowRoot.getElementById('midiAudioOutputRightName').value);
339+
this.puts('midi.audioOutput.safety.crossFader', this.shadowRoot.getElementById('midiAudioOutputSafetyCrossFader').value);
340+
this.puts('midi.audioOutput.safety.leftFader', this.shadowRoot.getElementById('midiAudioOutputSafetyLeftFader').value);
341+
this.puts('midi.audioOutput.safety.rightFader', this.shadowRoot.getElementById('midiAudioOutputSafetyRightFader').value);
333342
this.puts('midi.browse', this.shadowRoot.getElementById('midiBrowse').value);
334343
this.puts('midi.controllerName', this.shadowRoot.getElementById('midiControllerName').value);
335344
this.puts('midi.loadLeft', this.shadowRoot.getElementById('midiLoadLeft').value);

fe/src/song-list.js

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)