rahinterfazusuario.java

来自「This is a example about programming a ne」· Java 代码 · 共 887 行 · 第 1/3 页

JAVA
887
字号
        
    }//GEN-LAST:event_entrenarSenhalActionPerformed


    private void GraficarTFCFActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_GraficarTFCFActionPerformed
    {//GEN-HEADEREND:event_GraficarTFCFActionPerformed
// TODO add your handling code here:
        distVentana=400;
        distSolap=160;
        double[] DxVoz=ProcDSenhal.obtenerTFCF(datosVoz,distVentana,distSolap);
       // System.out.println("Longitud TFCF=" + DxVoz.length);
    }//GEN-LAST:event_GraficarTFCFActionPerformed

    private void CambiarAlfaStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_CambiarAlfaStateChanged
// TODO: Agrege su codigo aqui:
         int valor=CambiarAlfa.getValue();          
         Alfa=valor/1000.0;         
         System.out.println("Angulo Alfa=" + Alfa);
    }//GEN-LAST:event_CambiarAlfaStateChanged

    private void GraficarFPEActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_GraficarFPEActionPerformed
// TODO: Agrege su codigo aqui:
           
            double[] DxVoz2=ProcDSenhal.filtro_PreEnfasis(datosVoz,Alfa);
            double[] DxVoz=ProcDSenhal.obtenerFFT(DxVoz2);
            CanvasFPE.borrar();            
            
            CanvasFPE.setDxVoz(DxVoz);              
            
            CanvasFPE.graficar=true;
            CanvasFPE.graficarOnda=!CanvasFPE.graficarOnda;
            CanvasFPE.setIntervalo((2*datosVoz.length)/GraficoFPE.getWidth());            
            CanvasFPE.setFactorEX(1/9.0);
            CanvasFPE.setFactorEY(1/5000.0);
            CanvasFPE.setTraslacionYEje(tyEje);
            CanvasFPE.repaint();         
    }//GEN-LAST:event_GraficarFPEActionPerformed

    private void GraficarFFTActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_GraficarFFTActionPerformed
    {//GEN-HEADEREND:event_GraficarFFTActionPerformed
// TODO add your handling code here:
                    
            
            double[] DxVoz=ProcDSenhal.obtenerFFT(datosVoz);
            CanvasFFT.borrar();            
            
            CanvasFFT.setDxVoz(DxVoz);              
            
            CanvasFFT.graficar=true;
            CanvasFFT.graficarOnda=!CanvasFFT.graficarOnda;
            CanvasFFT.setIntervalo((2*datosVoz.length)/GraficoFFT.getWidth());            
            CanvasFFT.setFactorEX(1/9.0);
            CanvasFFT.setFactorEY(1/5000.0);
            CanvasFFT.setTraslacionYEje(tyEje);
            CanvasFFT.repaint();          
    }//GEN-LAST:event_GraficarFFTActionPerformed

    private void ExtCaractActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_ExtCaractActionPerformed
    {//GEN-HEADEREND:event_ExtCaractActionPerformed
// TODO add your handling code here:
    }//GEN-LAST:event_ExtCaractActionPerformed

    private void AbrirArchActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_AbrirArchActionPerformed
    {//GEN-HEADEREND:event_AbrirArchActionPerformed
// TODO add your handling code here:
    }//GEN-LAST:event_AbrirArchActionPerformed

    private void DetPitchActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_DetPitchActionPerformed
    {//GEN-HEADEREND:event_DetPitchActionPerformed
// TODO add your handling code here:      

      double p=ProcDSenhal.obtencionPitch(); 
      Canvas.setPeriodoPitch(p);
      Canvas.graficarPPitch=!Canvas.graficarPPitch;   
      Canvas.setTraslacionYEje(0);
      Canvas.repaint();
      log.append("-------------------------------------------------------------------------"+nuevaLinea);        
      log.append("Periodo del pitch Resultante:   "+p+nuevaLinea);        
    }//GEN-LAST:event_DetPitchActionPerformed

    private void ElimSegInutilActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_ElimSegInutilActionPerformed
    {//GEN-HEADEREND:event_ElimSegInutilActionPerformed
// TODO add your handling code here:

            Canvas.borrar();
            int radio=10;
            double[] DxVoz=ProcDSenhal.Sel_Elim_Seg_Inservibles(radio,(2*datosVoz.length)/Grafico.getWidth());
            Canvas.setDxVoz(DxVoz);
            ProcDSenhal.setDxVoz(DxVoz);            
            
            Canvas.graficar=true;
            Canvas.graficarOnda=!Canvas.graficarOnda;
            Canvas.setIntervalo((2*datosVoz.length)/Grafico.getWidth());            
            Canvas.setFactorEX(1/4.5);
            Canvas.setFactorEY(1/35.5);
            Canvas.setTraslacionYEje(0);
            Canvas.repaint();         
    }//GEN-LAST:event_ElimSegInutilActionPerformed

    private void ResetActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_ResetActionPerformed
    {//GEN-HEADEREND:event_ResetActionPerformed
// TODO add your handling code here:
        if (evt.getSource() == Reset) 
        {
            Canvas.borrar();
            CanvasFFT.borrar();
            CanvasFPE.borrar();
            CanvasTFCF.borrar();            
            CanvasEsp.borrar();

            Canvas.repaint();
            CanvasFFT.repaint();
            CanvasFPE.repaint();            
            CanvasTFCF.repaint();            
            CanvasEsp.repaint(); 
            Reconocer.setEnabled(false);
            OpcionEntrenar.setSelected(true);
        }
                
    }//GEN-LAST:event_ResetActionPerformed

    private void abrirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_abrirActionPerformed
