Package jm.midi

Examples of jm.midi.Track


    public static void SMFToScore(Score score, SMFTools smf) {
        Enumeration<Track> en = smf.getTrackList().elements();
        // Go through tracks
        while (en.hasMoreElements()) {
            Part part = new Part();
            Track smfTrack = en.nextElement();
            Vector evtList = smfTrack.getEvtList();
            Vector phrVct = new Vector();
            sortEvents(evtList, phrVct, smf, part);
            for (int i = 0; i < phrVct.size(); i++) {
                part.addPhrase((Phrase) phrVct.elementAt(i));
            }
View Full Code Here


            e.printStackTrace();
        }
        // write all tracks
        Enumeration<Track> en = trackList.elements();
        while (en.hasMoreElements()) {
            Track smfTrack = en.nextElement();
            writeTrackChunk(dos, smfTrack);
        }
        os.flush();
        os.close();
        dos.flush();
View Full Code Here

     * Print all MIDI tracks and MIDI events
     */
    public void print() {
        Enumeration<Track> en = trackList.elements();
        while (en.hasMoreElements()) {
            Track track = en.nextElement();
            track.print();
        }
    }
View Full Code Here

     *            dis - the input stream to read from
     * @exception IOException
     */
    private void readTrackChunk(DataInputStream dis) throws IOException {
        // local variables for Track class
        Track track = new Track();
        // Insert new Track into a list of tracks
        this.trackList.addElement(track);
        int deltaTime = 0;
        // Read track header
        if (dis.readInt() != 0x4D54726B) {// If MTrk read is wrong
            throw new IOException("Track started in wrong place!!!!  ABORTING");
        } else {// If MTrk read ok get bytesRemaining
            dis.readInt();
        }
        // loop variables
        int status, oldStatus = 0, eventLength = 0;
        // Start gathering event data
        Event event = null;
        while (true) {
            try {
                // get variable length timestamp
                deltaTime = MidiUtil.readVarLength(dis);
                // mark stream so we can return if we need running status
                dis.mark(2);
                status = dis.readUnsignedByte();
                // decide on running status
                if (status < 0x80) { // set running status
                    status = oldStatus;
                    // return stream to before status read
                    dis.reset();
                }
                // create default event of correct type
                if (status >= 0xFF) { // Meta Event
                    int type = dis.readUnsignedByte();
                    eventLength = MidiUtil.readVarLength(dis);
                    event = jm.midi.MidiUtil.createMetaEvent(type);
                } else if (status >= 0xF0) { // System Exclusive --- NOT
                                             // SUPPORTED
                    eventLength = MidiUtil.readVarLength(dis);
                } else if (status >= 0x80) { // MIDI voice event
                    short selection = (short) (status / 0x10);
                    short midiChannel = (short) (status - (selection * 0x10));
                    VoiceEvt evt = (VoiceEvt) MidiUtil.createVoiceEvent(selection);
                    if (evt == null) {
                        throw new IOException("MIDI file read error: invalid voice event type!");
                    }
                    evt.setMidiChannel(midiChannel);
                    event = evt;
                }
                oldStatus = status;
            } catch (EOFException ex) {
                logger.warn("EOFException (" + ex.getMessage() + ") encountered in SMFTools");
            } catch (Exception e) {
                throw new IllegalStateException(e);
            }
            if (event != null) {
                // read data into the new event and
                // add the new event to the Track object
                event.setTime(deltaTime);
                event.read(dis);
                track.addEvent(event);
                // event.print();
                if (event instanceof EndTrack)
                    break;
            } else {
                // skip the stream ahead to next valid event
View Full Code Here

TOP

Related Classes of jm.midi.Track

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.