Ciao!
Ecco l'erorre che mi da:
codice:
Test2.java:16: non-static variable this cannot be referenced from a static context
Multi t1 = new Multi("Fondamentale",80,rcv);
^
Test2.java:17: non-static variable this cannot be referenced from a static context
Multi t2 = new Multi("Terza",84,rcv);
^
Test2.java:18: non-static variable this cannot be referenced from a static context
Multi t3 = new Multi("Quinta",87,rcv);
^
3 errors
Su questo codice:
codice:
import javax.sound.midi.*;
public class Test2 {
public static void main (String args[]){
System.out.println("Ciao Mondo, questo è il mio programma Java");
try {
Synthesizer syn = MidiSystem.getSynthesizer();
if (!syn.isOpen()) syn.open();
Receiver rcv = syn.getReceiver();
Multi t1 = new Multi("Fondamentale",80,rcv);
Multi t2 = new Multi("Terza",84,rcv);
Multi t3 = new Multi("Quinta",87,rcv);
t1.start();
t2.start();
t3.start();
Thread.sleep(1000);
rcv.close();
} catch (Exception e) {}
}
class Multi extends Thread {
private String name;
private int note;
private Receiver rcv;
public Multi(String s, int n, Receiver rcv){
this.name = s;
this.note = n;
this.rcv = rcv;
}
public void run() {
play(this.rcv,note);
System.out.println(name);
}
}
public void play (Receiver r, int n) {
try {
int timeStamp = -1;
ShortMessage dn = new ShortMessage();
ShortMessage up = new ShortMessage();
dn.setMessage(ShortMessage.NOTE_ON,0,n,127);
up.setMessage(ShortMessage.NOTE_OFF,0,n,127);
r.send(dn,timeStamp);
Thread.sleep(1000);
r.send(up,timeStamp);
} catch(Exception e ){
System.out.println(e);
}
}
}
le linee in errore sono queste:
codice:
Multi t1 = new Multi("Fondamentale",80,rcv);
Multi t2 = new Multi("Terza",84,rcv);
Multi t3 = new Multi("Quinta",87,rcv);
Non capisco cosa ci sia di sbagliato, ma sono alle prime armi, per cui...
Grazie anticipatamente.