当前位置: 首页>>代码示例>>Java>>正文


Java MidiChannel类代码示例

本文整理汇总了Java中javax.sound.midi.MidiChannel的典型用法代码示例。如果您正苦于以下问题:Java MidiChannel类的具体用法?Java MidiChannel怎么用?Java MidiChannel使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


MidiChannel类属于javax.sound.midi包,在下文中一共展示了MidiChannel类的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: playWarningSound

import javax.sound.midi.MidiChannel; //导入依赖的package包/类
private static void playWarningSound() {
//        if (2 > 1) {
//            return;
//        }

        try {
//            int velocity = 127;    // max volume
            int velocity = 90;    // max volume
            int sound = 65;
            Synthesizer synthesizer = MidiSystem.getSynthesizer();
            synthesizer.open();
            MidiChannel channel = synthesizer.getChannels()[9];  // drums channel.
            for (int i = 0; i < 10; i++) {
                Thread.sleep(100);
                channel.noteOn(sound + i, velocity);
                Thread.sleep(100);
                channel.noteOff(sound + i);
            }
        } catch (MidiUnavailableException | InterruptedException e1) {
            e1.printStackTrace();
        }
    }
 
开发者ID:teddyted,项目名称:iSeleda,代码行数:23,代码来源:Dialogs.java

示例2: getChannels

import javax.sound.midi.MidiChannel; //导入依赖的package包/类
public MidiChannel[] getChannels() {

        synchronized (control_mutex) {
            // if (external_channels == null) => the synthesizer is not open,
            // create 16 proxy channels
            // otherwise external_channels has the same length as channels array
            if (external_channels == null) {
                external_channels = new SoftChannelProxy[16];
                for (int i = 0; i < external_channels.length; i++)
                    external_channels[i] = new SoftChannelProxy();
            }
            MidiChannel[] ret;
            if (isOpen())
                ret = new MidiChannel[channels.length];
            else
                ret = new MidiChannel[16];
            for (int i = 0; i < ret.length; i++)
                ret[i] = external_channels[i];
            return ret;
        }
    }
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:22,代码来源:SoftSynthesizer.java

示例3: getChannels

