#cue #sound #script #running #playback #script-file #cues

app encue

一个用于运行剧院音效提示的TUI程序

1个不稳定版本

0.1.0 2023年9月10日

#650 in 音频

MIT/Apache

51KB
1.5K SLoC

Encue

Encue(发音为"on cue")是一个基于TUI的简单应用程序,用于运行音效提示。它主要设计用于剧院环境。

Encue从应用程序工作目录中存储的“脚本”中获取音效提示。此脚本应是一个名为script.yaml的YAML文件,并包含引用相对于工作目录的音频文件的提示。

定义提示

脚本最重要的字段是cues字段,它包含文件中所有提示的有序列表。

提示包含以下字段

- label: ...        # A unique identifier for this cue used by other cues to reference this one
  description: ...  # OPTIONAL: a short description of the cue to display to the user
  hint: ...         # OPTIONAL: the line or visual cue that signals this cue
  # ACTION: see below

提示动作

除了上述字段外,每个提示还必须包含一个动作指令。动作指令通常具有简短形式,带有单个参数,以及具有更多高级参数的长形式。

可能的动作指令包括

playback: <filename>  # Play the file at `filename`
# OR
playback:
  file: <filename>
  volume: <x>       # Volume (0-100) to start at (default: 100)
  duration: <x>     # OPTIONAL: only play the first `x` seconds of the file
  fade_in: <x>      # OPTIONAL: fade in for `x` seconds

playlist: <folder>  # Play all files in `folder` as a playlist
# OR
playlist:
  folder: ...
  files:                  # OPTIONAL: list of files to play
    - ...
    - ...                 # Must specify at least one of `files` and `folder`
    - ...
  volume: ...             # Volume (0-100) to start at (default: 100)
  loop: <true|false>      # Loop playlist (default: false)
  shuffle: <true|false>   # Shuffle files in playlist (default: false)

fade: <target>      # fade cue <target>
# OR
fade:
  target: <target>
  volume: ...       # Volume (0-100) to fade to (default: 0)
  duration: ...     # Number of seconds to fade (default: 5)

stop: <target>      # immediately stop target cue

示例脚本文件

以下是一个有效的脚本文件的示例

cues:
- label: SQ1
  description: my first sound cue
  playback: my_sound_cue.mp3
- label: SQ2
  description: fade out my first sound cue
  fade:
    target: SQ1
    duration: 20

计划功能

encue正在作为一个爱好/副项目积极开发。以下是我想尽快实现的一些功能

额外的UI元素

  • 音频可视化器
  • 时钟
  • 包含进度条的活跃播放提示列表
  • 显示提示加载状态
  • 通过标签跳转到提示

额外的提示参数

  • 播放列表中文件之间的淡入淡出
  • 在设置的时间后淡出播放提示

依赖关系

~18–50MB
~614K SLoC