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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? midisynth.java

?? 聲音處理演示程序
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/* * @(#)MidiSynth.java	1.15	99/12/03 * * Copyright (c) 1999 Sun Microsystems, Inc. All Rights Reserved. * * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use, * modify and redistribute this software in source and binary code form, * provided that i) this copyright notice and license appear on all copies of * the software; and ii) Licensee does not utilize the software in a manner * which is disparaging to Sun. * * This software is provided "AS IS," without a warranty of any kind. ALL * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * * This software is not designed or intended for use in on-line control of * aircraft, air traffic, aircraft navigation or aircraft communications; or in * the design, construction, operation or maintenance of any nuclear * facility. Licensee represents and warrants that it will not use or * redistribute the Software for such purposes. */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.15 99/12/03 * @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);                }            });

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费视频精品含羞草妖精| 亚洲精品一区二区三区蜜桃下载| 在线成人av网站| 久久久久久麻豆| 亚洲成人自拍偷拍| 成人激情图片网| 精品国产sm最大网站| 亚洲免费观看视频| 国产乱人伦偷精品视频不卡| 色偷偷成人一区二区三区91 | 奇米影视一区二区三区小说| av在线不卡电影| 久久综合国产精品| 视频一区二区欧美| 欧美色图第一页| 欧美经典一区二区三区| 精品一区二区免费视频| 欧美一区二区三区婷婷月色| 亚洲视频在线一区| 99re热这里只有精品视频| 欧美精品一区二区三区很污很色的| 午夜精品一区在线观看| 色网站国产精品| 亚洲欧美一区二区不卡| 99re8在线精品视频免费播放| 久久久不卡网国产精品二区 | 成人国产免费视频| 亚洲国产成人私人影院tom | 日日摸夜夜添夜夜添国产精品| 色哟哟国产精品| 一区二区三区在线影院| 91网上在线视频| 亚洲欧美日韩一区二区| 色94色欧美sute亚洲13| 一区二区三区欧美| 欧美视频中文字幕| 亚洲电影在线免费观看| 欧美亚洲动漫另类| 日韩av中文字幕一区二区三区| 欧美日韩三级一区| 日本欧美一区二区在线观看| 欧美一级生活片| 久久99国产精品尤物| 久久精品亚洲乱码伦伦中文| 成人性生交大片| 亚洲另类在线制服丝袜| 欧美性xxxxxxxx| 日产欧产美韩系列久久99| 日韩一区二区三区精品视频| 精品一区二区在线免费观看| 欧美国产一区视频在线观看| 97超碰欧美中文字幕| 亚洲第一狼人社区| 精品国内二区三区| 成人国产精品免费观看| 一区二区在线观看免费视频播放| 欧美撒尿777hd撒尿| 日韩不卡一区二区三区 | 欧美精品 国产精品| 久久97超碰国产精品超碰| 欧美精彩视频一区二区三区| 色视频欧美一区二区三区| 日本一不卡视频| 国产精品乱码一区二区三区软件 | 久久99国产精品麻豆| 中文字幕在线观看不卡| 欧美日韩国产一级二级| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品女主播在线观看| 欧美在线视频日韩| 狠狠色丁香婷婷综合| 亚洲美腿欧美偷拍| 精品国产精品网麻豆系列 | 欧美日本高清视频在线观看| 久久成人精品无人区| 亚洲麻豆国产自偷在线| 日韩一区二区在线观看| 91理论电影在线观看| 免费观看在线色综合| 国产精品美女久久久久久| 宅男在线国产精品| 91影院在线观看| 精品亚洲aⅴ乱码一区二区三区| 亚洲天堂久久久久久久| 欧美成人精品1314www| 色噜噜夜夜夜综合网| 韩日精品视频一区| 日韩成人精品在线| 一区二区三区国产精华| 久久久久久黄色| 日韩一区二区免费在线电影| aa级大片欧美| 国产一区在线观看视频| 日韩综合小视频| 亚洲图片欧美一区| 国产精品久久久久久久久免费桃花 | 亚洲欧洲日韩综合一区二区| 亚洲精品一区二区三区蜜桃下载 | 91一区二区在线| 国内精品伊人久久久久影院对白| 亚洲一区二区三区四区不卡| 中文字幕一区二区三区色视频| www国产成人| xnxx国产精品| 日韩欧美自拍偷拍| 日韩欧美国产1| 日韩欧美中文字幕一区| 91精品婷婷国产综合久久性色| 在线亚洲一区二区| 日本乱人伦aⅴ精品| 成人99免费视频| 93久久精品日日躁夜夜躁欧美| 懂色中文一区二区在线播放| 国产精品123| 成人av午夜电影| 福利一区二区在线观看| 国产毛片精品一区| 成人综合婷婷国产精品久久| 国产精品综合二区| 国产成人精品1024| 成人久久18免费网站麻豆| www.视频一区| 91美女片黄在线观看91美女| 99久久精品国产毛片| 91久久奴性调教| 7777精品伊人久久久大香线蕉经典版下载 | 色乱码一区二区三区88| 一本色道久久综合亚洲精品按摩 | 亚洲美女免费在线| 亚洲国产日韩在线一区模特| 午夜伦欧美伦电影理论片| 免费亚洲电影在线| 国产精品99久久久久久宅男| 成人av在线电影| 欧洲生活片亚洲生活在线观看| 欧美日韩在线播| 91精品国产综合久久香蕉的特点| 91精品国产91热久久久做人人 | 在线一区二区视频| 91精品国产乱| 久久久精品国产99久久精品芒果| 国产蜜臀av在线一区二区三区| 《视频一区视频二区| 亚洲成人福利片| 国产成人免费在线观看不卡| www.日韩在线| 91精品欧美久久久久久动漫 | 国产麻豆成人传媒免费观看| 91网上在线视频| 日韩亚洲欧美在线| 亚洲欧洲日韩av| 美腿丝袜一区二区三区| 波多野结衣精品在线| 91麻豆精品91久久久久久清纯| 久久亚洲二区三区| 亚洲18女电影在线观看| 国产成人啪午夜精品网站男同| 欧美午夜视频网站| 中文字幕第一页久久| 五月开心婷婷久久| 91在线观看下载| 欧美成人免费网站| 亚洲午夜一二三区视频| 国产成都精品91一区二区三| 欧美日韩国产片| 中文字幕佐山爱一区二区免费| 日韩成人免费电影| 欧美影院精品一区| 国产精品色哟哟| 老色鬼精品视频在线观看播放| 色综合天天综合网国产成人综合天| 欧美va天堂va视频va在线| 亚洲国产日日夜夜| 成人动漫一区二区在线| 精品国产乱码久久久久久闺蜜| 亚洲一区视频在线| 91蝌蚪porny| 26uuu另类欧美亚洲曰本| 污片在线观看一区二区 | 国产成+人+日韩+欧美+亚洲| 7777精品伊人久久久大香线蕉最新版| 日韩美女精品在线| 成人免费视频视频| 久久久国产精品麻豆| 久久成人羞羞网站| 日韩一区二区三区在线| 婷婷中文字幕一区三区| 在线日韩av片| 一区二区在线观看视频在线观看| 国产夫妻精品视频| 国产欧美一区二区在线| 久久精品国产精品青草| 日韩一区二区在线播放| 日韩 欧美一区二区三区| 欧美视频在线观看一区| 一级中文字幕一区二区| 91麻豆精东视频| 亚洲精选免费视频| 在线亚洲一区二区| 亚洲一区二区欧美激情|