亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? midisynth.java

?? java midi 鋼琴界面 利用鼠標(biāo)指針拖動(dòng) 可以模仿鋼琴 風(fēng)琴 吉他 等等西洋樂器 需編譯!
?? JAVA
?? 第 1 頁 / 共 2 頁
字號(hào):
/* * Copyright 2002 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package xiyou.wangbo;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import javax.swing.table.*;import javax.swing.event.*;import javax.sound.midi.*;import java.util.Vector;import java.io.File;import java.io.IOException;/** * Illustrates general MIDI melody instruments and MIDI controllers. * * @version @(#)MidiSynth.java	1.16 02/02/06 * @author Brian Lichtenwalter   */public class MidiSynth extends JPanel implements ControlContext {    final int PROGRAM = 192;    final int NOTEON = 144;    final int NOTEOFF = 128;    final int SUSTAIN = 64;    final int REVERB = 91;    final int ON = 0, OFF = 1;    final Color jfcBlue = new Color(204, 204, 255);    final Color pink = new Color(255, 175, 175);    Sequencer sequencer;    Sequence sequence;    Synthesizer synthesizer;    Instrument instruments[];    ChannelData channels[];    ChannelData cc;    // current channel    JCheckBox mouseOverCB = new JCheckBox("mouseOver", true);    JSlider veloS, presS, bendS, revbS;    JCheckBox soloCB, monoCB, muteCB, sustCB;     Vector keys = new Vector();    Vector whiteKeys = new Vector();    JTable table;    Piano piano;    boolean record;    Track track;    long startTime;    RecordFrame recordFrame;    Controls controls;    public MidiSynth() {        setLayout(new BorderLayout());        JPanel p = new JPanel();        p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));        EmptyBorder eb = new EmptyBorder(5,5,5,5);        BevelBorder bb = new BevelBorder(BevelBorder.LOWERED);        CompoundBorder cb = new CompoundBorder(eb,bb);        p.setBorder(new CompoundBorder(cb,eb));        JPanel pp = new JPanel(new BorderLayout());        pp.setBorder(new EmptyBorder(10,20,10,5));        pp.add(piano = new Piano());        p.add(pp);        p.add(controls = new Controls());        p.add(new InstrumentsTable());        add(p);    }    public void open() {        try {            if (synthesizer == null) {                if ((synthesizer = MidiSystem.getSynthesizer()) == null) {                    System.out.println("getSynthesizer() failed!");                    return;                }            }             synthesizer.open();            sequencer = MidiSystem.getSequencer();            sequence = new Sequence(Sequence.PPQ, 10);        } catch (Exception ex) { ex.printStackTrace(); return; }        Soundbank sb = synthesizer.getDefaultSoundbank();	if (sb != null) {            instruments = synthesizer.getDefaultSoundbank().getInstruments();            synthesizer.loadInstrument(instruments[0]);        }        MidiChannel midiChannels[] = synthesizer.getChannels();        channels = new ChannelData[midiChannels.length];        for (int i = 0; i < channels.length; i++) {            channels[i] = new ChannelData(midiChannels[i], i);        }        cc = channels[0];        ListSelectionModel lsm = table.getSelectionModel();        lsm.setSelectionInterval(0,0);        lsm = table.getColumnModel().getSelectionModel();        lsm.setSelectionInterval(0,0);    }    public void close() {        if (synthesizer != null) {            synthesizer.close();        }        if (sequencer != null) {            sequencer.close();        }        sequencer = null;        synthesizer = null;        instruments = null;        channels = null;        if (recordFrame != null) {            recordFrame.dispose();            recordFrame = null;        }    }    /**     * given 120 bpm:     *   (120 bpm) / (60 seconds per minute) = 2 beats per second     *   2 / 1000 beats per millisecond     *   (2 * resolution) ticks per second     *   (2 * resolution)/1000 ticks per millisecond, or      *      (resolution / 500) ticks per millisecond     *   ticks = milliseconds * resolution / 500     */    public void createShortEvent(int type, int num) {        ShortMessage message = new ShortMessage();        try {            long millis = System.currentTimeMillis() - startTime;            long tick = millis * sequence.getResolution() / 500;            message.setMessage(type+cc.num, num, cc.velocity);             MidiEvent event = new MidiEvent(message, tick);            track.add(event);        } catch (Exception ex) { ex.printStackTrace(); }    }    /**     * Black and white keys or notes on the piano.     */    class Key extends Rectangle {        int noteState = OFF;        int kNum;        public Key(int x, int y, int width, int height, int num) {            super(x, y, width, height);            kNum = num;        }        public boolean isNoteOn() {            return noteState == ON;        }        public void on() {            setNoteState(ON);            cc.channel.noteOn(kNum, cc.velocity);            if (record) {                createShortEvent(NOTEON, kNum);            }        }        public void off() {            setNoteState(OFF);            cc.channel.noteOff(kNum, cc.velocity);            if (record) {                createShortEvent(NOTEOFF, kNum);            }        }        public void setNoteState(int state) {            noteState = state;        }    } // End class Key    /**     * Piano renders black & white keys and plays the notes for a MIDI      * channel.       */    class Piano extends JPanel implements MouseListener {        Vector blackKeys = new Vector();        Key prevKey;        final int kw = 16, kh = 80;        public Piano() {            setLayout(new BorderLayout());            setPreferredSize(new Dimension(42*kw, kh+1));            int transpose = 24;              int whiteIDs[] = { 0, 2, 4, 5, 7, 9, 11 };                       for (int i = 0, x = 0; i < 6; i++) {                for (int j = 0; j < 7; j++, x += kw) {                    int keyNum = i * 12 + whiteIDs[j] + transpose;                    whiteKeys.add(new Key(x, 0, kw, kh, keyNum));                }            }            for (int i = 0, x = 0; i < 6; i++, x += kw) {                int keyNum = i * 12 + transpose;                blackKeys.add(new Key((x += kw)-4, 0, kw/2, kh/2, keyNum+1));                blackKeys.add(new Key((x += kw)-4, 0, kw/2, kh/2, keyNum+3));                x += kw;                blackKeys.add(new Key((x += kw)-4, 0, kw/2, kh/2, keyNum+6));                blackKeys.add(new Key((x += kw)-4, 0, kw/2, kh/2, keyNum+8));                blackKeys.add(new Key((x += kw)-4, 0, kw/2, kh/2, keyNum+10));            }            keys.addAll(blackKeys);            keys.addAll(whiteKeys);            addMouseMotionListener(new MouseMotionAdapter() {                public void mouseMoved(MouseEvent e) {                    if (mouseOverCB.isSelected()) {                        Key key = getKey(e.getPoint());                        if (prevKey != null && prevKey != key) {                            prevKey.off();                        }                         if (key != null && prevKey != key) {                            key.on();                        }                        prevKey = key;                        repaint();                    }                }            });            addMouseListener(this);        }        public void mousePressed(MouseEvent e) {             prevKey = getKey(e.getPoint());            if (prevKey != null) {                prevKey.on();                repaint();            }        }        public void mouseReleased(MouseEvent e) {             if (prevKey != null) {                prevKey.off();                repaint();            }        }        public void mouseExited(MouseEvent e) {             if (prevKey != null) {                prevKey.off();                repaint();                prevKey = null;            }        }        public void mouseClicked(MouseEvent e) { }        public void mouseEntered(MouseEvent e) { }        public Key getKey(Point point) {            for (int i = 0; i < keys.size(); i++) {                if (((Key) keys.get(i)).contains(point)) {                    return (Key) keys.get(i);                }            }            return null;        }        public void paint(Graphics g) {            Graphics2D g2 = (Graphics2D) g;            Dimension d = getSize();            g2.setBackground(getBackground());            g2.clearRect(0, 0, d.width, d.height);            g2.setColor(Color.white);            g2.fillRect(0, 0, 42*kw, kh);            for (int i = 0; i < whiteKeys.size(); i++) {                Key key = (Key) whiteKeys.get(i);                if (key.isNoteOn()) {                    g2.setColor(record ? pink : jfcBlue);                    g2.fill(key);                }                g2.setColor(Color.black);                g2.draw(key);            }            for (int i = 0; i < blackKeys.size(); i++) {                Key key = (Key) blackKeys.get(i);                if (key.isNoteOn()) {                    g2.setColor(record ? pink : jfcBlue);                    g2.fill(key);                    g2.setColor(Color.black);                    g2.draw(key);                } else {                    g2.setColor(Color.black);                    g2.fill(key);                }            }        }    } // End class Piano    /**     * Stores MidiChannel information.     */    class ChannelData {        MidiChannel channel;        boolean solo, mono, mute, sustain;        int velocity, pressure, bend, reverb;        int row, col, num;         public ChannelData(MidiChannel channel, int num) {            this.channel = channel;            this.num = num;            velocity = pressure = bend = reverb = 64;        }        public void setComponentStates() {            table.setRowSelectionInterval(row, row);            table.setColumnSelectionInterval(col, col);            soloCB.setSelected(solo);            monoCB.setSelected(mono);            muteCB.setSelected(mute);            //sustCB.setSelected(sustain);            JSlider slider[] = { veloS, presS, bendS, revbS };            int v[] = { velocity, pressure, bend, reverb };            for (int i = 0; i < slider.length; i++) {                TitledBorder tb = (TitledBorder) slider[i].getBorder();                String s = tb.getTitle();                tb.setTitle(s.substring(0, s.indexOf('=')+1)+s.valueOf(v[i]));                slider[i].repaint();            }        }    } // End class ChannelData    /**     * Table for 128 general MIDI melody instuments.     */    class InstrumentsTable extends JPanel {        private String names[] = {            "Piano", "Chromatic Perc.", "Organ", "Guitar",            "Bass", "Strings", "Ensemble", "Brass",            "Reed", "Pipe", "Synth Lead", "Synth Pad",           "Synth Effects", "Ethnic", "Percussive", "Sound Effects" };        private int nRows = 8;        private int nCols = names.length; // just show 128 instruments        public InstrumentsTable() {            setLayout(new BorderLayout());            TableModel dataModel = new AbstractTableModel() {                public int getColumnCount() { return nCols; }                public int getRowCount() { return nRows;}                public Object getValueAt(int r, int c) {                     if (instruments != null) {                        return instruments[c*nRows+r].getName();                    } else {                        return Integer.toString(c*nRows+r);                    }                }                public String getColumnName(int c) {                     return names[c];                }                public Class getColumnClass(int c) {                    return getValueAt(0, c).getClass();                }                public boolean isCellEditable(int r, int c) {return false;}                public void setValueAt(Object obj, int r, int c) {}            };                table = new JTable(dataModel);            table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);            // Listener for row changes            ListSelectionModel lsm = table.getSelectionModel();            lsm.addListSelectionListener(new ListSelectionListener() {                public void valueChanged(ListSelectionEvent e) {                    ListSelectionModel sm = (ListSelectionModel) e.getSource();                    if (!sm.isSelectionEmpty()) {                        cc.row = sm.getMinSelectionIndex();                    }                    programChange(cc.col*nRows+cc.row);                }            });            // Listener for column changes            lsm = table.getColumnModel().getSelectionModel();            lsm.addListSelectionListener(new ListSelectionListener() {                public void valueChanged(ListSelectionEvent e) {                    ListSelectionModel sm = (ListSelectionModel) e.getSource();                    if (!sm.isSelectionEmpty()) {                        cc.col = sm.getMinSelectionIndex();                    }                    programChange(cc.col*nRows+cc.row);                }            });

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美军同video69gay| 亚洲精品在线免费观看视频| 蜜臂av日日欢夜夜爽一区| 国产日韩综合av| 欧美男生操女生| 成人av免费在线| 狠狠色丁香婷综合久久| 亚洲一区二区精品久久av| 国产视频一区二区在线| 日韩一区二区三区观看| 欧美亚洲综合一区| 99久久99久久精品免费观看| 国内精品在线播放| 免费成人在线影院| 午夜日韩在线观看| 亚洲另类春色国产| 国产精品国产三级国产普通话99| 日韩精品自拍偷拍| 欧美区一区二区三区| 日本韩国欧美国产| 色综合中文综合网| 蜜臀av一区二区在线免费观看 | 精品国产伦一区二区三区观看方式 | 青青草97国产精品免费观看无弹窗版 | 26uuu国产电影一区二区| 欧美日韩精品一区二区三区蜜桃 | 亚洲mv大片欧洲mv大片精品| 亚洲人成网站精品片在线观看| 欧美激情一区二区三区全黄| 久久久不卡网国产精品一区| 日韩视频一区二区三区在线播放| 欧美日韩国产小视频在线观看| 在线精品视频免费观看| 色狠狠一区二区三区香蕉| 91色九色蝌蚪| 欧美在线免费视屏| 欧美亚洲图片小说| 欧美日韩免费高清一区色橹橹 | 欧美欧美欧美欧美首页| 欧美日韩一级片在线观看| 欧美日韩视频第一区| 欧美另类高清zo欧美| 欧美精品在线一区二区| 欧美一区二区黄| 日韩视频一区二区在线观看| 精品成人一区二区三区| 久久久久久一二三区| 中文字幕av免费专区久久| 中文字幕亚洲成人| 亚洲精品国产精品乱码不99| 亚洲小说春色综合另类电影| 丝袜美腿亚洲综合| 日韩在线a电影| 久久疯狂做爰流白浆xx| 国模少妇一区二区三区| 国产精品99久久久久久宅男| 成人激情免费电影网址| 日本高清成人免费播放| 欧美日韩高清一区二区不卡| 日韩一级在线观看| 国产视频911| 樱花影视一区二区| 蜜桃免费网站一区二区三区| 国产一区二区三区国产| 成年人网站91| 欧美麻豆精品久久久久久| 欧美va在线播放| 亚洲视频综合在线| 亚洲成人av免费| 国产一区999| 在线观看三级视频欧美| 日韩视频一区在线观看| 国产精品久久久久久久久久久免费看| 亚洲欧洲日本在线| 日韩高清在线观看| 成人一区二区三区| 欧美精品vⅰdeose4hd| 久久五月婷婷丁香社区| 18欧美乱大交hd1984| 视频一区中文字幕国产| 国产毛片精品一区| 欧美丝袜自拍制服另类| 2021国产精品久久精品| 亚洲欧美日韩一区| 久久99国产精品免费网站| 一本久道中文字幕精品亚洲嫩| 91麻豆精品国产91久久久久 | 精品污污网站免费看| 精品国内二区三区| 亚洲一卡二卡三卡四卡| 国产精品88888| 欧美巨大另类极品videosbest | 日本欧美久久久久免费播放网| 成人黄色电影在线| 欧美成人三级在线| 一区二区三区毛片| 国产精品系列在线播放| 欧美精品自拍偷拍| 亚洲精品视频在线看| 国产麻豆精品一区二区| 欧美日韩精品专区| 亚洲视频网在线直播| 黄色日韩三级电影| 欧美老肥妇做.爰bbww| 亚洲色欲色欲www在线观看| 韩国午夜理伦三级不卡影院| 欧美日韩激情一区| 亚洲男人天堂av| 国产成人免费在线观看不卡| 日韩欧美一二三四区| 亚洲国产精品视频| 91小宝寻花一区二区三区| 国产欧美一区在线| 精品一区二区三区视频| 91精品国产综合久久蜜臀| 一区二区三区四区高清精品免费观看 | 亚洲另类一区二区| 99久久夜色精品国产网站| 久久蜜臀中文字幕| 久久精品国产一区二区三区免费看 | 国产精品高潮呻吟久久| 国产精品资源站在线| 日韩美女视频在线| 日韩成人一级大片| 91精品国产综合久久精品麻豆| 亚洲国产欧美日韩另类综合 | 国产欧美精品一区二区三区四区| 天天av天天翘天天综合网色鬼国产| 色综合久久久久综合体桃花网| 国产精品美女视频| 99精品视频在线观看| 国产精品人妖ts系列视频| 国产91富婆露脸刺激对白| 久久网站热最新地址| 国内国产精品久久| 久久美女高清视频| 国产99久久久国产精品潘金网站| 国产日韩成人精品| 成人免费视频免费观看| 中文字幕不卡在线播放| 97aⅴ精品视频一二三区| 亚洲人妖av一区二区| 欧美伊人久久大香线蕉综合69| 亚洲一区精品在线| 69精品人人人人| 免费成人在线观看| 精品欧美黑人一区二区三区| 国产经典欧美精品| 中文av一区特黄| 91福利精品视频| 日韩在线一二三区| 26uuu精品一区二区在线观看| 懂色av中文一区二区三区| 国产精品美女视频| 日本韩国欧美三级| 男人的j进女人的j一区| 久久女同精品一区二区| 成人av网址在线| 亚洲综合在线五月| 91精品国产高清一区二区三区蜜臀 | 亚洲一区二区在线免费看| 欧美日本高清视频在线观看| 麻豆精品视频在线| 日本一二三不卡| 精品视频1区2区| 韩国av一区二区| 日韩美女精品在线| 日韩一区二区免费视频| 成人短视频下载| 性做久久久久久免费观看| 欧美va天堂va视频va在线| 成人午夜免费视频| 天天综合网天天综合色| 亚洲精品一区二区三区香蕉| 99久久精品国产导航| 亚洲一二三专区| 2欧美一区二区三区在线观看视频| 成人一区二区三区视频在线观看| 一区二区三区日韩| 久久久久久毛片| 欧美日韩中文一区| 国产99一区视频免费| 婷婷综合另类小说色区| 中文在线免费一区三区高中清不卡| 在线视频欧美区| 国产一区二区三区蝌蚪| 亚洲一区二区三区小说| 国产亚洲精品中文字幕| 91 com成人网| 99re视频精品| 国产精品一区二区在线播放| 亚洲国产日韩一区二区| 欧美国产精品劲爆| 欧美一区二区三区爱爱| 一本大道久久a久久精二百 | 成人h动漫精品一区二| 美女网站色91| 亚洲一级电影视频| 最好看的中文字幕久久| 精品国产伦理网|