ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – MIDI初学者 – 需要播放一个音符

2019-10-06 01:00:28  阅读:287  来源: 互联网

标签:javasound java midi


我不太了解Java的MIDI功能.事实上,它完全让我感到困惑.然而,我想要做的只是构建一个简单的应用程序,它将播放一个音符.

如何使用Java Sound播放单个MIDI音符?

网上对此的支持几乎不存在,我完全不知所措.

解决方法:

我知道这是一个非常古老的问题,但是,作为一名新手程序员,我很难搞清楚如何做到这一点,所以我想我会分享以下hello-world风格的程序让Java发挥单一作用midi note以帮助其他人入门.

import javax.sound.midi.*;

public class MidiTest{

    public static void main(String[] args) { 
      try{
        /* Create a new Sythesizer and open it. Most of 
         * the methods you will want to use to expand on this 
         * example can be found in the Java documentation here: 
         * https://docs.oracle.com/javase/7/docs/api/javax/sound/midi/Synthesizer.html
         */
        Synthesizer midiSynth = MidiSystem.getSynthesizer(); 
        midiSynth.open();

        //get and load default instrument and channel lists
        Instrument[] instr = midiSynth.getDefaultSoundbank().getInstruments();
        MidiChannel[] mChannels = midiSynth.getChannels();

        midiSynth.loadInstrument(instr[0]);//load an instrument


        mChannels[0].noteOn(60, 100);//On channel 0, play note number 60 with velocity 100 
        try { Thread.sleep(1000); // wait time in milliseconds to control duration
        } catch( InterruptedException e ) { }
        mChannels[0].noteOff(60);//turn of the note


      } catch (MidiUnavailableException e) {}
   }

}    

上面的代码主要是通过剪切,粘贴和搞乱几个在线教程中的代码来创建的.以下是我发现的最有用的教程:

http://www.ibm.com/developerworks/library/it/it-0801art38/

这是一个很棒的教程,可能有你想要的一切;然而,一开始可能有点压倒性的.

http://patater.com/gbaguy/javamidi.htm

具有15岁的非工作代码.令人惊讶的是,这是我发现的最有用的东西.

标签:javasound,java,midi
来源: https://codeday.me/bug/20191005/1857917.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有