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 + -
显示快捷键?