import javax.sound.midi.MidiChannel; //导入依赖的package包/类
@Override
public MidiChannel[] getChannels() {

    synchronized (control_mutex) {
        // if (external_channels == null) => the synthesizer is not open,
        // create 16 proxy channels
        // otherwise external_channels has the same length as channels array
        if (external_channels == null) {
            external_channels = new SoftChannelProxy[16];
            for (int i = 0; i < external_channels.length; i++)
                external_channels[i] = new SoftChannelProxy();
        }
        MidiChannel[] ret;
        if (isOpen())
            ret = new MidiChannel[channels.length];
        else
            ret = new MidiChannel[16];
        for (int i = 0; i < ret.length; i++)
            ret[i] = external_channels[i];
        return ret;
    }
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:23,代码来源:SoftSynthesizer.java

示例4: render

import javax.sound.midi.MidiChannel; //导入依赖的package包/类
@Override
public void render() throws RenderCommandException {
	sleepUntil(getFrame().playOutTime);

	for(MidiMessage msg : getFrame().messages) {
		if(msg instanceof ShortMessage) {
			final ShortMessage sm = (ShortMessage)msg;
			final MidiChannel  ch = synth.getChannels()[sm.getChannel()];
			switch(sm.getCommand()) {
			case ShortMessage.NOTE_ON:
				ch.noteOn(sm.getData1(), sm.getData2());
				continue;
			case ShortMessage.NOTE_OFF:
				ch.noteOff(sm.getData1(), sm.getData2());
				continue;
			case ShortMessage.PROGRAM_CHANGE:
				ch.programChange(sm.getData1());
				continue;
			case ShortMessage.CONTROL_CHANGE:
				ch.controlChange(sm.getData1(), sm.getData2());
				continue;
			}
		}
		throw new RenderCommandException("Unknown MIDI Command:" + MidiToString.toString(msg));
	}
}
 
开发者ID:arisona,项目名称:ether,代码行数:27,代码来源:JavaMidiSynthesizerTarget.java

示例5: allNotesOff

import javax.sound.midi.MidiChannel; //导入依赖的package包/类
/**
 * Stops all notes from playing on all MIDI channels.
 */
public static void allNotesOff(Synthesizer synth)
{
    try {
        if (!synth.isOpen()) {
            synth.open();
        }
        MidiChannel[] channels = synth.getChannels();
        for (int i=0; i < channels.length; i++)
        {
            channels[i].allNotesOff();
        }
    } catch (MidiUnavailableException e)
    {
        throw new JFugueException(JFugueException.GENERAL_ERROR);
    }
}
 
开发者ID:d2fn,项目名称:passage,代码行数:20,代码来源:Player.java

示例6: loadMidiSeq

import javax.sound.midi.MidiChannel; //导入依赖的package包/类
public void loadMidiSeq(File newseqfile) {
	try {
		seq_errmsg = null;
		Sequence newseq = MidiSystem.getSequence(newseqfile);

		seq = newseq;
		seqfile = newseqfile;
		// boolean running = seqr.isRunning();
		seqr.stop();
           
           // Reset All Channels
           for(MidiChannel c : softsynth.getChannels())
               c.resetAllControllers();
           
		seqr.setSequence(seq);
		seqr.setTickPosition(0);
		seqr.start();
	} catch (Throwable e1) {
		seq_errmsg = e1.toString();
	}

}
 
开发者ID:bluenote10,项目名称:gervill,代码行数:23,代码来源:SimpleMidiPlayer.java

示例7: getChannel

import javax.sound.midi.MidiChannel; //导入依赖的package包/类
/**
 * Returns the MIDI channel.
 *
 * @param synthesizer the synthesizer.
 * @param channel the channel number.
 * @param required if {@code true} then throws exception when not found or not available. Otherwise returns {@code null}.
 * @return the MIDI channel.
 */
public static MidiChannel getChannel(Synthesizer synthesizer, int channel, boolean required) {
    MidiChannel[] channels = synthesizer.getChannels();
    if (channel >= channels.length || channels[channel] == null) {
        if (required) {
            throw new IllegalArgumentException("Channel " + channel + " is not available");
        } else {
            return null;
        }
    }

    return channels[channel];
}
 
开发者ID:softelnet,项目名称:sponge,代码行数:21,代码来源:MidiUtils.java

示例8: noteOn

import javax.sound.midi.MidiChannel; //导入依赖的package包/类
public void noteOn(MidiChannel channel, VoiceStatus voice, int noteNumber,
        int velocity) {
    this.channel = channel;
    this.voice = voice;
    this.noteNumber = noteNumber;
    this.velocity = velocity;
    on = true;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:9,代码来源:ModelAbstractOscillator.java

示例9: main

import javax.sound.midi.MidiChannel; //导入依赖的package包/类
public static void main(String[] args) throws Exception
{
    AudioSynthesizer synth = new SoftSynthesizer();
    AudioFormat format = new AudioFormat(44100, 16, 2, true, false);
    AudioInputStream stream = synth.openStream(format, null);

    // Make all voices busy, e.g.
    // send midi on and midi off on all available voices
    MidiChannel ch1 = synth.getChannels()[0];
    ch1.programChange(48); // Use contionus instrument like string ensemble
    for (int i = 0; i < synth.getMaxPolyphony(); i++) {
        ch1.noteOn(64, 64);
        ch1.noteOff(64);
    }

    // Now send single midi on, and midi off message
    ch1.noteOn(64, 64);
    ch1.noteOff(64);

    // Read 10 sec from stream, by this time all voices should be inactvie
    stream.skip(format.getFrameSize() * ((int)(format.getFrameRate() * 20)));

    // If no voice are active, then this test will pass
    VoiceStatus[] v = synth.getVoiceStatus();
    for (int i = 0; i < v.length; i++) {
        if(v[i].active)
        {
            throw new RuntimeException("Not all voices are inactive!");
        }
    }

    // Close the synthesizer after use
    synth.close();
}
 
开发者ID:lambdalab-mirror,项目名称:jdk8u-jdk,代码行数:35,代码来源:NoteOverFlowTest.java

示例10: createTestSoundbankWithChannelMixer

import javax.sound.midi.MidiChannel; //导入依赖的package包/类
public static Soundbank createTestSoundbankWithChannelMixer() {
    SF2Soundbank soundbank = createTestSoundbank();

    SimpleSoundbank simplesoundbank = new SimpleSoundbank();
    SimpleInstrument simpleinstrument = new SimpleInstrument() {

        public ModelChannelMixer getChannelMixer(MidiChannel channel,
                AudioFormat format) {
            return new ModelAbstractChannelMixer() {
                boolean active = true;

                public boolean process(float[][] buffer, int offset, int len) {
                    for (int i = 0; i < buffer.length; i++) {
                        float[] cbuffer = buffer[i];
                        for (int j = 0; j < cbuffer.length; j++) {
                            cbuffer[j] = -cbuffer[j];
                        }
                    }
                    return active;
                }

                public void stop() {
                    active = false;
                }
            };
        }

    };
    simpleinstrument.add(soundbank.getInstruments()[0]);
    simplesoundbank.addInstrument(simpleinstrument);

    return simplesoundbank;
}
 
开发者ID:lambdalab-mirror,项目名称:jdk8u-jdk,代码行数:34,代码来源:TestPreciseTimestampRendering.java

示例11: main

import javax.sound.midi.MidiChannel; //导入依赖的package包/类
public static void main(String[] args) throws Exception {
    AudioSynthesizer synth = new SoftSynthesizer();
    synth.openStream(null, null);
    assertTrue(synth.getChannels() != null);
    assertTrue(synth.getChannels().length == 16);
    MidiChannel[] channels = synth.getChannels();
    for (int i = 0; i < channels.length; i++) {
        assertTrue(channels[i] != null);
    }
    synth.close();

}
 
开发者ID:lambdalab-mirror,项目名称:jdk8u-jdk,代码行数:13,代码来源:GetChannels.java

示例12: noteOn

import javax.sound.midi.MidiChannel; //导入依赖的package包/类
@Override
public void noteOn(MidiChannel channel, VoiceStatus voice, int noteNumber,
                   int velocity) {
    this.channel = channel;
    this.voice = voice;
    this.noteNumber = noteNumber;
    this.velocity = velocity;
    on = true;
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:10,代码来源:ModelAbstractOscillator.java


注:本文中的javax.sound.midi.MidiChannel类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。