deej:基于 Arduino 与 Go 的硬件音量混合器项目

Set app volumes with real sliders! deej is an Arduino & Go project to let you build your own hardware mixer for Windows and Linux

分支2Tags10
文件最后提交记录最后更新时间
5 年前
6 年前
5 年前
5 年前
5 年前
5 年前
6 年前
5 年前
5 年前
5 年前
5 年前
5 年前

deej

deej是一款专为Windows和Linux个人电脑设计的开源硬件音量混音器。它让你能够像DJ一样使用真实的推杆滑块,无缝地控制不同应用程序(如音乐播放器、游戏和语音聊天)的音量,无需中断你的工作。

如果你需要帮助或有任何问题,请加入deej Discord服务器

Discord

新功能: 进行中的deej常见问题解答(FAQ)!

deej由一个用Go编写的轻量化桌面客户端组成,以及基于Arduino的简单且经济实惠的硬件搭建方案。查看我们社区成员构建的一些版本!

下载最新发布版 | 视频演示 | Tech Always的建造视频

deej

悄悄话: 没有3D打印机?没问题!你可以用纸板、鞋盒甚至面包板来建造deej哦! :)

目录

特性

deej使用Go编写,并以便携式执行文件形式发布,不需要安装程序。

  • 将应用程序绑定到不同的推杆滑块
    • 同一推杆可绑定多个应用(例如所有游戏)
    • 绑定主通道
    • 绑定“系统声音”(在Windows上)
    • 通过名称绑定特定音频设备(在Windows上)
    • 绑定当前活动的应用(在Windows上)
    • 绑定其他未分配的所有应用
  • 控制麦克风输入电平
  • 轻量级桌面客户端,内存占用约10MB
  • 从系统托盘运行
  • 提供有用的通知,以便在出现问题时通知你

寻找旧版Python版本吗? 它已不再维护,但你可以在legacy-python分支中找到它:https://github.com/omriharel/deej/tree/legacy-python

工作原理

硬件

  • 推杆滑块连接到Arduino Nano/Uno主板上的5个(或任意数量)模拟引脚。它们从主板的5V输出供电(见电路图)
  • 主板通过USB电缆连接到PC

电路图

硬件电路图

软件

  • 在Arduino主板上运行的代码是C语言程序,不断地通过串口接口写入当前推杆值。
  • PC后台运行一个轻量级Go客户端。该客户端读取串行流并根据给定的配置文件调整应用音量。

推杆映射(配置)

deej使用名为config.yaml的简单YAML格式配置文件,与deej可执行文件放在一起。

配置文件确定哪些应用程序(和设备)映射到哪个推杆,以及用于连接Arduino主板的参数以及其他用户偏好设置。

当其内容更改时,此文件会自动重新加载,因此你可以在不重启deej的情况下动态更改应用程序映射。

如下所示:

slider_mapping:
  0: master
  1: chrome.exe
  2: spotify.exe
  3:
    - pathofexile_x64.exe
    - rocketleague.exe
  4: discord.exe

# 如果希望控制器反转(即顶部为0%,底部为100%),将此设置为true
invert_sliders: false

# 用于连接到arduino板的设置
com_port: COM4
baud_rate: 9600

# 根据硬件质量调整信号噪声抑制程度
# 支持的值有 "low"(优质硬件)、"default"(常规硬件) 或 "high"(差、噪声大的硬件)
noise_reduction: default
  • master是特殊选项,用于控制系统的主音量(使用默认播放设备)
  • mic是特殊选项,用于控制麦克风的输入电平(使用默认录音设备)
  • deej.unmapped是特殊选项,用于控制未绑定到任何推杆的所有应用(“其他所有应用”)
  • 在Windows上,deej.current是特殊选项,用于控制当前焦点应用的音量
  • 在Windows上,你可以指定设备的完整名称,例如Speakers (Realtek High Definition Audio),将其音量级别绑定到推杆。这不会与默认的mastermic选项冲突,适用于输入和输出设备。
    • 确保使用菜单中左键单击任务栏扬声器图标时显示的完整设备名称
  • 所有名称大小写不敏感,意味着chrome.exeCHROME.exe都会生效
  • 你可以创建进程名列表(使用数组)来:
    • 使用一个推杆控制多个应用
    • 选择群组中当前正在运行的任何进程(例如让一个推杆控制你在玩的任何游戏)

自己动手做!

建造deej非常简单。你需要一些相对便宜的零件——这是一个很好的入门项目(也是我个人的第一个Arduino项目)。记住,如果你需要帮助或有未在此解答的问题,你总是可以加入deej Discord服务器

