📄 audiotool.java
字号:
/** * Creates the menu bar. */ private static void createMenuBar(JFrame jframe) { JMenuBar menuBar = new JMenuBar(); jframe.setJMenuBar(menuBar); JMenu menu = new JMenu("File"); menuBar.add(menu); JMenuItem menuItem = new JMenuItem("Open..."); menuItem.setAccelerator(KeyStroke.getKeyStroke("control O")); menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { getFilename("Open...", JFileChooser.OPEN_DIALOG); if ((filename == null) || (filename.length() == 0)) { return; } try { getAudioFromFile(filename); } catch (Exception e) { e.printStackTrace(); } } }); menu.add(menuItem); saveMenuItem = new JMenuItem("Save"); saveMenuItem.setAccelerator(KeyStroke.getKeyStroke("control S")); saveMenuItem.setEnabled(false); saveMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { if ((filename != null) && (filename.length() > 0)) { try { Utils.writeRawFile(audio, filename); saveMenuItem.setEnabled(false); } catch (IOException e) { e.printStackTrace(); } } } }); menu.add(saveMenuItem); menuItem = new JMenuItem("Save As..."); menuItem.setAccelerator(KeyStroke.getKeyStroke("control V")); menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { getFilename("Save As...", JFileChooser.SAVE_DIALOG); if ((filename == null) || (filename.length() == 0)) { return; } try { Utils.writeRawFile(audio, filename); saveMenuItem.setEnabled(false); } catch (IOException e) { e.printStackTrace(); } } }); menu.add(menuItem); menuItem = new JMenuItem("Quit"); menuItem.setAccelerator(KeyStroke.getKeyStroke("control Q")); menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { System.exit(0); } }); menu.add(menuItem); menu = new JMenu("Edit"); menuBar.add(menu); menuItem = new JMenuItem("Select All"); menuItem.setAccelerator(KeyStroke.getKeyStroke("control A")); menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { audioPanel.selectAll(); } }); menu.add(menuItem); menuItem = new JMenuItem("Crop"); menuItem.setAccelerator(KeyStroke.getKeyStroke("control X")); menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { audioPanel.crop(); } }); menu.add(menuItem); menu = new JMenu("View"); menuBar.add(menu); menuItem = new JMenuItem("Zoom In"); menuItem.setAccelerator(KeyStroke.getKeyStroke('>')); menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { zoomIn(); } }); menu.add(menuItem); menuItem = new JMenuItem("Zoom Out"); menuItem.setAccelerator(KeyStroke.getKeyStroke('<')); menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { zoomOut(); } }); menu.add(menuItem); menuItem = new JMenuItem("Original Size"); menuItem.setAccelerator(KeyStroke.getKeyStroke('!')); menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { zoomReset(); } }); menu.add(menuItem); menu = new JMenu("Audio"); menuBar.add(menu); menuItem = new JMenuItem("Play"); menuItem.setAccelerator(KeyStroke.getKeyStroke("control P")); menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { player.play(audioPanel.getSelectionStart(), audioPanel.getSelectionEnd()); } }); menu.add(menuItem); recordListener = new ActionListener() { public void actionPerformed(ActionEvent evt) { if (!recording) { recording = true; recorder.startRecording(); recordButton.setText("Stop"); saveMenuItem.setEnabled(true); } else { recording = false; recorder.stopRecording(); audio.setAudioData(getRecordedAudio(recorder)); recordButton.setText("Record"); player.play(audioPanel.getSelectionStart(), audioPanel.getSelectionEnd()); } } }; menuItem = new JMenuItem("Record Start/Stop"); menuItem.setAccelerator(KeyStroke.getKeyStroke("control R")); menuItem.addActionListener(recordListener); menu.add(menuItem); } /** * Create the Panel where all the buttons are. * * @return a Panel with buttons on it. */ private static JPanel createButtonPanel() { JPanel buttonPanel = new JPanel(); FlowLayout layout = new FlowLayout(); layout.setAlignment(FlowLayout.LEFT); buttonPanel.setLayout(layout); playButton = new JButton("Play"); playButton.setEnabled(true); playButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { player.play(audioPanel.getSelectionStart(), audioPanel.getSelectionEnd()); } }); recordButton = new JButton("Record"); recordButton.setEnabled(true); recordButton.addActionListener(recordListener); zoomInButton = new JButton("Zoom In"); zoomInButton.setEnabled(true); zoomInButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { zoomIn(); } }); zoomOutButton = new JButton("Zoom Out"); zoomOutButton.setEnabled(true); zoomOutButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { zoomOut(); } }); zoomResetButton = new JButton("Reset Size"); zoomResetButton.setEnabled(true); zoomResetButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { zoomReset(); } }); JButton exitButton = new JButton("Exit"); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); buttonPanel.add(recordButton); buttonPanel.add(playButton); buttonPanel.add(zoomInButton); buttonPanel.add(zoomOutButton); buttonPanel.add(zoomResetButton); buttonPanel.add(exitButton); return buttonPanel; } /** * Main method. * * @param args argv[0] : The name of an audio file * argv[1] : SphinxProperties file */ static public void main(String[] args) { FrontEnd frontEnd; StreamDataSource dataSource; prefs = Preferences.userRoot().node(PREFS_CONTEXT); filename = prefs.get(FILENAME_PREFERENCE, "untitled.raw"); file = new File(filename); if ((args.length == 1) && (args[0].equals("-dumpMixers"))) { dumpMixers(); System.exit(0); } try { URL url; if (args.length > 0) { filename = args[0]; } if (args.length == 2) { url = new File(args[1]).toURI().toURL(); } else { url = AudioTool.class.getResource("spectrogram.config.xml"); } ConfigurationManager cm = new ConfigurationManager(url); recorder = (Microphone) cm.lookup(MICROPHONE); recorder.initialize(); audio = new AudioData(); frontEnd = (FrontEnd) cm.lookup(FRONT_END); dataSource = (StreamDataSource) cm.lookup(DATA_SOURCE); PropertySheet ps = cm.getPropertySheet(WINDOWER); float windowShiftInMs = ps.getFloat (RaisedCosineWindower.PROP_WINDOW_SHIFT_MS, RaisedCosineWindower.PROP_WINDOW_SHIFT_MS_DEFAULT); final JFrame jframe = new JFrame("AudioTool"); fileChooser = new JFileChooser(); createMenuBar(jframe); /* Scale the width according to the size of the * spectrogram. */ float windowShiftInSamples = windowShiftInMs * audio.getAudioFormat().getSampleRate() / 1000.0f; audioPanel = new AudioPanel(audio, 1.0f / windowShiftInSamples, 0.004f); spectrogramPanel = new SpectrogramPanel(frontEnd, dataSource, audio); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.add(createButtonPanel(), BorderLayout.NORTH); panel.add(audioPanel, BorderLayout.CENTER); panel.add(spectrogramPanel, BorderLayout.SOUTH); JScrollPane scroller = new JScrollPane(panel); player = new AudioPlayer(audio); player.start(); getAudioFromFile(filename); jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jframe.setContentPane(scroller); jframe.pack(); jframe.setSize(640,540); jframe.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -