diff --git a/src/main/base/store.ts b/src/main/base/store.ts index d7e76295..a62ac282 100644 --- a/src/main/base/store.ts +++ b/src/main/base/store.ts @@ -57,7 +57,9 @@ export class ConfigStore { "equalizer": { 'frequencies': [32, 63, 125, 250, 500, 1000, 2000, 4000, 8000, 16000], 'gain': [0,0,0,0,0,0,0,0,0,0], - 'Q' : [1,1,1,1,1,1,1,1,1,1] + 'Q' : [1,1,1,1,1,1,1,1,1,1], + 'preamp' : 0, + 'mix' : 1, } }, "visual": { diff --git a/src/renderer/audio/audio.js b/src/renderer/audio/audio.js index dbc619d5..79851511 100644 --- a/src/renderer/audio/audio.js +++ b/src/renderer/audio/audio.js @@ -6,6 +6,7 @@ var CiderAudio = { spatialNode : null, spatialInput: null, audioBands : null, + preampNode : null, }, init: function (cb = function () { }) { //AudioOutputs.fInit = true; @@ -26,6 +27,7 @@ var CiderAudio = { CiderAudio.audioNodes.gainNode.disconnect(); } catch(e){} try{ CiderAudio.audioNodes.spatialNode.disconnect();} catch(e){} try{ + CiderAudio.audioNodes.preampNode.disconnect(); CiderAudio.audioNodes.audioBands[0].disconnect(); CiderAudio.audioNodes.audioBands[9].disconnect(); } catch(e){} @@ -110,17 +112,26 @@ var CiderAudio = { CiderAudio.audioNodes.audioBands[i].type = 'peaking'; // 'peaking'; CiderAudio.audioNodes.audioBands[i].frequency.value = BANDS[i]; CiderAudio.audioNodes.audioBands[i].Q.value = Q[i]; - CiderAudio.audioNodes.audioBands[i].gain.value = GAIN[i]; + CiderAudio.audioNodes.audioBands[i].gain.value = GAIN[i] * app.cfg.audio.equalizer.mix; } + + CiderAudio.audioNodes.preampNode = CiderAudio.context.createBiquadFilter(); + CiderAudio.audioNodes.preampNode.type = 'highshelf'; + CiderAudio.audioNodes.preampNode.frequency.value = 0; // allow all + CiderAudio.audioNodes.preampNode.gain.value = app.cfg.audio.equalizer.preamp; + if (app.cfg.audio.spatial) { try{ CiderAudio.audioNodes.spatialNode.output.disconnect(CiderAudio.context.destination); } catch(e){} - CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.audioBands[0]); + CiderAudio.audioNodes.spatialNode.output.connect(CiderAudio.audioNodes.preampNode); } else { try{ CiderAudio.audioNodes.gainNode.disconnect(CiderAudio.context.destination);} catch(e){} - CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.audioBands[0]); + CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.preampNode); } + + CiderAudio.audioNodes.preampNode.connect(CiderAudio.audioNodes.audioBands[0]); + for (i = 1; i < BANDS.length; i ++) { CiderAudio.audioNodes.audioBands[i-1].connect(CiderAudio.audioNodes.audioBands[i]); } diff --git a/src/renderer/style.less b/src/renderer/style.less index dd6d3361..33d5e942 100644 --- a/src/renderer/style.less +++ b/src/renderer/style.less @@ -5715,8 +5715,8 @@ body.no-gpu { .modal-window { height: 330px; max-height: 330px; - width: 630px; - max-width: 630px; + width: 720px; + max-width: 720px; overflow: hidden; .info-header { @@ -5761,12 +5761,23 @@ body.no-gpu { } .modal-content{ display: block; + + .inputs-container{ + margin-left: 8px; + } + .input-container{ display: inline-grid; width: 52px; justify-items: center; font-size: 0.7em; } + .input-container.mini{ + display: inline-grid; + width: 43px; + justify-items: center; + font-size: 0.7em; + } .freq-header{ margin-bottom: 2px; } diff --git a/src/renderer/views/components/equalizer.ejs b/src/renderer/views/components/equalizer.ejs index 97211f3d..ee20e848 100644 --- a/src/renderer/views/components/equalizer.ejs +++ b/src/renderer/views/components/equalizer.ejs @@ -8,71 +8,81 @@