<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Projecte_Proj4</id>
	<title>Projecte Proj4 - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Projecte_Proj4"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Projecte_Proj4&amp;action=history"/>
	<updated>2026-08-30T11:11:46Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Projecte_Proj4&amp;diff=3095&amp;oldid=prev</id>
		<title>Joan: /* v1: tocar software i sonar software */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Projecte_Proj4&amp;diff=3095&amp;oldid=prev"/>
		<updated>2009-06-03T22:33:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;v1: tocar software i sonar software&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;El Proj4 és un aclaratori de com utilitzo el hardware disponible (CASIO CTK-731, Yamaha WX5, Alesis DM5) com a mòdul de so o com a controlador MIDI, i com utilitzo el software disponible (fluidsynt, Virtual Keyboard,...). Hi ha quatre combinacions:&lt;br /&gt;
*tocar software i sonar software (proj4, v1)&lt;br /&gt;
*tocar software i sonar hardware (proj4, v2)&lt;br /&gt;
*tocar hardware i sonar software (proj4, v3)&lt;br /&gt;
*tocar hardware i sonar hardware (proj4, v4)&lt;br /&gt;
&lt;br /&gt;
Aquí es publica estrictament el codi. En aquest  [[Aclaratori_MidiShare:_tocar_i_fer_sonar_m%C3%BAsica._Solucions_software_i_hardware#Programant_MidiShare_amb_Java link]] es publica l'explicació de totes les combinacions hardware i software, i les connexions que s'han de fer.&lt;br /&gt;
&lt;br /&gt;
=v1: tocar software i sonar software=&lt;br /&gt;
Parteixo de MidiShareIOTest.java.&lt;br /&gt;
&lt;br /&gt;
Necessito MidiAppl.class. He de compilar.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /usr/src/midishare/lang/java/native/grame/midishare&lt;br /&gt;
$ sudo javac -classpath /usr/src/midishare/lang/java/native -d /usr/src/midishare/lang/java/native/grame/midishare MidiAppl.java&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
D'aquesta manera compilem MidiAppl.java i obtenim les classes en el mateix directori: MidiAppl.class, DriverInfos.class, MidiApplImpl.class, Midi.class, MidiPollingThread.class, ReadEvInfo.class, SmpteLoc.class, WriteEvInfo.class, MidiApplPolling.class, MidiException.class, MidiTask.class, SlotInfos.class, SyncInfo.class&lt;br /&gt;
&lt;br /&gt;
Tota la nomenclatura dels ports és per a Windows, o sigui que l'elimino.$ cd /usr/src/midishare/lang/java/native/grame/midishare&lt;br /&gt;
$ sudo javac -classpath /usr/src/midishare/lang/java/native -d /usr/src/midishare/lang/java/native/grame/midishare MidiAppl.java&lt;br /&gt;
&lt;br /&gt;
D'aquesta manera compilem MidiAppl.java i obtenim les classes en el mateix directori: MidiAppl.class, DriverInfos.class, MidiApplImpl.class, Midi.class, MidiPollingThread.class, ReadEvInfo.class, SmpteLoc.class, WriteEvInfo.class, MidiApplPolling.class, MidiException.class, MidiTask.class, SlotInfos.class, SyncInfo.class&lt;br /&gt;
&lt;br /&gt;
Tota la nomenclatura dels ports és per a Windows.&lt;br /&gt;
&lt;br /&gt;
script proj4_v1_UA25EX.sh&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
/usr/src/midishare/src/linux/applications/msconnect/msconnect &amp;amp;&lt;br /&gt;
/usr/src/midishare/src/linux/applications/msdisplay/msdisplay &amp;amp;&lt;br /&gt;
/usr/src/midishare/src/linux/applications/mscontrol/mscontrol &amp;amp;&lt;br /&gt;
/usr/bin/vkeybd &amp;amp;&lt;br /&gt;
sleep 2&lt;br /&gt;
xterm -e 'bash -c &amp;quot;/usr/local/bin/fluidsynth -a alsa -m midishare -o audio.alsa.device='plughw:1' -c 2 -z 64 -r 96000 -l  /home/joan/soundfonts/collections/Casio_VL_1.SF2&amp;quot;' &amp;amp;&lt;br /&gt;
sleep 2&lt;br /&gt;
xterm -e '/usr/local/bin/msAlsaSeq &amp;quot;ALSA_MS_bridge&amp;quot; -i &amp;quot;Virtual Keyboard&amp;quot;:0' &amp;amp;&lt;br /&gt;
sleep 2&lt;br /&gt;
# java -classpath /usr/src/midishare/lang/java/native:/home/joan/workspace/Proj4/bin v1.Proj4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proj4.class&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package v1;&lt;br /&gt;
&lt;br /&gt;
import java.awt.*;&lt;br /&gt;
import java.awt.event.*;&lt;br /&gt;
&lt;br /&gt;
import grame.midishare.*;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Proj4 extends MidiAppl {&lt;br /&gt;
&lt;br /&gt;
    private int field;&lt;br /&gt;
	&lt;br /&gt;
	public Proj4() {&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void Open(String name) throws MidiException {&lt;br /&gt;
        super.Open(name);&lt;br /&gt;
        configureFilter();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* kill active sensing */&lt;br /&gt;
    void configureFilter() {&lt;br /&gt;
        int i;&lt;br /&gt;
        for (i = 0; i &amp;lt; 256; i++) {&lt;br /&gt;
            Midi.AcceptType(filter, i, 1);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        for (i = 0; i &amp;lt; 16; i++) {&lt;br /&gt;
            Midi.AcceptChan(filter, i, 1);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        Midi.AcceptType(filter, Midi.typeActiveSens, 0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /** Simply notify that an input event occurred, print what kind */&lt;br /&gt;
    public void ReceiveAlarm(int ev) {&lt;br /&gt;
    	int event_newnote;&lt;br /&gt;
    	int event_newprogram;&lt;br /&gt;
    	switch (Midi.GetType(ev)) {&lt;br /&gt;
            case Midi.typeNote :&lt;br /&gt;
                System.out.println(&amp;quot;Proj4, received typeNote&amp;quot;);&lt;br /&gt;
                //afegim una nota d'octava&lt;br /&gt;
                event_newnote = Midi.NewEv(Midi.typeNote); &lt;br /&gt;
	            if (event_newnote != 0) {&lt;br /&gt;
	                Midi.SetChan(event_newnote, Midi.GetChan(ev)); // set the Midi channel&lt;br /&gt;
	                Midi.SetField(event_newnote, 0, Midi.GetData0(ev)+12); //nota&lt;br /&gt;
	                Midi.SetField(event_newnote, 1, Midi.GetData1(ev));  //volum &lt;br /&gt;
	            }&lt;br /&gt;
	            if (Midi.GetData0(ev)!=60){&lt;br /&gt;
		            Midi.SendIm(this.refnum, ev);&lt;br /&gt;
		            Midi.SendIm(this.refnum, event_newnote);&lt;br /&gt;
	            }&lt;br /&gt;
&lt;br /&gt;
	            break;&lt;br /&gt;
            case (Midi.typeKeyOn):&lt;br /&gt;
                System.out.println(&amp;quot;Proj4, received typeKeyOn: &amp;quot; + Midi.GetData0(ev));&lt;br /&gt;
&lt;br /&gt;
	        	//canvi de programa&lt;br /&gt;
            	if (Midi.GetData0(ev)&amp;gt;=60 &amp;amp; Midi.GetData0(ev)&amp;lt;=72 ){&lt;br /&gt;
	        		event_newprogram = Midi.NewEv(Midi.typeProgChange); &lt;br /&gt;
	        		if (event_newprogram != 0) {&lt;br /&gt;
	            		Midi.SetChan(event_newprogram, Midi.GetChan(ev));&lt;br /&gt;
	            		Midi.SetData0(event_newprogram, Midi.GetData0(ev)-60); //canvi de programa&lt;br /&gt;
	            		Midi.SendIm(this.refnum, event_newprogram);&lt;br /&gt;
	            		System.out.println(&amp;quot;Proj4, canvi de programa: &amp;quot; +  (Midi.GetData0(ev)-60));&lt;br /&gt;
	        		}&lt;br /&gt;
	        	}&lt;br /&gt;
            	&lt;br /&gt;
            	//afegim una nota d'octava&lt;br /&gt;
            	event_newnote = Midi.NewEv(Midi.typeKeyOn); &lt;br /&gt;
	            if (event_newnote != 0) {&lt;br /&gt;
	                Midi.SetChan(event_newnote, Midi.GetChan(ev)); // set the Midi channel&lt;br /&gt;
	                Midi.SetField(event_newnote, 0, Midi.GetData0(ev)+12); //nota&lt;br /&gt;
	                Midi.SetField(event_newnote, 1, Midi.GetData1(ev));  //volum                  &lt;br /&gt;
	            }&lt;br /&gt;
	            if (Midi.GetData0(ev)!=60){&lt;br /&gt;
		            Midi.SendIm(this.refnum, ev);&lt;br /&gt;
		            //Midi.SendIm(this.refnum, event_newnote);&lt;br /&gt;
	            }&lt;br /&gt;
&lt;br /&gt;
	            break;&lt;br /&gt;
            case Midi.typeKeyOff :&lt;br /&gt;
                System.out.println(&amp;quot;Proj4, received typeKeyOff: &amp;quot; + Midi.GetData0(ev));&lt;br /&gt;
            	&lt;br /&gt;
            	//apaguem la nota d'octava&lt;br /&gt;
            	event_newnote = Midi.NewEv(Midi.typeKeyOff); &lt;br /&gt;
	            if (event_newnote != 0) {&lt;br /&gt;
	                Midi.SetChan(event_newnote, Midi.GetChan(ev)); // set the Midi channel&lt;br /&gt;
	                Midi.SetField(event_newnote, 0, Midi.GetData0(ev)+12); //nota&lt;br /&gt;
	                Midi.SetField(event_newnote, 1, 0);  //volum                  &lt;br /&gt;
	            }&lt;br /&gt;
	            if (Midi.GetData0(ev)!=60){&lt;br /&gt;
		            Midi.SendIm(this.refnum, ev);&lt;br /&gt;
		            //Midi.SendIm(this.refnum, event_newnote);&lt;br /&gt;
	            }&lt;br /&gt;
&lt;br /&gt;
	            break;&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
&lt;br /&gt;
        int installed = 0;&lt;br /&gt;
        try {&lt;br /&gt;
            installed = Midi.Share();&lt;br /&gt;
        }&lt;br /&gt;
        catch (UnsatisfiedLinkError e) {&lt;br /&gt;
            e.printStackTrace();&lt;br /&gt;
            System.out.println(&lt;br /&gt;
                &amp;quot;\nMidiShare Java API probably not installed properly, grame.midishare.Midi.Share() barfed.\n&amp;quot; + e);&lt;br /&gt;
            System.exit(0);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        final Proj4 midiHandler = new Proj4();&lt;br /&gt;
&lt;br /&gt;
        try {&lt;br /&gt;
            midiHandler.Open(&amp;quot;Proj4&amp;quot;);&lt;br /&gt;
            Midi.Connect(midiHandler.refnum, 0, 1);&lt;br /&gt;
            Midi.Connect(0, midiHandler.refnum, 1);&lt;br /&gt;
            // Check output connection&lt;br /&gt;
            int connected = Midi.IsConnected(midiHandler.refnum, 0);&lt;br /&gt;
            System.out.println(&amp;quot;Connected for input? &amp;quot; + connected);&lt;br /&gt;
&lt;br /&gt;
            // Check input connection&lt;br /&gt;
            connected = Midi.IsConnected(0, midiHandler.refnum);&lt;br /&gt;
            System.out.println(&amp;quot;Connected for output? &amp;quot; + connected);&lt;br /&gt;
&lt;br /&gt;
            //em connecto a fluidsynth&lt;br /&gt;
            int ref_fluidsynth;&lt;br /&gt;
            if ((ref_fluidsynth = Midi.GetNamedAppl(&amp;quot;fluidsynth&amp;quot;)) &amp;gt; 0) Midi.Connect (midiHandler.refnum,ref_fluidsynth, 1);&lt;br /&gt;
            //em connecto al mscontrol&lt;br /&gt;
            int ref_mscontrol;&lt;br /&gt;
            if ((ref_mscontrol = Midi.GetNamedAppl(&amp;quot;mscontrol&amp;quot;)) &amp;gt; 0) Midi.Connect (ref_mscontrol,midiHandler.refnum, 1);&lt;br /&gt;
            // msAlsaSeq &amp;quot;bridge&amp;quot;. Amb aconnectgui connecto el vkeybd amb el bridge (driver midishare-ALSA)&lt;br /&gt;
            //i ara he de connectar el bridge amb la meva aplicació (que està connectada al fluidsynth)&lt;br /&gt;
            int ref_bridge;&lt;br /&gt;
            if ((ref_bridge = Midi.GetNamedAppl(&amp;quot;ALSA_MS_bridge&amp;quot;)) &amp;gt; 0) Midi.Connect (ref_bridge,midiHandler.refnum, 1);&lt;br /&gt;
            //com a control, connecto Proj4 al msdisplay&lt;br /&gt;
            int ref_display;&lt;br /&gt;
            if ((ref_display = Midi.GetNamedAppl(&amp;quot;msdisplay&amp;quot;)) &amp;gt; 0) Midi.Connect (midiHandler.refnum,ref_display, 1);&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
        catch (MidiException e1) {&lt;br /&gt;
            System.out.println(&amp;quot;Error opening Proj4: &amp;quot; + e1);&lt;br /&gt;
            e1.printStackTrace();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aquí es mostra la discussió a la llista LAU (maig-juny 2009) per arrencar Beatrix (un sintetitzador que imita els orgues Hammond) des d'un script (estudiar):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Re: [LAU] beatrix + eeepc + nanokontrol&lt;br /&gt;
Sunday, May 31, 2009 11:27 PM&lt;br /&gt;
From:&lt;br /&gt;
&amp;quot;oz&amp;quot; &amp;lt;oz@bluemonk.de&amp;gt;&lt;br /&gt;
Add sender to Contacts&lt;br /&gt;
To:&lt;br /&gt;
linux-audio-user@lists.linuxaudio.org&lt;br /&gt;
&lt;br /&gt;
Very helpful, thanks a lot, Robin!&lt;br /&gt;
I bundled all I need to start beatrix in a little script, that I start from&lt;br /&gt;
an icon on my KDE-desktop now:&lt;br /&gt;
-----------------------------------------------------------------&lt;br /&gt;
#/bin/sh&lt;br /&gt;
# beatrix.sh virtually connects my midi-devices with beatrix and starts it.&lt;br /&gt;
&lt;br /&gt;
PRESETS=/home/me/beatrix-presets.txt&lt;br /&gt;
BEA_DIR=/home/me/beatrix&lt;br /&gt;
&lt;br /&gt;
vkeybd --preset $PRESETS &amp;amp;&lt;br /&gt;
sleep 1&lt;br /&gt;
&lt;br /&gt;
BEA=$(aconnect -o -l | awk '/Virtual Raw MIDI 1-3/{print $2.&amp;quot;0&amp;quot;}')&lt;br /&gt;
&lt;br /&gt;
KBD=$(aseqdump -l | awk '/UM-1SX/{print $1}')&lt;br /&gt;
NANOK=$(aseqdump -l | awk '/nanoKONTROL/{print $1}')&lt;br /&gt;
VKBD=$(aseqdump -l | awk '/Virtual Keyboard/{print $1}')&lt;br /&gt;
&lt;br /&gt;
aconnect $KBD $BEA&lt;br /&gt;
aconnect $NANOK $BEA&lt;br /&gt;
aconnect $VKBD $BEA&lt;br /&gt;
&lt;br /&gt;
cd $BEA_DIR&lt;br /&gt;
$BEA_DIR/beatrix&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
There were two pitfalls I had to avoid. The ID of the Virtual Raw MIDI&lt;br /&gt;
interface depends on the connected usb-midi-devices at boottime. Only when&lt;br /&gt;
nothing is connected, it has the ID 1-3 as used in the script (else 3-3 for&lt;br /&gt;
example). So I boot the eeepc with with my keyboard and nanokontrol unplugged.&lt;br /&gt;
When KDE is up, I plug them in. One klick on my script-icon and I'm ready to&lt;br /&gt;
play!&lt;br /&gt;
&lt;br /&gt;
The second pitfall were the KDE system-sounds. They can result in '/dev/dsp&lt;br /&gt;
busy' when beatrix starts. Now I disabled all system-sounds in&lt;br /&gt;
KDE-control-center.&lt;br /&gt;
&lt;br /&gt;
I like your &amp;quot;Jackification&amp;quot; and will try it after I'm familiar with the&lt;br /&gt;
current release of beatrix. Hopefully the author of beatrix proofs your&lt;br /&gt;
concept. Beatrix is hot!&lt;br /&gt;
&lt;br /&gt;
- oz&lt;br /&gt;
&lt;br /&gt;
On Sun, 31 May 2009 20:47:30 +0200&lt;br /&gt;
Robin Gareus &amp;lt;robin@gareus.org&amp;gt; wrote:&lt;br /&gt;
&lt;br /&gt;
&amp;gt; off-list: http://rg42.org/wiki/beatrix - Bend beatix' license on your&lt;br /&gt;
&amp;gt; own account and patch it with JACK and ALSA-midi support ;)&lt;br /&gt;
[...]&lt;br /&gt;
&amp;gt; What is your problem with `aconnect` ? Are you looking for sth like:&lt;br /&gt;
&amp;gt;&lt;br /&gt;
&amp;gt; #/bin/sh&lt;br /&gt;
&amp;gt; BEA=$(aconnect -o -l | awk '/Virtual Raw MIDI 1-3/{print $2.&amp;quot;0&amp;quot;}')&lt;br /&gt;
&amp;gt; VKBD=$(aseqdump -l | awk '/Virtual Keyboard/{print $1}')&lt;br /&gt;
&amp;gt; aconnect $BEA $VKBD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=v2: tocar software i sonar hardware=&lt;br /&gt;
Depenent de la versió en què estic, canvia el script i les connexions que s'estableixen dins el codi Java.&lt;br /&gt;
&lt;br /&gt;
script proj4_v2_UA25EX.sh&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
/usr/src/midishare/src/linux/applications/msconnect/msconnect &amp;amp;&lt;br /&gt;
/usr/src/midishare/src/linux/applications/msdisplay/msdisplay &amp;amp;&lt;br /&gt;
/usr/src/midishare/src/linux/applications/mscontrol/mscontrol &amp;amp;&lt;br /&gt;
/usr/bin/vkeybd &amp;amp;&lt;br /&gt;
sleep 2&lt;br /&gt;
xterm -e '/usr/local/bin/msAlsaSeq &amp;quot;ALSA_MS_bridge&amp;quot; -i &amp;quot;Virtual Keyboard&amp;quot;:0 -o &amp;quot;UA-25EX&amp;quot;:0' &amp;amp;&lt;br /&gt;
sleep 2&lt;br /&gt;
# java -classpath /usr/src/midishare/lang/java/native:/home/joan/workspace/Proj4/bin v1.Proj4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proj4.class&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        try {&lt;br /&gt;
            midiHandler.Open(&amp;quot;Proj4&amp;quot;);&lt;br /&gt;
            Midi.Connect(midiHandler.refnum, 0, 1);&lt;br /&gt;
            Midi.Connect(0, midiHandler.refnum, 1);&lt;br /&gt;
            // Check output connection&lt;br /&gt;
            int connected = Midi.IsConnected(midiHandler.refnum, 0);&lt;br /&gt;
            System.out.println(&amp;quot;Connected for input? &amp;quot; + connected);&lt;br /&gt;
&lt;br /&gt;
            // Check input connection&lt;br /&gt;
            connected = Midi.IsConnected(0, midiHandler.refnum);&lt;br /&gt;
            System.out.println(&amp;quot;Connected for output? &amp;quot; + connected);&lt;br /&gt;
&lt;br /&gt;
            //em connecto al mscontrol&lt;br /&gt;
            int ref_mscontrol;&lt;br /&gt;
            if ((ref_mscontrol = Midi.GetNamedAppl(&amp;quot;mscontrol&amp;quot;)) &amp;gt; 0) Midi.Connect (ref_mscontrol,midiHandler.refnum, 1);&lt;br /&gt;
            // msAlsaSeq &amp;quot;bridge&amp;quot;. Amb aconnectgui connecto el vkeybd amb el bridge (driver midishare-ALSA)&lt;br /&gt;
            //també connecto el bridge amb la Edirol UA-25EX&lt;br /&gt;
            //i ara he de connectar el bridge amb la meva aplicació, en els dos sentits&lt;br /&gt;
            int ref_bridge;&lt;br /&gt;
            if ((ref_bridge = Midi.GetNamedAppl(&amp;quot;ALSA_MS_bridge&amp;quot;)) &amp;gt; 0) Midi.Connect (midiHandler.refnum,ref_bridge, 1);&lt;br /&gt;
            if ((ref_bridge = Midi.GetNamedAppl(&amp;quot;ALSA_MS_bridge&amp;quot;)) &amp;gt; 0) Midi.Connect (ref_bridge,midiHandler.refnum, 1);&lt;br /&gt;
            //com a control, connecto Proj4 al msdisplay&lt;br /&gt;
            int ref_display;&lt;br /&gt;
            if ((ref_display = Midi.GetNamedAppl(&amp;quot;msdisplay&amp;quot;)) &amp;gt; 0) Midi.Connect (midiHandler.refnum,ref_display, 1);&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=v3: tocar hardware i sonar software=&lt;br /&gt;
script proj4_v3_UA25EX.sh&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
/usr/src/midishare/src/linux/applications/msconnect/msconnect &amp;amp;&lt;br /&gt;
/usr/src/midishare/src/linux/applications/msdisplay/msdisplay &amp;amp;&lt;br /&gt;
/usr/src/midishare/src/linux/applications/mscontrol/mscontrol &amp;amp;&lt;br /&gt;
sleep 2&lt;br /&gt;
xterm -e 'bash -c &amp;quot;/usr/local/bin/fluidsynth -a alsa -m midishare -o audio.alsa.device='hw:0' -c 2 -z 128 -r 44100 -l  /home/joan/soundfonts/collections/Casio_VL_1.SF2&amp;quot;' &amp;amp;&lt;br /&gt;
sleep 2&lt;br /&gt;
xterm -e '/usr/local/bin/msAlsaSeq &amp;quot;ALSA_MS_bridge&amp;quot; -i &amp;quot;Virtual Keyboard&amp;quot;:0' &amp;amp;&lt;br /&gt;
sleep 2&lt;br /&gt;
java -classpath /usr/src/midishare/lang/java/native:/home/joan/workspace/Proj4/bin v1.Proj4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proj4.class&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        try {&lt;br /&gt;
            midiHandler.Open(&amp;quot;Proj4&amp;quot;);&lt;br /&gt;
            Midi.Connect(midiHandler.refnum, 0, 1);&lt;br /&gt;
            Midi.Connect(0, midiHandler.refnum, 1);&lt;br /&gt;
            // Check output connection&lt;br /&gt;
            int connected = Midi.IsConnected(midiHandler.refnum, 0);&lt;br /&gt;
            System.out.println(&amp;quot;Connected for input? &amp;quot; + connected);&lt;br /&gt;
&lt;br /&gt;
            // Check input connection&lt;br /&gt;
            connected = Midi.IsConnected(0, midiHandler.refnum);&lt;br /&gt;
            System.out.println(&amp;quot;Connected for output? &amp;quot; + connected);&lt;br /&gt;
&lt;br /&gt;
            //em connecto a fluidsynth&lt;br /&gt;
            int ref_fluidsynth;&lt;br /&gt;
            if ((ref_fluidsynth = Midi.GetNamedAppl(&amp;quot;fluidsynth&amp;quot;)) &amp;gt; 0) Midi.Connect (midiHandler.refnum,ref_fluidsynth, 1);&lt;br /&gt;
            // msAlsaSeq &amp;quot;bridge&amp;quot;. Amb aconnectgui connecto el vkeybd amb el bridge (driver midishare-ALSA)&lt;br /&gt;
            //i ara he de connectar el bridge amb la meva aplicació (que està connectada al fluidsynth)&lt;br /&gt;
            int ref_bridge;&lt;br /&gt;
            if ((ref_bridge = Midi.GetNamedAppl(&amp;quot;ALSA_MS_bridge&amp;quot;)) &amp;gt; 0) Midi.Connect (ref_bridge,midiHandler.refnum, 1);&lt;br /&gt;
            //com a control, connecto Proj4 al msdisplay&lt;br /&gt;
            int ref_display;&lt;br /&gt;
            if ((ref_display = Midi.GetNamedAppl(&amp;quot;msdisplay&amp;quot;)) &amp;gt; 0) Midi.Connect (midiHandler.refnum,ref_display, 1);&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=v4: tocar hardware i sonar hardware=&lt;br /&gt;
script proj4_v4_UA25EX.sh&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
/usr/src/midishare/src/linux/applications/msconnect/msconnect &amp;amp;&lt;br /&gt;
/usr/src/midishare/src/linux/applications/msdisplay/msdisplay &amp;amp;&lt;br /&gt;
/usr/src/midishare/src/linux/applications/mscontrol/mscontrol &amp;amp;&lt;br /&gt;
sleep 2&lt;br /&gt;
xterm -e '/usr/local/bin/msAlsaSeq &amp;quot;ALSA_MS_bridge&amp;quot; -i &amp;quot;UA-25EX&amp;quot;:0 -o &amp;quot;UA-25EX&amp;quot;:0' &amp;amp;&lt;br /&gt;
sleep 2&lt;br /&gt;
java -classpath /usr/src/midishare/lang/java/native:/home/joan/workspace/Proj4/bin v4.Proj4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proj4.class&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        try {&lt;br /&gt;
            midiHandler.Open(&amp;quot;Proj4&amp;quot;);&lt;br /&gt;
            Midi.Connect(midiHandler.refnum, 0, 1);&lt;br /&gt;
            Midi.Connect(0, midiHandler.refnum, 1);&lt;br /&gt;
            // Check output connection&lt;br /&gt;
            int connected = Midi.IsConnected(midiHandler.refnum, 0);&lt;br /&gt;
            System.out.println(&amp;quot;Connected for input? &amp;quot; + connected);&lt;br /&gt;
&lt;br /&gt;
            // Check input connection&lt;br /&gt;
            connected = Midi.IsConnected(0, midiHandler.refnum);&lt;br /&gt;
            System.out.println(&amp;quot;Connected for output? &amp;quot; + connected);&lt;br /&gt;
&lt;br /&gt;
            //em connecto al mscontrol&lt;br /&gt;
            int ref_mscontrol;&lt;br /&gt;
            if ((ref_mscontrol = Midi.GetNamedAppl(&amp;quot;mscontrol&amp;quot;)) &amp;gt; 0) Midi.Connect (ref_mscontrol,midiHandler.refnum, 1);&lt;br /&gt;
            // msAlsaSeq &amp;quot;bridge&amp;quot;. Amb aconnectgui connecto el vkeybd amb el bridge (driver midishare-ALSA)&lt;br /&gt;
            //també connecto el bridge amb la Edirol UA-25EX&lt;br /&gt;
            //i ara he de connectar el bridge amb la meva aplicació, en els dos sentits&lt;br /&gt;
            int ref_bridge;&lt;br /&gt;
            if ((ref_bridge = Midi.GetNamedAppl(&amp;quot;ALSA_MS_bridge&amp;quot;)) &amp;gt; 0) Midi.Connect (midiHandler.refnum,ref_bridge, 1);&lt;br /&gt;
            if ((ref_bridge = Midi.GetNamedAppl(&amp;quot;ALSA_MS_bridge&amp;quot;)) &amp;gt; 0) Midi.Connect (ref_bridge,midiHandler.refnum, 1);&lt;br /&gt;
            //com a control, connecto Proj4 al msdisplay&lt;br /&gt;
            int ref_display;&lt;br /&gt;
            if ((ref_display = Midi.GetNamedAppl(&amp;quot;msdisplay&amp;quot;)) &amp;gt; 0) Midi.Connect (midiHandler.refnum,ref_display, 1);&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>