为自己建造deej,或者作为送给你的游戏伙伴的超棒礼物!

常见问题

我开始努力编写一个关于deej的详细FAQ页面,涵盖了许多基本和高级主题。

目前仍然_非常初步_,但我很高兴分享它现在的样子,希望能解答你的一些疑问。

鼓励在我们的社区Discord提供FAQ反馈哦!

建造视频

如果你喜欢看视频而不是阅读,来自YouTube频道Tech Always的Charles制作了一个出色的视频,涵盖了自己建造deej的基础知识,包括零件、成本、组装和软件。强烈推荐观看!

材料清单

  • 一块Arduino Nano、Pro Micro或Uno主板
    • 我官方建议使用Nano或Pro Micro,因为它们体积更小,USB连接器更友好,有更多的模拟引脚。而且它们更便宜
    • 你也可以使用任何具有Serial over USB接口的开发板
  • 几个推杆电位器,最多不超过你自由模拟引脚的数量(较便宜的那种每个大约1-2美元,通常带有标准的10K欧姆变阻器。这些对于这个项目来说应该工作得很好)
    • 重要提示: 请确保获取线性推杆,而不是对数推杆!检查产品描述
    • 你也可以使用圆形旋钮,如果你喜欢的话
  • 一些电线
  • 任何类型的盒子来把所有东西装在一起。这个项目不需要3D打印机! 只用一片纸板或一只鞋盒就可以很好地完成工作。话虽如此,如果你有3D打印机,继续阅读...

Thingiverse集合

随着众多不同的3D打印设计加入我们的社区展示区,我们觉得创建一个Thingiverse收藏集供您浏览是合适的。如果你有一台3D打印机,欢迎使用其中的设计来构建你的项目。

访问我们在Thingiverse上的社区创作设计集合!

你也可以提交你自己的设计以添加到收藏集中。无论如何,如果你把你的设计上传到Thingiverse,请给它加上一个deej标签,以便其他人更容易找到

搭建流程

  1. 根据schematic连接所有部件。
  2. 使用多用表测试确认滑块已正确连接。
  3. 将Arduino芯片刷入arduino\deej-5-sliders-vanilla中的草图。
    • 重要: 如果你的滑块数量多于或少于5个,必须编辑草图以匹配你的配置。
  4. 刷机后,检查串行监视器。你应该能看到由竖线字符(|)分隔的持续值流,例如:0|240|1023|0|483
    • 当你移动滑块时,其对应的值应在0和1023之间变化。
  5. 恭喜,你现在可以运行deej可执行文件了!

如何运行

需求

Windows

  • Windows操作系统

Linux

  • 安装libgtk-3-devlibappindicator3-devlibwebkit2gtk-4.0-dev以支持系统托盘。目前未发布预编译的Linux二进制文件,所以你需要从源代码自行构建。如果有对预编译版本的需求,请告诉我

下载与安装

  1. 转至发行版页面,下载最新版本的可执行文件和配置文件(deej.execonfig.yaml)。
  2. 将它们放在电脑上的同一目录下。
  3. (可选,Windows用户)创建deej.exe快捷方式并复制到%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup,让deej在启动时运行。

从源代码构建

如果你不想下载编译好的可执行文件,或者想扩展或根据需要修改deej,可以克隆仓库并自己构建。你只需要一台装有Go 1.14(或更高版本)环境的电脑。如果选择这条路,请务必查看pkg/deej脚本

和其他Go包一样,你也可以使用go get工具:go get -u github.com/omriharel/deej。请注意,现在代码包位于pkg/deej目录中,在其他项目中导入时需要从此处导入。

如需帮助,敬请加入我们的Discord服务器

社区

Discord

虽然deej是一个相对较新的项目,但一个充满活力和创意的社区正在迅速发展。欢迎加入deej Discord服务器,或在社区展示中查看我们成员创造的一系列酷炫创新的搭建作品。

服务器也是提问、建议功能或报告问题的好地方(当然,你也可以选择在GitHub上操作)。

捐赠

如果你热爱deej并希望支持这个项目,可以通过以下链接进行捐赠。请不要感到有义务捐款——构建项目并与朋友分享同样意义重大!非常感谢。

ko-fi

贡献

请参阅docs/CONTRIBUTING.md

许可证

deej遵循MIT许可证

项目介绍

使用真实的滑块来设置应用程序音量!deej 是一个结合了 Arduino 与 Go 语言的项目,让您能够为 Windows 和 Linux 系统打造专属的硬件混音器。【此简介由AI生成】

定制我的领域
695.51 K569访问 GitHub