import java.awt.*; import java.awt.event.*; import java.io.*; import javax.sound.sampled.*; import java.applet.Applet; public class Digital extends Panel implements MouseMotionListener, Runnable, ActionListener{ ByteArrayOutputStream hoidla=new ByteArrayOutputStream(); int kandesagedus =10000; byte[] andmeid=new byte[kandesagedus/4]; //5 sekundit int korgus; int korgus2; double eelsag; double eelsag1; SourceDataLine lined; AudioFormat formaadike = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, kandesagedus, 8, 1, 1, kandesagedus, false); //8bitine heli, 1, kanal, 1 bait raami kohta byte[] andmed; byte[] puhver; AudioFormat formaat; //Button ise=new Button("Ise"); Button hiir=new Button("Salvestan hiir_pala"); Button touseb=new Button("Tõusev heli"); Button kopeeri=new Button("Kopeeri"); Button loika=new Button("Lõika"); Button kleebi=new Button("Kleebi"); Button kirjutaYle=new Button("Kirjuta üle"); Button tyhjenda=new Button("Vaikseks"); Button mangi=new Button("Mängi"); Button mangiLoik=new Button("Mängi lõik"); Margistusala1 ala=new Margistusala1(); Button lae=new Button("Lae fail"); TextField tfLae=new TextField("esimene.wav", 20); Button salvesta=new Button("Salvesta fail"); TextField tfSalvesta=new TextField("salvestis.wav", 20); SourceDataLine kanal; public Digital(){ Panel p=new Panel(); p.add(tyhjenda); p.add(loika); p.add(kopeeri); p.add(kleebi); p.add(kirjutaYle); p.add(mangi); p.add(mangiLoik); p.add(touseb); // p.add(ise); p.add(hiir); Panel alapaneel=new Panel(); alapaneel.add(lae); alapaneel.add(tfLae); alapaneel.add(salvesta); alapaneel.add(tfSalvesta); setLayout(new BorderLayout()); add(p, BorderLayout.NORTH); add(ala, BorderLayout.CENTER); add(alapaneel, BorderLayout.SOUTH); loika.addActionListener(this); kopeeri.addActionListener(this); kleebi.addActionListener(this); kirjutaYle.addActionListener(this); tyhjenda.addActionListener(this); lae.addActionListener(this); salvesta.addActionListener(this); mangi.addActionListener(this); mangiLoik.addActionListener(this); touseb.addActionListener(this); ala.addMouseMotionListener(this); hiir.addActionListener(this); //ise.addActionListener(this); try{ lined = (SourceDataLine) AudioSystem.getLine( new DataLine.Info(SourceDataLine.class, formaadike, AudioSystem.NOT_SPECIFIED) ); lined.open(formaadike); lined.start(); }catch(Exception viga){viga.printStackTrace();} koostaAndmed(); new Thread(this).start(); } public void mouseDragged(MouseEvent e){ } public void mouseMoved(MouseEvent e){ korgus=e.getY(); korgus2=e.getX(); System.out.println("Korgus: "+korgus); } public void actionPerformed(ActionEvent e){ if(e.getSource()==lae){laeFail(); } if(e.getSource()==salvesta){salvestaFail(); } if(e.getSource()==tyhjenda){tyhjendaLoik(); } if(e.getSource()==loika){loikaLoik(); } if(e.getSource()==kopeeri){kopeeriLoik(); } if(e.getSource()==kleebi){kleebiLoik(); } if(e.getSource()==kirjutaYle){kirjutaLoikYle(); } if(e.getSource()==mangi){mangi(); } if(e.getSource()==mangiLoik){mangiLoik(); } if(e.getSource()==touseb){touse(); } if(e.getSource()==hiir){hiir(); } //if(e.getSource()==ise){; } } 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(); ala.kogupikkus=andmed.length; 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 loikaLoik(){ byte[] uus=new byte[andmed.length-(ala.loppKaader()-ala.algKaader())]; puhver=new byte[ala.loppKaader()-ala.algKaader()]; System.arraycopy(andmed, ala.algKaader(), puhver, 0, (ala.loppKaader()-ala.algKaader())); System.arraycopy(andmed, 0, uus, 0, ala.algKaader()); System.arraycopy(andmed, ala.loppKaader(), uus, ala.algKaader(), andmed.length-ala.loppKaader()); andmed=uus; uuendaAla(); } public void tyhjendaLoik(){ for(int i=ala.algKaader(); i<=ala.loppKaader(); i++){ andmed[i]=(byte)0; } } public void kopeeriLoik(){ puhver=new byte[ala.loppKaader()-ala.algKaader()]; for(int i=0; i