Skip to content

Commit e8b6287

Browse files
authored
Merge pull request #127 from kyv001/reverse-spectrum-setting
feat: 频谱频率方向设置
2 parents 3a553ec + 36d3e16 commit e8b6287

6 files changed

Lines changed: 25 additions & 2 deletions

File tree

src/components/player/FullPlayer/BottomSpectrum.vue

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,15 @@ const draw = (): void => {
102102
}
103103
// 直接写入预分配缓冲区,避免 RAF 热路径产生临时数组
104104
const channelLength = FFT_SIZE - SKIP_LOW;
105+
const reverse = settings.player.reverseSpectrum;
105106
for (let i = 0; i < channelLength; i++) {
106-
stereoDisplay[i] = display[0][FFT_SIZE - 1 - i];
107-
stereoDisplay[channelLength + i] = display[1][SKIP_LOW + i];
107+
if (reverse) {
108+
stereoDisplay[channelLength + i] = display[0][FFT_SIZE - 1 - i];
109+
stereoDisplay[i] = display[1][SKIP_LOW + i];
110+
} else {
111+
stereoDisplay[i] = display[0][FFT_SIZE - 1 - i];
112+
stereoDisplay[channelLength + i] = display[1][SKIP_LOW + i];
113+
}
108114
}
109115
110116
const cssWidth = canvas.clientWidth;

src/i18n/locales/en-US.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -855,6 +855,10 @@
855855
"label": "Bar Width",
856856
"description": "Smaller values give thinner, denser bars"
857857
},
858+
"reverseSpectrum": {
859+
"label": "Reverse Spectrum",
860+
"description": "When enabled, the frequency of the bars decreases from the center toward the sides; otherwise it increases."
861+
},
858862
"lyricSourcePreference": {
859863
"label": "Lyric Source Preference",
860864
"description": "Platform priority when matching online lyrics",

src/i18n/locales/zh-CN.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -843,6 +843,10 @@
843843
"label": "频谱条宽度",
844844
"description": "数值越小柱条越细越密"
845845
},
846+
"reverseSpectrum": {
847+
"label": "频谱反向",
848+
"description": "启用后频率从中间向两侧递减,否则递增"
849+
},
846850
"lyricSourcePreference": {
847851
"label": "歌词来源偏好",
848852
"description": "匹配在线歌词时的平台优先级",

src/settings/categories/player.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,12 @@ const playerCategory: SettingCategory = {
260260
defaultValue: 4,
261261
marks: { 1: "1", 4: "4", 8: "8", 12: "12" },
262262
},
263+
{
264+
key: "reverseSpectrum",
265+
type: "switch",
266+
binding: { store: "settings", path: "player.reverseSpectrum" },
267+
defaultValue: false,
268+
},
263269
],
264270
},
265271
],

src/stores/settings.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ export const useSettingsStore = defineStore(
6464
pauseOnDeviceSwitch: false,
6565
enableSpectrum: false,
6666
spectrumBarWidth: 4,
67+
reverseSpectrum: false,
6768
songLevel: "hq",
6869
allowTrialPlay: false,
6970
timeFormat: "current-total",

src/types/settings.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@ export interface PlayerSettings {
182182
enableSpectrum: boolean;
183183
/** 频谱单条宽度(px) */
184184
spectrumBarWidth: number;
185+
/** 是否反转频谱方向(启用后低频位于频谱两端) */
186+
reverseSpectrum: boolean;
185187
/** 在线歌曲音质偏好;实际可用级别取决于账号权限 */
186188
songLevel: QualityLevel;
187189
/** 允许完整音源不可用时播放试听片段 */

0 commit comments

Comments
 (0)