// TODO add your handling code here:
        if (evt.getSource() == abrir) 
        {
            int valorRetorno = fc.showOpenDialog(null);
            
            if (valorRetorno == JFileChooser.APPROVE_OPTION) 
            {
                File archivoEntrada = fc.getSelectedFile();
                int totalFramesLeidos = 0;
                int totalBytesLeidos = 0;
		/* 1. flujoEntradaAudio 
                 * El objeto flujoEntradaAudio trata el archivo de entrada como un archivo de audio
                 * y es util para establecer y leer propiedades de los archivos de audio
                 * 2. los archivos de audio se guardan con unidades minimas llamadas frames, el valor
                 * de cada frame determina la amplitud del sonido, un frame puede tener 1 byte 2 bytes 4 bytes, etc
                 * 3. se utilizara un buffer especificado por el arreglo audioBytes para leer los datos del archivo
                 * de audio a memoria
                 */		
		try {
                    AudioInputStream flujoEntradaAudio = AudioSystem.getAudioInputStream(archivoEntrada);
                    int bytesPorFrame = flujoEntradaAudio.getFormat().getFrameSize();	
                    //buffer
                    int numBytes = 1024 * bytesPorFrame; 
                    byte[] audioBytes = new byte[numBytes];
  		    // longitud de archivo de audio en bytes		
                    int longitudArchivoBytes=(int)flujoEntradaAudio.getFormat().getFrameSize()*(int)flujoEntradaAudio.getFrameLength();
                    // objeto datos mas informacion ver clase Datos.java
                    Datos datos = new Datos(longitudArchivoBytes,flujoEntradaAudio.getFormat().isBigEndian());
                    //arreglo temporal de bytes 
                    byte[] datosTemporal=new byte[longitudArchivoBytes];     
                    int pos=0; 		
                    /* el siguiente procedimiento lee los bytes del archivo de audio a memoria
                     */
                    try {
    			int numeroBytesLeidos = 0;
    			int numeroFramesLeidos = 0;    				
                        
    			while ((numeroBytesLeidos = flujoEntradaAudio.read(audioBytes)) != -1) 
                        {      				
                            numeroFramesLeidos = numeroBytesLeidos / bytesPorFrame;
                            totalFramesLeidos += numeroFramesLeidos;
      			
                            System.arraycopy(audioBytes, 0, datosTemporal, pos, numeroBytesLeidos);
                            pos=pos+numeroBytesLeidos;      				
    			}
    		
                        datos.llenarByte(datosTemporal);
      
      			datosVoz=new double[longitudArchivoBytes/bytesPorFrame];
                        /* datosVoz : contiene los valores de amplitud del archivo de audio
                         * es decir nuestros algoritmos lo haremos en este arreglo                        
                         */                        
      			datosVoz=datos.convertirByteADouble();
                        Canvas.setDxVoz(datosVoz);
                        ProcDSenhal=new ProcesamientoSenhal(datosVoz,Grafico.getWidth());
                        ExtractC=new ExtCaracteristicas(datosVoz,Grafico.getWidth());
                        RecSenhal=new ReconocimientoSenhal();
                        Canvas.graficar=true;
                        Canvas.graficarOnda=!Canvas.graficarOnda;
                        Canvas.setIntervalo((2*datosVoz.length)/Grafico.getWidth());                        
                        Canvas.setFactorEX(1/8.0);
                        Canvas.setFactorEY(1/35.5);
                        Canvas.setTraslacionYEje(0);
                        Canvas.repaint();
                        
      			/*valores para visualizar en area de texto*/      				
      			String Nombrearchivoaudio=archivoEntrada.getName();      				
      			log.append("Abriendo:   "+archivoEntrada.getName()+"."+nuevaLinea);
      			log.append("   NroBytes	Frames	BigEndian	Formato"+ nuevaLinea);
    		        log.append("  "+longitudArchivoBytes+"	"+flujoEntradaAudio.getFrameLength()+"	"+flujoEntradaAudio.getFormat().isBigEndian()+"	"+flujoEntradaAudio.getFormat().toString()+nuevaLinea);    		        
    		        //obtiene la frecuencia de sampleo
                        log.append(" Tamanho del arreglo "+datosVoz.length+nuevaLinea);    		                                
    		        int FrecuenciaDeSampleo=(int)flujoEntradaAudio.getFormat().getSampleRate();
                        
                        //*************************************************
                           CaractSenhalReconocida="Archivo: "+Nombrearchivoaudio+" NroBytes: "+longitudArchivoBytes+" Frames: "+flujoEntradaAudio.getFrameLength();
                        
                    } 
  		
                    catch (Exception ex) 
                    { 
    			log.append("No se pudo leer " + nuevaLinea);  							
                    }	                    
                } 
                catch (Exception e) 
                {  		
                    log.append("Tipo incompatible" + nuevaLinea);					
                }                	                                           	 	
            } 
            else 
            {                
                log.append("abrir ha sido cancelado por el usuario" + nuevaLinea);
            }            
            	log.setCaretPosition(log.getDocument().getLength());                       	
        }                          
   // }
    }//GEN-LAST:event_abrirActionPerformed
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new rahInterfazUsuario().setVisible(true);
            }
        });      
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JMenuItem AbrirArch;
    private javax.swing.JMenu Archivo;
    private javax.swing.JToolBar BarraHerramientas;
    private javax.swing.JSlider CambiarAlfa;
    private javax.swing.JButton DetPitch;
    private javax.swing.JButton ElimSegInutil;
    private javax.swing.JPanel Espectograma;
    private javax.swing.JMenu ExtCaract;
    private javax.swing.JPanel FFT;
    private javax.swing.JPanel FiltroPreenfasis;
    private javax.swing.JButton GraficarEsp;
    private javax.swing.JButton GraficarFFT;
    private javax.swing.JButton GraficarFPE;
    private javax.swing.JButton GraficarTFCF;
    private javax.swing.JPanel Grafico;
    private javax.swing.JPanel GraficoEsp;
    private javax.swing.JPanel GraficoFFT;
    private javax.swing.JPanel GraficoFPE;
    private javax.swing.JPanel GraficoTFCF;
    private javax.swing.JScrollPane Informacion;
    private javax.swing.JComboBox ListaMetExtCaract;
    private javax.swing.JTextArea MostrarCaracteristicas;
    private javax.swing.JTextArea MostrarResultado;
    private javax.swing.JRadioButton OpcionEntrenar;
    private javax.swing.JPanel PanelBEntrenamiento;
    private javax.swing.JPanel PanelBEsp;
    private javax.swing.JPanel PanelBFFT;
    private javax.swing.JPanel PanelBFPE;
    private javax.swing.JPanel PanelBGraf;
    private javax.swing.JPanel PanelBTFCF;
    private javax.swing.JPanel PanelEntrenamiento;
    private javax.swing.JPanel PanelMostrarCar;
    private javax.swing.JPanel PanelMostrarRes;
    private javax.swing.JPanel PanelProcRec;
    private javax.swing.JTabbedPane PanelProc_Info;
    private javax.swing.JPanel PanelReconocimiento;
    private javax.swing.JPanel PanelSenhal;
    private javax.swing.JTabbedPane PanelSenhalVoz;
    private javax.swing.JMenu ProcSenhal;
    private javax.swing.JButton Reconocer;
    private javax.swing.JMenu Reconocimiento;
    private javax.swing.JButton Reset;
    private javax.swing.JMenuItem ResetArch;
    private javax.swing.JScrollPane ScrollGrafico;
    private javax.swing.JScrollPane ScrollPTFCF;
    private javax.swing.JPanel TFCF;
    private javax.swing.JButton abrir;
    private javax.swing.JButton entrenarSenhal;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTabbedPane jTabbedPane2;
    private javax.swing.JTextArea log;
    // End of variables declaration//GEN-END:variables
    private JFileChooser fc;
    static private final String nuevaLinea = "\n";
    
    
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?