View Javadoc

1   package net.sf.jack4j;
2   
3   /*
4   Copyright (C) 2008 Ondrej Par
5   
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU Lesser General Public License as published by
8   the Free Software Foundation; either version 2.1 of the License, or
9   (at your option) any later version.
10  
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  GNU Lesser General Public License for more details.
15  
16  You should have received a copy of the GNU Lesser General Public License
17  along with this program; if not, write to the Free Software
18  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19  
20  */
21  
22  /**
23   * MIDI port registered by {@link JackClient}.
24   * 
25   * @author repa
26   * 
27   */
28  public class JackLocalMidiPort extends JackLocalPort {
29  
30  	static {
31  		JackBridge.initializeJackBridge();
32  	}
33  
34  	private JackMidiPortBuffer jackMidiPortBuffer;
35  
36  	JackLocalMidiPort(long portHandle, JackClient client) {
37  		super(portHandle, client);
38  	}
39  
40  	/**
41  	 * Returns instance of {@link JackMidiPortBuffer} for this port.
42  	 * 
43  	 * <p>
44  	 * The returned instance is <b>only valid during current process cycle</b>,
45  	 * and may not be cached (even if bufferSize stays the same).
46  	 * 
47  	 * <p>
48  	 * For output buffer, you still need to call
49  	 * {@link JackMidiPortBuffer#clearBuffer()} before writing to the buffer.
50  	 * 
51  	 * @param bufferSize
52  	 *            current buffer size, as passed to
53  	 *            {@link JackClient#process(int)} callback
54  	 * @return valid {@link JackMidiPortBuffer} object
55  	 * @throws JackException
56  	 *             if the buffer can't be initialized
57  	 */
58  	public JackMidiPortBuffer initializeMidiBuffer(int bufferSize) throws JackException {
59  		long bufferPointer = getBufferPointer(bufferSize);
60  		if (jackMidiPortBuffer != null) {
61  			jackMidiPortBuffer.setBufferPointer(bufferPointer);
62  		} else {
63  			jackMidiPortBuffer = new JackMidiPortBuffer(bufferPointer);
64  		}
65  
66  		return jackMidiPortBuffer;
67  	}
68  }