Add audio sources as first-class entities, add mapped CSS type, simplify target editor for mapped sources
- Audio sources moved to separate tab with dedicated CRUD API, store, and editor modal - New "mapped" color strip source type: assigns different CSS sources to distinct LED sub-ranges (zones) - Mapped stream runtime with per-zone sub-streams, auto-sizing, hot-update support - Target editor auto-collapses segments UI when mapped CSS is selected - Delete protection for CSS sources referenced by mapped zones - Compact header/footer layout Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -249,6 +249,7 @@
|
||||
"streams.description": "Sources define the capture pipeline. A raw source captures from a display using a capture template. A processed source applies postprocessing to another source. Assign sources to devices.",
|
||||
"streams.group.raw": "Screen Capture",
|
||||
"streams.group.processed": "Processed",
|
||||
"streams.group.audio": "Audio",
|
||||
"streams.section.streams": "\uD83D\uDCFA Sources",
|
||||
"streams.add": "Add Source",
|
||||
"streams.add.raw": "Add Screen Capture",
|
||||
@@ -365,6 +366,7 @@
|
||||
"targets.device.hint": "Select the LED device to send data to",
|
||||
"targets.device.none": "-- Select a device --",
|
||||
"targets.segments": "Segments:",
|
||||
"targets.color_strip_source": "Color Strip Source:",
|
||||
"targets.segments.hint": "Each segment maps a color strip source to a pixel range on the LED strip. Gaps between segments stay black. A single segment with Start=0, End=0 auto-fits to the full strip.",
|
||||
"targets.segments.add": "+ Add Segment",
|
||||
"targets.segment.start": "Start:",
|
||||
@@ -652,6 +654,8 @@
|
||||
"color_strip.type.effect.hint": "Procedural LED effects (fire, meteor, plasma, noise, aurora) generated in real time.",
|
||||
"color_strip.type.composite": "Composite",
|
||||
"color_strip.type.composite.hint": "Stack multiple color strip sources as layers with blend modes and opacity.",
|
||||
"color_strip.type.mapped": "Mapped",
|
||||
"color_strip.type.mapped.hint": "Assign different color strip sources to different LED ranges (zones). Unlike composite which blends layers, mapped places sources side-by-side.",
|
||||
"color_strip.type.audio": "Audio Reactive",
|
||||
"color_strip.type.audio.hint": "LED colors driven by real-time audio input — system audio or microphone.",
|
||||
"color_strip.composite.layers": "Layers:",
|
||||
@@ -668,18 +672,22 @@
|
||||
"color_strip.composite.error.min_layers": "At least 1 layer is required",
|
||||
"color_strip.composite.error.no_source": "Each layer must have a source selected",
|
||||
"color_strip.composite.layers_count": "layers",
|
||||
"color_strip.mapped.zones": "Zones:",
|
||||
"color_strip.mapped.zones.hint": "Each zone maps a color strip source to a specific LED range. Zones are placed side-by-side — gaps between zones stay black.",
|
||||
"color_strip.mapped.add_zone": "+ Add Zone",
|
||||
"color_strip.mapped.zone_source": "Source",
|
||||
"color_strip.mapped.zone_start": "Start LED",
|
||||
"color_strip.mapped.zone_end": "End LED",
|
||||
"color_strip.mapped.zone_reverse": "Reverse",
|
||||
"color_strip.mapped.zones_count": "zones",
|
||||
"color_strip.mapped.error.no_source": "Each zone must have a source selected",
|
||||
"color_strip.audio.visualization": "Visualization:",
|
||||
"color_strip.audio.visualization.hint": "How audio data is rendered to LEDs.",
|
||||
"color_strip.audio.viz.spectrum": "Spectrum Analyzer",
|
||||
"color_strip.audio.viz.beat_pulse": "Beat Pulse",
|
||||
"color_strip.audio.viz.vu_meter": "VU Meter",
|
||||
"color_strip.audio.device": "Audio Device:",
|
||||
"color_strip.audio.device.hint": "Audio input source. Loopback devices capture system audio output; input devices capture microphone or line-in.",
|
||||
"color_strip.audio.channel": "Channel:",
|
||||
"color_strip.audio.channel.hint": "Select which audio channel to visualize. Use Left/Right for stereo setups.",
|
||||
"color_strip.audio.channel.mono": "Mono (L+R mix)",
|
||||
"color_strip.audio.channel.left": "Left",
|
||||
"color_strip.audio.channel.right": "Right",
|
||||
"color_strip.audio.source": "Audio Source:",
|
||||
"color_strip.audio.source.hint": "Mono audio source that provides audio data for this visualization. Create and manage audio sources in the Sources tab.",
|
||||
"color_strip.audio.sensitivity": "Sensitivity:",
|
||||
"color_strip.audio.sensitivity.hint": "Gain multiplier for audio levels. Higher values make LEDs react to quieter sounds.",
|
||||
"color_strip.audio.smoothing": "Smoothing:",
|
||||
@@ -723,5 +731,39 @@
|
||||
"color_strip.palette.rainbow": "Rainbow",
|
||||
"color_strip.palette.aurora": "Aurora",
|
||||
"color_strip.palette.sunset": "Sunset",
|
||||
"color_strip.palette.ice": "Ice"
|
||||
"color_strip.palette.ice": "Ice",
|
||||
|
||||
"audio_source.title": "Audio Sources",
|
||||
"audio_source.group.multichannel": "Multichannel",
|
||||
"audio_source.group.mono": "Mono",
|
||||
"audio_source.add": "Add Audio Source",
|
||||
"audio_source.add.multichannel": "Add Multichannel Source",
|
||||
"audio_source.add.mono": "Add Mono Source",
|
||||
"audio_source.edit": "Edit Audio Source",
|
||||
"audio_source.edit.multichannel": "Edit Multichannel Source",
|
||||
"audio_source.edit.mono": "Edit Mono Source",
|
||||
"audio_source.name": "Name:",
|
||||
"audio_source.name.placeholder": "System Audio",
|
||||
"audio_source.name.hint": "A descriptive name for this audio source",
|
||||
"audio_source.type": "Type:",
|
||||
"audio_source.type.hint": "Multichannel captures all channels from a physical audio device. Mono extracts a single channel from a multichannel source.",
|
||||
"audio_source.type.multichannel": "Multichannel",
|
||||
"audio_source.type.mono": "Mono",
|
||||
"audio_source.device": "Audio Device:",
|
||||
"audio_source.device.hint": "Audio input source. Loopback devices capture system audio output; input devices capture microphone or line-in.",
|
||||
"audio_source.parent": "Parent Source:",
|
||||
"audio_source.parent.hint": "Multichannel source to extract a channel from",
|
||||
"audio_source.channel": "Channel:",
|
||||
"audio_source.channel.hint": "Which audio channel to extract from the multichannel source",
|
||||
"audio_source.channel.mono": "Mono (L+R mix)",
|
||||
"audio_source.channel.left": "Left",
|
||||
"audio_source.channel.right": "Right",
|
||||
"audio_source.description": "Description (optional):",
|
||||
"audio_source.description.placeholder": "Describe this audio source...",
|
||||
"audio_source.description.hint": "Optional notes about this audio source",
|
||||
"audio_source.created": "Audio source created",
|
||||
"audio_source.updated": "Audio source updated",
|
||||
"audio_source.deleted": "Audio source deleted",
|
||||
"audio_source.delete.confirm": "Are you sure you want to delete this audio source?",
|
||||
"audio_source.error.name_required": "Please enter a name"
|
||||
}
|
||||
|
||||
@@ -249,6 +249,7 @@
|
||||
"streams.description": "Источники определяют конвейер захвата. Сырой источник захватывает экран с помощью шаблона захвата. Обработанный источник применяет постобработку к другому источнику. Назначайте источники устройствам.",
|
||||
"streams.group.raw": "Захват Экрана",
|
||||
"streams.group.processed": "Обработанные",
|
||||
"streams.group.audio": "Аудио",
|
||||
"streams.section.streams": "\uD83D\uDCFA Источники",
|
||||
"streams.add": "Добавить Источник",
|
||||
"streams.add.raw": "Добавить Захват Экрана",
|
||||
@@ -365,6 +366,7 @@
|
||||
"targets.device.hint": "Выберите LED устройство для передачи данных",
|
||||
"targets.device.none": "-- Выберите устройство --",
|
||||
"targets.segments": "Сегменты:",
|
||||
"targets.color_strip_source": "Источник цветовой полосы:",
|
||||
"targets.segments.hint": "Каждый сегмент отображает источник цветовой полосы на диапазон пикселей LED ленты. Промежутки между сегментами остаются чёрными. Один сегмент с Начало=0, Конец=0 авто-подгоняется под всю ленту.",
|
||||
"targets.segments.add": "+ Добавить сегмент",
|
||||
"targets.segment.start": "Начало:",
|
||||
@@ -652,6 +654,8 @@
|
||||
"color_strip.type.effect.hint": "Процедурные LED-эффекты (огонь, метеор, плазма, шум, аврора), генерируемые в реальном времени.",
|
||||
"color_strip.type.composite": "Композит",
|
||||
"color_strip.type.composite.hint": "Наложение нескольких источников цветовой ленты как слоёв с режимами смешивания и прозрачностью.",
|
||||
"color_strip.type.mapped": "Маппинг",
|
||||
"color_strip.type.mapped.hint": "Назначает разные источники цветовой полосы на разные диапазоны LED (зоны). В отличие от композита, маппинг размещает источники рядом друг с другом.",
|
||||
"color_strip.type.audio": "Аудиореактив",
|
||||
"color_strip.type.audio.hint": "Цвета LED управляются аудиосигналом в реальном времени — системный звук или микрофон.",
|
||||
"color_strip.composite.layers": "Слои:",
|
||||
@@ -668,18 +672,22 @@
|
||||
"color_strip.composite.error.min_layers": "Необходим хотя бы 1 слой",
|
||||
"color_strip.composite.error.no_source": "Для каждого слоя должен быть выбран источник",
|
||||
"color_strip.composite.layers_count": "слоёв",
|
||||
"color_strip.mapped.zones": "Зоны:",
|
||||
"color_strip.mapped.zones.hint": "Каждая зона привязывает источник цветовой полосы к определённому диапазону LED. Зоны размещаются рядом — промежутки остаются чёрными.",
|
||||
"color_strip.mapped.add_zone": "+ Добавить зону",
|
||||
"color_strip.mapped.zone_source": "Источник",
|
||||
"color_strip.mapped.zone_start": "Начало LED",
|
||||
"color_strip.mapped.zone_end": "Конец LED",
|
||||
"color_strip.mapped.zone_reverse": "Реверс",
|
||||
"color_strip.mapped.zones_count": "зон",
|
||||
"color_strip.mapped.error.no_source": "Для каждой зоны должен быть выбран источник",
|
||||
"color_strip.audio.visualization": "Визуализация:",
|
||||
"color_strip.audio.visualization.hint": "Способ отображения аудиоданных на LED.",
|
||||
"color_strip.audio.viz.spectrum": "Анализатор спектра",
|
||||
"color_strip.audio.viz.beat_pulse": "Пульс бита",
|
||||
"color_strip.audio.viz.vu_meter": "VU-метр",
|
||||
"color_strip.audio.device": "Аудиоустройство:",
|
||||
"color_strip.audio.device.hint": "Источник аудиосигнала. Устройства обратной петли захватывают системный звук; устройства ввода — микрофон или линейный вход.",
|
||||
"color_strip.audio.channel": "Канал:",
|
||||
"color_strip.audio.channel.hint": "Какой аудиоканал визуализировать. Используйте Левый/Правый для стерео-режима.",
|
||||
"color_strip.audio.channel.mono": "Моно (Л+П микс)",
|
||||
"color_strip.audio.channel.left": "Левый",
|
||||
"color_strip.audio.channel.right": "Правый",
|
||||
"color_strip.audio.source": "Аудиоисточник:",
|
||||
"color_strip.audio.source.hint": "Моно-аудиоисточник, предоставляющий аудиоданные для визуализации. Создавайте и управляйте аудиоисточниками на вкладке Источники.",
|
||||
"color_strip.audio.sensitivity": "Чувствительность:",
|
||||
"color_strip.audio.sensitivity.hint": "Множитель усиления аудиосигнала. Более высокие значения делают LED чувствительнее к тихим звукам.",
|
||||
"color_strip.audio.smoothing": "Сглаживание:",
|
||||
@@ -723,5 +731,39 @@
|
||||
"color_strip.palette.rainbow": "Радуга",
|
||||
"color_strip.palette.aurora": "Аврора",
|
||||
"color_strip.palette.sunset": "Закат",
|
||||
"color_strip.palette.ice": "Лёд"
|
||||
"color_strip.palette.ice": "Лёд",
|
||||
|
||||
"audio_source.title": "Аудиоисточники",
|
||||
"audio_source.group.multichannel": "Многоканальные",
|
||||
"audio_source.group.mono": "Моно",
|
||||
"audio_source.add": "Добавить аудиоисточник",
|
||||
"audio_source.add.multichannel": "Добавить многоканальный",
|
||||
"audio_source.add.mono": "Добавить моно",
|
||||
"audio_source.edit": "Редактировать аудиоисточник",
|
||||
"audio_source.edit.multichannel": "Редактировать многоканальный",
|
||||
"audio_source.edit.mono": "Редактировать моно",
|
||||
"audio_source.name": "Название:",
|
||||
"audio_source.name.placeholder": "Системный звук",
|
||||
"audio_source.name.hint": "Описательное имя для этого аудиоисточника",
|
||||
"audio_source.type": "Тип:",
|
||||
"audio_source.type.hint": "Многоканальный захватывает все каналы с аудиоустройства. Моно извлекает один канал из многоканального источника.",
|
||||
"audio_source.type.multichannel": "Многоканальный",
|
||||
"audio_source.type.mono": "Моно",
|
||||
"audio_source.device": "Аудиоустройство:",
|
||||
"audio_source.device.hint": "Источник аудиосигнала. Устройства обратной петли захватывают системный звук; устройства ввода — микрофон или линейный вход.",
|
||||
"audio_source.parent": "Родительский источник:",
|
||||
"audio_source.parent.hint": "Многоканальный источник для извлечения канала",
|
||||
"audio_source.channel": "Канал:",
|
||||
"audio_source.channel.hint": "Какой аудиоканал извлечь из многоканального источника",
|
||||
"audio_source.channel.mono": "Моно (Л+П микс)",
|
||||
"audio_source.channel.left": "Левый",
|
||||
"audio_source.channel.right": "Правый",
|
||||
"audio_source.description": "Описание (необязательно):",
|
||||
"audio_source.description.placeholder": "Опишите этот аудиоисточник...",
|
||||
"audio_source.description.hint": "Необязательные заметки об этом аудиоисточнике",
|
||||
"audio_source.created": "Аудиоисточник создан",
|
||||
"audio_source.updated": "Аудиоисточник обновлён",
|
||||
"audio_source.deleted": "Аудиоисточник удалён",
|
||||
"audio_source.delete.confirm": "Удалить этот аудиоисточник?",
|
||||
"audio_source.error.name_required": "Введите название"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user