mirror of
https://github.com/Boof2015/prism.git
synced 2026-08-20 20:39:59 +02:00
initial concept
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
export type LUFSMeterMode = 'bar'
|
||||
|
||||
export const LUFS_METER_MODES: readonly LUFSMeterMode[] = ['bar']
|
||||
|
||||
export const DEFAULT_LUFS_METER_MODE: LUFSMeterMode = 'bar'
|
||||
|
||||
export function isLUFSMeterMode(value: unknown): value is LUFSMeterMode {
|
||||
return typeof value === 'string' && LUFS_METER_MODES.includes(value as LUFSMeterMode)
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
export type ScopeKind = 'spectrum' | 'oscilloscope' | 'vectorscope' | 'spectrogram' | 'vumeter' | 'lufsmeter' | 'waveform'
|
||||
|
||||
export const SCOPE_KINDS: ScopeKind[] = [
|
||||
'spectrum',
|
||||
'oscilloscope',
|
||||
'vectorscope',
|
||||
'spectrogram',
|
||||
'vumeter',
|
||||
'lufsmeter',
|
||||
'waveform',
|
||||
]
|
||||
@@ -0,0 +1,38 @@
|
||||
export type SpectrogramClarityMode = 'classic' | 'sharp' | 'sharper'
|
||||
export type SpectrogramScaleMode = 'mel' | 'log' | 'linear'
|
||||
|
||||
export const SPECTROGRAM_CLARITY_MODES: readonly SpectrogramClarityMode[] = [
|
||||
'classic',
|
||||
'sharp',
|
||||
'sharper',
|
||||
]
|
||||
export const SPECTROGRAM_SCALE_MODES: readonly SpectrogramScaleMode[] = [
|
||||
'mel',
|
||||
'log',
|
||||
'linear',
|
||||
]
|
||||
|
||||
export const DEFAULT_SPECTROGRAM_CLARITY_MODE: SpectrogramClarityMode = 'sharper'
|
||||
export const DEFAULT_SPECTROGRAM_SCALE_MODE: SpectrogramScaleMode = 'log'
|
||||
export const MIN_SPECTROGRAM_SCROLL_SPEED = 0.5
|
||||
export const MAX_SPECTROGRAM_SCROLL_SPEED = 4
|
||||
export const SPECTROGRAM_SCROLL_SPEED_STEP = 0.5
|
||||
export const DEFAULT_SPECTROGRAM_SCROLL_SPEED = 2
|
||||
|
||||
export function isSpectrogramClarityMode(value: unknown): value is SpectrogramClarityMode {
|
||||
return typeof value === 'string' && SPECTROGRAM_CLARITY_MODES.includes(value as SpectrogramClarityMode)
|
||||
}
|
||||
|
||||
export function isSpectrogramScaleMode(value: unknown): value is SpectrogramScaleMode {
|
||||
return typeof value === 'string' && SPECTROGRAM_SCALE_MODES.includes(value as SpectrogramScaleMode)
|
||||
}
|
||||
|
||||
export function clampSpectrogramScrollSpeed(value: unknown): number {
|
||||
const numeric = Number(value)
|
||||
if (!Number.isFinite(numeric)) {
|
||||
return DEFAULT_SPECTROGRAM_SCROLL_SPEED
|
||||
}
|
||||
|
||||
const snapped = Math.round(numeric / SPECTROGRAM_SCROLL_SPEED_STEP) * SPECTROGRAM_SCROLL_SPEED_STEP
|
||||
return Math.min(MAX_SPECTROGRAM_SCROLL_SPEED, Math.max(MIN_SPECTROGRAM_SCROLL_SPEED, snapped))
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
export const DEFAULT_SPECTRUM_TILT_DB_PER_OCTAVE = 2.0
|
||||
export const MIN_SPECTRUM_TILT_DB_PER_OCTAVE = -2.0
|
||||
export const MAX_SPECTRUM_TILT_DB_PER_OCTAVE = 8.0
|
||||
export const SPECTRUM_TILT_STEP = 0.1
|
||||
|
||||
export const DEFAULT_SPECTRUM_HEATMAP_TILT_DB_PER_OCTAVE = 2.0
|
||||
export const MIN_SPECTRUM_HEATMAP_TILT_DB_PER_OCTAVE = -2.0
|
||||
export const MAX_SPECTRUM_HEATMAP_TILT_DB_PER_OCTAVE = 8.0
|
||||
export const SPECTRUM_HEATMAP_TILT_STEP = 0.1
|
||||
|
||||
export function clampSpectrumTiltDbPerOctave(value: unknown): number {
|
||||
const numeric = Number(value)
|
||||
if (!Number.isFinite(numeric)) {
|
||||
return DEFAULT_SPECTRUM_TILT_DB_PER_OCTAVE
|
||||
}
|
||||
|
||||
const snapped = Math.round(numeric / SPECTRUM_TILT_STEP) * SPECTRUM_TILT_STEP
|
||||
const rounded = Math.round(snapped * 10) / 10
|
||||
return Math.min(
|
||||
MAX_SPECTRUM_TILT_DB_PER_OCTAVE,
|
||||
Math.max(MIN_SPECTRUM_TILT_DB_PER_OCTAVE, rounded)
|
||||
)
|
||||
}
|
||||
|
||||
export function clampSpectrumHeatmapTiltDbPerOctave(value: unknown): number {
|
||||
const numeric = Number(value)
|
||||
if (!Number.isFinite(numeric)) {
|
||||
return DEFAULT_SPECTRUM_HEATMAP_TILT_DB_PER_OCTAVE
|
||||
}
|
||||
|
||||
const snapped = Math.round(numeric / SPECTRUM_HEATMAP_TILT_STEP) * SPECTRUM_HEATMAP_TILT_STEP
|
||||
const rounded = Math.round(snapped * 10) / 10
|
||||
return Math.min(
|
||||
MAX_SPECTRUM_HEATMAP_TILT_DB_PER_OCTAVE,
|
||||
Math.max(MIN_SPECTRUM_HEATMAP_TILT_DB_PER_OCTAVE, rounded)
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
export type VUMeterMode = 'needle' | 'bar'
|
||||
export type VUMeterOrientation = 'horizontal' | 'vertical'
|
||||
|
||||
export const VU_METER_MODES: readonly VUMeterMode[] = ['needle', 'bar']
|
||||
export const VU_METER_ORIENTATIONS: readonly VUMeterOrientation[] = ['horizontal', 'vertical']
|
||||
|
||||
export const DEFAULT_VU_METER_MODE: VUMeterMode = 'bar'
|
||||
export const DEFAULT_VU_METER_ORIENTATION: VUMeterOrientation = 'horizontal'
|
||||
|
||||
export function isVUMeterMode(value: unknown): value is VUMeterMode {
|
||||
return typeof value === 'string' && VU_METER_MODES.includes(value as VUMeterMode)
|
||||
}
|
||||
|
||||
export function isVUMeterOrientation(value: unknown): value is VUMeterOrientation {
|
||||
return typeof value === 'string' && VU_METER_ORIENTATIONS.includes(value as VUMeterOrientation)
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
export const MIN_WAVEFORM_SCROLL_SPEED = 0.5
|
||||
export const MAX_WAVEFORM_SCROLL_SPEED = 8
|
||||
export const WAVEFORM_SCROLL_SPEED_STEP = 0.5
|
||||
export const DEFAULT_WAVEFORM_SCROLL_SPEED = 1
|
||||
export const MIN_WAVEFORM_GAIN_DB = -12
|
||||
export const MAX_WAVEFORM_GAIN_DB = 18
|
||||
export const WAVEFORM_GAIN_DB_STEP = 0.5
|
||||
export const DEFAULT_WAVEFORM_GAIN_DB = 0
|
||||
|
||||
export function clampWaveformScrollSpeed(value: unknown): number {
|
||||
const numeric = Number(value)
|
||||
if (!Number.isFinite(numeric)) {
|
||||
return DEFAULT_WAVEFORM_SCROLL_SPEED
|
||||
}
|
||||
|
||||
const snapped = Math.round(numeric / WAVEFORM_SCROLL_SPEED_STEP) * WAVEFORM_SCROLL_SPEED_STEP
|
||||
return Math.min(MAX_WAVEFORM_SCROLL_SPEED, Math.max(MIN_WAVEFORM_SCROLL_SPEED, snapped))
|
||||
}
|
||||
|
||||
export function clampWaveformGainDb(value: unknown): number {
|
||||
const numeric = Number(value)
|
||||
if (!Number.isFinite(numeric)) {
|
||||
return DEFAULT_WAVEFORM_GAIN_DB
|
||||
}
|
||||
|
||||
const snapped = Math.round(numeric / WAVEFORM_GAIN_DB_STEP) * WAVEFORM_GAIN_DB_STEP
|
||||
const rounded = Math.round(snapped * 10) / 10
|
||||
return Math.min(MAX_WAVEFORM_GAIN_DB, Math.max(MIN_WAVEFORM_GAIN_DB, rounded))
|
||||
}
|
||||
Reference in New Issue
Block a user