import java.awt.*; import java.awt.event.*; import java.io.*; import javax.sound.sampled.*; public class DigiheliAnalyys extends Panel implements ActionListener{ byte[] andmed; byte[] puhver; AudioFormat formaat; Button mangi=new Button("Mängi"); Button lae=new Button("Lae fail"); Button analyys=new Button("Analüüsi"); TextField tfLae=new TextField("esimene.wav", 20); Button salvesta=new Button("Salvesta fail"); TextField tfSalvesta=new TextField("salvestis.wav", 20); SourceDataLine kanal; public DigiheliAnalyys(){ Panel p=new Panel(); p.add(mangi); p.add(analyys); Panel alapaneel=new Panel(); alapaneel.add(lae); alapaneel.add(tfLae); alapaneel.add(salvesta); alapaneel.add(tfSalvesta); setLayout(new BorderLayout()); add(p, BorderLayout.NORTH); add(alapaneel, BorderLayout.SOUTH); salvesta.addActionListener(this); lae.addActionListener(this); mangi.addActionListener(this); analyys.addActionListener(this); } public void actionPerformed(ActionEvent e){ if(e.getSource()==lae){ laeFail(); } if(e.getSource()==salvesta){ salvestaFail(); } if(e.getSource()==mangi){ mangi(); } if(e.getSource()==analyys){ analyys(); } } public void laeFail(){ try{ AudioInputStream sisse=AudioSystem.getAudioInputStream(new File(tfLae.getText())); ByteArrayOutputStream malu=new ByteArrayOutputStream(); int nr=sisse.read(); while(nr!=-1){ //loetakse voo sisu mälupuhvrisse malu.write(nr); nr=sisse.read(); } andmed=malu.toByteArray(); formaat=sisse.getFormat(); }catch(Exception viga){ viga.printStackTrace(); } } public void salvestaFail(){ try{ AudioInputStream ais=new AudioInputStream(new ByteArrayInputStream(andmed), formaat, andmed.length); AudioSystem.write(ais, AudioFileFormat.Type.WAVE, new File(tfSalvesta.getText())); }catch(Exception viga){ viga.printStackTrace(); } } public void mangi(){ try{ //Kontrollib, et opsüsteemilt on võimalik kanal küsida. kanal=(SourceDataLine)AudioSystem.getLine(new DataLine.Info(SourceDataLine.class, formaat, AudioSystem.NOT_SPECIFIED)); kanal.open(); kanal.start(); kanal.write(andmed, 0, andmed.length); kanal.drain(); kanal.close(); }catch(Exception ex){ ex.printStackTrace(); } } public void analyys(){ int max=0; int min=0; // esimene ülesanne: // teata helifaili kõige väiksema ning suurema kvandi väärtus for (int a=0;aandmed[a]){ min=andmed[a]; } } System.out.println("max: "+max+" min: "+min); //teine ülesanne: // jaga fail viieks mõtteliseks lõiguks ning teata iga osa kohta suurima // ja vähima väärtuse vahe float loiguPikkus=andmed.length/5; int jarg=0; for (int a=1;a<=5;a++){ max=0; min=0; for (int b=jarg;bandmed[b]){ min=andmed[b]; } } jarg=(int)loiguPikkus*a; System.out.println(a+" l6igu max: "+max+" min: "+min); } System.out.println(andmed.length/5); } public static void main(String[] argumendid){ Frame f=new Frame(); f.add(new DigiheliAnalyys()); f.setSize(600, 300); f.setVisible(true); f.addWindowListener(new Raamikuular()); } } class Raamikuular extends WindowAdapter{ public void windowClosing(WindowEvent e) { System.out.println("X-st kinni"); System.exit(0); } }