mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-21 22:15:40 +00:00
feat(playback): Semitones strategy, 2-decimal speed label, advanced fine steps (#1084)
* feat(playback): varispeed-by-semitones strategy and 2-decimal speed label Adds a fourth playback-rate strategy "Varispeed (semitones)" — a frontend lens over varispeed where the user dials the pitch change directly in semitones (±12 st, 0.1 step) and speed = 2^(st/12). Engine contract is unchanged: the store maps it to the existing "varispeed" Rust strategy via engineStrategy(), and switching between the two varispeed lenses at the same speed no longer restarts the track. Also widens the speed readout to two decimals (formatSpeedLabel → toFixed(2)) so every 0.05 slider step is visible (1.05×, 1.10×, 1.15×), addressing the feedback on issue #531 that the label looked stuck between steps. Includes new i18n keys and updated hint across all 9 locales, plus Vitest coverage for the new helper, label formatting, and the no-restart lens switch. * refactor(playback): shorten Semitones strategy label, add per-strategy tooltips Renames the fourth strategy to a concise "Semitones" (was "Varispeed (semitones)") across all 9 locales, and lets the four strategy buttons share the row width so they fit on one line in Settings while still wrapping in the narrow player popover. Each strategy button now has a short hover tooltip explaining how it is built (incl. the 2^(st/12) and 12 × log2(speed) maths). * feat(playback): advanced fine-step precision for speed/pitch sliders Adds an opt-in "Fine adjustment" toggle in Settings → Audio (visible only in Advanced mode) that shrinks the playback-rate slider steps to 0.01× for speed and 0.01 st for pitch/semitones, with the pitch readout widening to two decimals to match. Default behaviour (0.05× / 0.1 st) is unchanged. The preference is UI-only (persisted, not sent to the engine) and also applies to the player-bar popover and wheel. Addresses the finer-precision request on issue #531 without cluttering the default UX. * docs: changelog and credits for playback speed follow-up (PR #1084)
This commit is contained in:
@@ -448,12 +448,20 @@ export const settings = {
|
||||
playbackRateStrategy: 'Strategie',
|
||||
playbackRateStrategySpeed: 'Geschwindigkeit',
|
||||
playbackRateStrategyVarispeed: 'Tonhöhe folgt dem Tempo',
|
||||
playbackRateStrategyVarispeedSemitones: 'Halbtöne',
|
||||
playbackRateStrategyPreserve: 'Tonhöhe',
|
||||
playbackRateStrategySpeedTip: 'Ändert das Tempo; die Tonhöhe wird automatisch korrigiert.',
|
||||
playbackRateStrategyVarispeedTip: 'Geschwindigkeit und Tonhöhe ändern sich gemeinsam, wie bei Tonband. Tonhöhe aus Geschwindigkeit: 12 × log2(Geschwindigkeit).',
|
||||
playbackRateStrategyVarispeedSemitonesTip: 'Wie „Tonhöhe folgt dem Tempo“, aber direkt in Halbtönen eingestellt. Geschwindigkeit = 2^(Ht/12).',
|
||||
playbackRateStrategyPreserveTip: 'Einstellbares Tempo plus manuelle Tonhöhenverschiebung (±12 Ht).',
|
||||
playbackRateSpeed: 'Geschwindigkeit',
|
||||
playbackRatePitch: 'Tonhöhe',
|
||||
playbackRateDerivedPitch: 'Tonhöhenverschiebung durch Geschwindigkeit: {{value}}',
|
||||
playbackRateDerivedSpeed: 'Geschwindigkeit aus Halbtönen: {{value}}',
|
||||
playbackRateFineStep: 'Feinabstimmung',
|
||||
playbackRateFineStepDesc: 'Kleinere Schieberegler-Schritte: 0,01× für Geschwindigkeit und 0,01 Ht für Tonhöhe.',
|
||||
playbackRateAutoPitch: 'Die Tonhöhe wird automatisch korrigiert.',
|
||||
playbackRateHint: '„Geschwindigkeit“ behält die Tonhöhe bei. „Tonhöhe folgt dem Tempo“ verschiebt die Tonhöhe mit der Geschwindigkeit. „Tonhöhe“ fügt eine manuelle Verschiebung hinzu. Höhere CPU-Last als bei „Tonhöhe folgt dem Tempo“. Nicht für Radio, Vorschau oder Orbit.',
|
||||
playbackRateHint: '„Geschwindigkeit“ behält die Tonhöhe bei. „Tonhöhe folgt dem Tempo“ verschiebt die Tonhöhe mit der Geschwindigkeit. „Tonhöhe folgt dem Tempo (Halbtöne)“ stellt diese Tonhöhenänderung direkt in Halbtönen ein. „Tonhöhe“ fügt eine manuelle Verschiebung hinzu. Höhere CPU-Last als bei „Tonhöhe folgt dem Tempo“. Nicht für Radio, Vorschau oder Orbit.',
|
||||
playbackRateNeutral: 'Bei 1,0× und ohne Tonverschiebung ist die Wiedergabe normal.',
|
||||
playbackRateOrbitPaused: 'Während Orbit-Sessions nicht aktiv — Wiedergabe bleibt bei 1,0× für die Synchronisation.',
|
||||
playbackRateOrbitPausedShort: 'Orbit: 1,0× für Sync.',
|
||||
|
||||
Reference in New Issue
Block a user