import java.applet.Applet; import java.awt.*; import java.awt.event.*; import javax.sound.midi.*; public class Kitarr5 extends Applet implements MouseListener{ int krihvivahe=20; int ylaserv=60; int keeltevahe=10; int vasakserv=50; int keeltearv=6; int krihvidearv=5; MidiChannel kanal; int algkorgused[]={40, 45, 50, 55, 59, 64}; int kolavkorgused[]=new int[6]; int kolavkrihvid[]={-1, -1, -1, -1, -1, -1}; int tapiraadius=5; /** * Konstruktoris avatakse MIDI kanal. Mängivaks instrumendiks * määratakse kitarr. */ public Kitarr5(){ try{ Synthesizer synt=MidiSystem.getSynthesizer(); synt.open(); kanal=synt.getChannels()[0]; kanal.programChange(0, 25); addMouseListener(this); }catch(Exception e){e.printStackTrace();} } /** * Leitakse valitud krihvi järjekorranumber. Lahtist * keelt tähistab krihv 0. */ int leiaKrihv(int ekraaniY){ if(ekraaniYvasakserv+keeltearv*keeltevahe){return -1;} return (ekraaniX-vasakserv)/keeltevahe; } public void mousePressed(MouseEvent e){ int krihvinr=leiaKrihv(e.getY()); int keelenr=leiaKeel(e.getX()); System.out.println(keelenr); if(keelenr==-1){return;} //möödas, katkestan //kui vajutati juba mängivale kohale if(kolavkrihvid[keelenr]==krihvinr){ kanal.noteOff(kolavkorgused[keelenr]); kolavkrihvid[keelenr]=-1; } else { //Kui mängiti mõnelt teiselt kohalt if(kolavkrihvid[keelenr]!=-1){ kanal.noteOff(kolavkorgused[keelenr]); } kolavkrihvid[keelenr]=krihvinr; kolavkorgused[keelenr]=algkorgused[keelenr]+krihvinr; kanal.noteOn(kolavkorgused[keelenr], 60); } repaint(); } public void mouseReleased(MouseEvent e){ } public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseClicked(MouseEvent e){} public void paint(Graphics g){ //krihvide joonistamine for(int krihv=0; krihv<=krihvidearv; krihv++){ g.drawLine(vasakserv, krihvivahe*krihv+ylaserv, (keeltearv-1)*keeltevahe+vasakserv, krihvivahe*krihv+ylaserv); } //keelte joonistamine for(int keel=0; keel