默认禁用 使用设备能处理的最大声道数输出音频 设置,修复高级音频API与自定义音频输出设备功能冲突的提示显示

This commit is contained in:
lyswhut
2024-05-02 14:13:16 +08:00
parent 6933baafca
commit ee6a6f4b94
12 changed files with 87 additions and 25 deletions
@@ -36,12 +36,16 @@
<script setup>
import { ref, onMounted, computed } from '@common/utils/vueTools'
import { appSetting, updateSetting } from '@renderer/store/setting'
import { convolutions } from '@renderer/plugins/player'
import { appSetting, saveMediaDeviceId, updateSetting } from '@renderer/store/setting'
import { convolutions, setMediaDeviceId } from '@renderer/plugins/player'
import AddConvolutionPresetBtn from './AddConvolutionPresetBtn.vue'
import { getUserConvolutionPresetList, removeUserConvolutionPreset } from '@renderer/store/soundEffect'
const updateConvolution = val => {
const updateConvolution = async val => {
if (appSetting['player.mediaDeviceId'] != 'default') {
await setMediaDeviceId('default').catch(_ => _)
saveMediaDeviceId('default')
}
const target = convolutions.find(c => c.source == val)
const setting = {
'player.soundEffect.convolution.fileName': val,
@@ -61,6 +65,7 @@ const handleUpdateSendGain = (value) => {
}
const handleSetPreset = (item) => {
if (appSetting['player.mediaDeviceId'] != 'default') saveMediaDeviceId('default')
updateSetting({
'player.soundEffect.convolution.fileName': item.source,
'player.soundEffect.convolution.mainGain': item.mainGain,
@@ -27,7 +27,8 @@
<script setup>
// import { reactive } from '@common/utils/vueTools'
import { appSetting, updateSetting } from '@renderer/store/setting'
import { setMediaDeviceId } from '@renderer/plugins/player'
import { appSetting, saveMediaDeviceId, updateSetting } from '@renderer/store/setting'
// const setting = reactive({
// enabled: false,
@@ -35,8 +36,12 @@ import { appSetting, updateSetting } from '@renderer/store/setting'
// speed: 25,
// })
const updateEnabled = (enabled) => {
const updateEnabled = async(enabled) => {
// console.log(enabled)
if (appSetting['player.mediaDeviceId'] != 'default') {
await setMediaDeviceId('default').catch(_ => _)
saveMediaDeviceId('default')
}
updateSetting({ 'player.soundEffect.panner.enable': enabled })
}
@@ -25,14 +25,19 @@
<script setup>
import { onMounted, ref } from '@common/utils/vueTools'
import { freqs, freqsPreset } from '@renderer/plugins/player'
import { appSetting, updateSetting } from '@renderer/store/setting'
import { freqs, freqsPreset, setMediaDeviceId } from '@renderer/plugins/player'
import { appSetting, saveMediaDeviceId, updateSetting } from '@renderer/store/setting'
import AddEQPresetBtn from './AddEQPresetBtn.vue'
import { getUserEQPresetList, removeUserEQPreset } from '@renderer/store/soundEffect'
const labels = freqs.map(num => num < 1000 ? num : `${num / 1000}k`)
const handleUpdate = (key, value) => {
const handleUpdate = async(key, value) => {
if (appSetting['player.mediaDeviceId'] != 'default') {
await setMediaDeviceId('default').catch(_ => _)
saveMediaDeviceId('default')
}
value = Math.round(value)
// values[index] = value
updateSetting({ [`player.soundEffect.biquadFilter.hz${key}`]: value })
@@ -23,7 +23,8 @@
<script setup>
import { computed } from '@common/utils/vueTools'
import { appSetting, updateSetting } from '@renderer/store/setting'
import { setMediaDeviceId } from '@renderer/plugins/player'
import { appSetting, saveMediaDeviceId, updateSetting } from '@renderer/store/setting'
// import AddPitchShifterPresetBtn from './AddPitchShifterPresetBtn.vue'
// import { getUserPitchShifterPresetList, removeUserPitchShifterPreset } from '@renderer/store/soundEffect'
// import { semitones } from '@renderer/plugins/player'
@@ -37,7 +38,11 @@ import { appSetting, updateSetting } from '@renderer/store/setting'
const playbackRate = computed(() => appSetting['player.soundEffect.pitchShifter.playbackRate'])
const handleSetPreset = (value) => {
const handleSetPreset = async(value) => {
if (appSetting['player.mediaDeviceId'] != 'default') {
await setMediaDeviceId('default').catch(_ => _)
saveMediaDeviceId('default')
}
updateSetting({ 'player.soundEffect.pitchShifter.playbackRate': value })
}
@@ -48,7 +53,7 @@ const handleSetPreset = (value) => {
const handleUpdatePlaybackRate = (value) => {
value = parseFloat((Math.round(value) / 100).toFixed(2))
handleSetPreset(value)
void handleSetPreset(value)
}
@@ -17,12 +17,13 @@
<BiquadFilter />
</div>
</div>
<p v-if="showTip" :class="$style.tip">{{ $t('player__sound_effect_features_tip') }}</p>
<!-- </main> -->
</material-modal>
</template>
<script setup>
import { ref } from '@common/utils/vueTools'
import { ref, watch } from '@common/utils/vueTools'
// import useNextTogglePlay from '@renderer/utils/compositions/useNextTogglePlay'
// import useToggleDesktopLyric from '@renderer/utils/compositions/useToggleDesktopLyric'
// import { musicInfo, playMusicInfo } from '@renderer/store/player/state'
@@ -33,6 +34,7 @@ import BiquadFilter from './BiquadFilter.vue'
import AudioPanner from './AudioPanner.vue'
import AudioConvolution from './AudioConvolution.vue'
import PitchShifter from './PitchShifter.vue'
import { appSetting } from '@renderer/store/setting'
defineProps({
teleport: {
@@ -43,6 +45,12 @@ defineProps({
const visible = ref(false)
const showTip = ref(false)
watch(visible, (visible) => {
if (visible) showTip.value = appSetting['player.mediaDeviceId'] != 'default'
})
</script>
@@ -134,4 +142,12 @@ const visible = ref(false)
padding: 0 10px;
}
.tip {
padding: 0 15px 15px;
margin-top: 5px;
font-size: 12px;
line-height: 1.25;
color: var(--color-font);
}
</style>
@@ -80,8 +80,8 @@ export default {
confirmButtonText: t('confirm_button_text'),
})
if (!confirm) return
saveMediaDeviceId('default')
await setMediaDeviceId('default').catch(_ => _)
saveMediaDeviceId('default')
}
setEnableAudioVisualization(newSetting)
}