مساء الخير جميعاً
استناداً إلى الكتاب .. هذا البرنامج يقوم بعمل نوته موسيقيه ( بالصوت ) .. يتزامن معها اشكال هندسيه تعرض على الشاشه
بصراحه لم افهم الكثير بالنسبه لهذا الكود
اتمنى ارشادي للخطأ ..
واتمنى لو كان في هذا المنتدى عضو قام بشرح طريقة تتبع خطوات سير عمل البرامج في ال netBeans
اتمنى لو امكن ارشادي إلى الرابط وأكون له من الشاكرين
هذا هو برنامجي:
import java.io.*;
import javax.swing.*;
import java.awt.*;
public class MiniMusicPlayer {
static JFrame f = new JFrame("my first music video");
static MyDrawPanel ml;
public static void main(String[] args) {
MiniMusicPlayer mini = new MiniMusicPlayer();
mini.go();
}
public void setUpGui() {
ml = new MyDrawPanel();
f.setContentPane(ml) ;
f.setBounds(30,30,300 ,300);
f.setVisible(true) ;
}
public void go() {
setUpGui();
try{
Sequencer sequencer = MidiSystem.getSequencer();
sequencer.open();
sequencer.addControllerEventListener(ml, new int[] {127});
// int [] eventsIWant = {127};
//sequencer.addControllerEventListener(this, eventsIWant)
Sequence seq =new Sequence(Sequence.PPQ, 4);
Track track = seq.createTrack();
int r = 0;
for (int i = 0; i < 60; i+=4) {
r = (int) ((Math.random() * 50) + 1);
track.add(makeEvent(144,1,r,100,i));
track.add(makeEvent(176,1,127,0,i));
track.add(makeEvent(128,1,r,100,i+2));
}
sequencer.setSequence(seq);
sequencer.start();
sequencer.setTempoInBPM(120);
} catch (Exception ex) {ex.printStackTrace();}
}
public void controlChange (ShortMessage event) {
System.out.println("la");
}
public static MidiEvent makeEvent(int comd, int chan, int one, int two, int tick) {
MidiEvent event = null;
try {
ShortMessage a = new ShortMessage();
a.setMessage(comd, chan, one, two);
event = new MidiEvent(a, tick);
} catch (Exception e) {}
return event;
}
}
// }
import javax.sound.midi.*;
----------------------------
class MyDrawPanel extends JPanel implements ControllerEventListener {
boolean msg = false;
public void controlChange(ShortMessage event) {
msg = true;
repaint();
}
public void paintComponent (Graphics g) {
if (msg) {
Graphics2D g2 = (Graphics2D) g;
int r = (int) (Math.random() * 250);
int gr = (int) (Math.random() * 250);
int b = (int) (Math.random() * 250);
g2.setColor(new Color(r,gr,b));
int ht = (int) ((Math.random() * 120) + 10);
int width = (int) ((Math.random() * 120) + 10);
int x = (int) ((Math.random() * 40) + 10);
int y = (int) ((Math.random() * 40) + 10);
g2.fillRect(x,y,ht, width);
msg = false;
}
}
}
import java.awt.*;
i
هذا كل شيئ .. :)
