用python-rtmidi捕获MIDI键盘的输入,并回放MIDI消息

最近买了一台MIDI键盘,想用MIDI键盘接上电脑当电子琴用,现在可以接MIDI键盘的音乐类软件倒也不少,但可以二次开发的就很少见了。

我想通过编程的方式控制MIDI键盘的输入,发现了一个python库正好满足我的要求。

这个库是 python-rtmidi, rtmidi是C++开发的一个midi工具包,python-rtmidi是对rtmidi的一个轻量级包装。

网址:https://pypi.org/project/python-rtmidi/

我的电脑上安装了python3.7 ,直接执行 pip install python-rtmidi 就OK 了。

结合官网上给的例子,写了一个MIDI键盘输入回放的小程序

#!/usr/bin/env python
#
# loopMidiInput.py
#
"""Show how to receive MIDI input by setting a callback function and send data to midi output ."""

from __future__ import print_function

import logging
import sys
import time
import rtmidi

midiout = rtmidi.MidiOut()
available_ports = midiout.get_ports()

if available_ports:
    midiout.open_port(
PS C:\Windows\system32> pip install pyqt5 mido python-rtmidi pygame reportlab Defaulting to user installation because normal site-packages is not writeable Collecting pyqt5 Using cached PyQt5-5.15.11-cp38-abi3-win_amd64.whl.metadata (2.1 kB) Collecting mido Using cached mido-1.3.3-py3-none-any.whl.metadata (6.4 kB) Collecting python-rtmidi Using cached python_rtmidi-1.5.8.tar.gz (368 kB) Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... error error: subprocess-exited-with-error × Preparing metadata (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [20 lines of output] + meson setup D:\Personal\Temp\pip-install-0i3_jjab\python-rtmidi_454ab6535b594e4ab017408bb4e727b7 D:\Personal\Temp\pip-install-0i3_jjab\python-rtmidi_454ab6535b594e4ab017408bb4e727b7\.mesonpy-q_qt7g_w -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md -Dwheel=true -Dverbose=false -Dbuildtype=plain --native-file=D:\Personal\Temp\pip-install-0i3_jjab\python-rtmidi_454ab6535b594e4ab017408bb4e727b7\.mesonpy-q_qt7g_w\meson-python-native-file.ini The Meson build system Version: 1.7.0 Source dir: D:\Personal\Temp\pip-install-0i3_jjab\python-rtmidi_454ab6535b594e4ab017408bb4e727b7 Build dir: D:\Personal\Temp\pip-install-0i3_jjab\python-rtmidi_454ab6535b594e4ab017408bb4e727b7\.mesonpy-q_qt7g_w Build type: native build Project name: python-rtmidi Project version: 1.5.8 WARNING: Failed to activate VS environment: Could not find C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe ..\meson.build:1:0: ERROR: Unknown compiler(s): [['icl'], ['cl'], ['c++'], ['g++'], ['clang++'], ['clang-cl']] The following exception(s) were encountered: Running `icl ""` gave "[WinError 2] 系统找不到指定的文件。" Running `cl /?` gave "[WinError 2] 系统找不到指定的文件。" Running `c++ --version` gave "[WinError 2] 系统找不到指定的文件。" Running `g++ --version` gave "[WinError 2] 系统找不到指定的文件。" Running `clang++ --version` gave "[WinError 2] 系统找不到指定的文件。" Running `clang-cl /?` gave "[WinError 2] 系统找不到指定的文件。" A full log can be found at D:\Personal\Temp\pip-install-0i3_jjab\python-rtmidi_454ab6535b594e4ab017408bb4e727b7\.mesonpy-q_qt7g_w\meson-logs\meson-log.txt [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed × Encountered error while generating package metadata. ╰─> See above for output. note: This is an issue with the package mentioned above, not pip. hint: See above for details.以上报错原因及解决办法
03-08
<think>嗯,用户遇到了在安装python-rtmidi时的编译错误。首先,我要仔细看看错误信息。错误显示在准备元数据时失败,具体是找不到编译器,比如icl、cl、g++等。这通常意味着系统没有安装必要的编译工具或者环境变量没设置好。 接下来,用户使用的是Windows系统,因为路径里有C:\Windows\system32。Windows下编译Python的C扩展通常需要Visual Studio Build Tools或者MSVC。错误信息里提到找不到vswhere.exe,这可能说明用户没有安装Visual Studio或者相关的构建工具。 然后,检查用户执行的命令是pip install的几个包,其中python-rtmidi需要编译,而其他如pyqt5可能已经提供了预编译的二进制包。所以问题集中在python-rtmidi的安装上。 可能的解决办法包括安装Visual Studio Build Tools,特别是C++的桌面开发组件。另外,可能需要升级setuptools和wheel,或者安装meson,因为错误提到了meson.build的问题。此外,用户可能没有正确配置环境变量,导致系统找不到编译器。 还有,用户可能没有以管理员权限运行命令,但根据提示,用户使用了默认的用户安装,可能权限没问题。另一个可能性是使用预编译的whl文件,比如从非官源的网站下载,但需要注意安全。 需要分步骤建议用户安装构建工具,检查编译器是否存在,或者尝试使用conda来安装,因为conda可能提供预编译的包。此外,确保pip和setuptools是最新的,可能解决兼容性问题。 总结下来,用户需要安装MSVC构建工具,配置环境变量,或者换用预编译的版本。这些步骤应该能解决编译器找不到的问题。</think>这个错误是由于系统缺少C/C++编译环境导致的。python-rtmidi是一个需要编译C++扩展的包,在Windows系统上需要正确配置编译环境。 **错误原因分析:** 1. 编译器缺失:错误提示显示找不到任何可用的编译器(icl/cl/g++/clang++等) 2. Visual Studio环境配置问题:`Could not find C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe` 3. 系统PATH环境变量中缺少编译器路径 **解决方法:** 1. 安装Visual Studio生成工具 - 访问微软官网下载[Visual Studio 2022生成工具](https://visualstudio.microsoft.com/zh-hans/downloads/) - 安装时勾选: - "C++ 桌面开发" - "Windows 10/11 SDK" - "C++ CMake工具" 2. 安装Windows SDK(备用方法) - 下载安装[Windows 10 SDK](https://developer.microsoft.com/zh-cn/windows/downloads/windows-sdk/) 3. 使用预编译二进制(推荐快捷方式) ```powershell pip install python-rtmidi --global-option="--use-prebuilt" ``` 4. 安装MinGW替代方案(如果坚持使用GCC) ```powershell pip install msvc-runtime # 先安装运行时库 pacman -S mingw-w64-ucrt-x86_64-toolchain # 通过MSYS2安装 ``` 5. 验证编译器配置(安装完成后): ```powershell cl # 在CMD/PowerShell中运行,应该显示MSVC编译器信息 ``` **补充建议:** 1. 使用管理员权限运行PowerShell 2. 更新pip和setuptools: ```powershell python -m pip install --upgrade pip setuptools wheel ``` 3. 尝试指定较新版本的meson: ```powershell pip install meson>=1.2.0 ``` 4. 如果仍然失败,可以尝试从非官方仓库安装预编译版本: ```powershell pip install -i https://pypi.ngc.nvidia.com python-rtmidi ``` **替代方案(推荐):** 使用conda管理环境: ```powershell conda install -c conda-forge python-rtmidi ``` 这些步骤应该能解决编译器缺失的问题。建议优先采用Visual Studio生成工具的安装方案,这是Windows平台最稳定的C++开发环境配置方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值