首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用pygame.midi发送“持续踏板”midi信号?

如何使用pygame.midi发送“持续踏板”midi信号?
EN

Stack Overflow用户
提问于 2018-06-28 07:43:49
回答 2查看 374关注 0票数 1

简单的midi信号可以通过note_on()note_off()方法调用,但我找不到一种使用pygame.midi发送“持续踏板”midi信号的方法。有什么常规的方法可以做到这一点吗?

EN

回答 2

Stack Overflow用户

发布于 2018-06-28 16:33:14

不幸的是,在pygame.midi (或大多数其他常用的Python-MIDI库)中没有实现维护踏板,因此从Pygame模块本机实现是不可能的。

但是,您可以通过稍微重新构建代码来解决此问题。如果你可以使用一个特定的键(或事件)来代替我认为的物理维持踏板(毕竟,大多数MIDI维持踏板都是simple switches),你就可以拉出类似于维持踏板的东西。例如:

代码语言:javascript
复制
import pygame
from pygame.locals import *

# Midi init and setup, other code, etc...
# device_input = pygame.midi.Input(device_id)

sustain = False

# We will use the spacebar in place of a pedal in this case.

while 1:
    for event in pygame.event.get():
        # You can also use other events in place of KEYDOWN/KEYUP events.
        if event.type == KEYDOWN and event.key == K_SPACE:
            sustain = True
        elif event.type == KEYUP and event.key == K_SPACE:
            sustain = False
    # ...
    for i in device_input:
        if sustain:
            # Remove all MIDI key-up events here

    # Then play sounds or process midi input accordingly afterwards
票数 1
EN

Stack Overflow用户

发布于 2018-06-28 22:29:45

规范defines the sustain pedal as controller 64,因此您必须发送控制更改消息。

pygame.midi没有为此提供特殊函数,因此您必须发送原始字节:

代码语言:javascript
复制
write_short(0xb0 + channel, 64, 127 if pressed else 0);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51072834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档