栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java从MIDI键盘获取输入

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java从MIDI键盘获取输入

我发现,在MidiDevice的getTransmitters()似乎返回当前的名单 已经打开 发射器,而不是发射是
被打开。我相信,通过getTransmitter()方法可以打开一个新的发送器。我已经修改了您的代码以执行此操作:

import javax.sound.midi.*;import java.util.ArrayList;import java.util.List;import java.io.*;    public class MidiHandler{    public MidiHandler()    {        MidiDevice device;        MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo();        for (int i = 0; i < infos.length; i++) { try { device = MidiSystem.getMidiDevice(infos[i]); //does the device have any transmitters? //if it does, add it to the device list System.out.println(infos[i]); //get all transmitters List<Transmitter> transmitters = device.getTransmitters(); //and for each transmitter for(int j = 0; j<transmitters.size();j++) {     //create a new receiver     transmitters.get(j).setReceiver(  //using my own MidiInputReceiver  new MidiInputReceiver(device.getDeviceInfo().toString())     ); } Transmitter trans = device.getTransmitter(); trans.setReceiver(new MidiInputReceiver(device.getDeviceInfo().toString())); //open each device device.open(); //if pre gets this far without throwing an exception //print a success message System.out.println(device.getDeviceInfo()+" Was Opened");        } catch (MidiUnavailableException e) {}    }}//tried to write my own class. I thought the send method handles an MidiEvents sent to itpublic class MidiInputReceiver implements Receiver {    public String name;    public MidiInputReceiver(String name) {        this.name = name;    }    public void send(MidiMessage msg, long timeStamp) {        System.out.println("midi received");    }    public void close() {}    }}

在我的硬件上(我插入了一个简单的USB MIDI控制器),在创建MidiHandler实例后,该代码可以正确打印出“ midi receive”。

希望这可以帮助!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/452914.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号