/**
* Created : Jun 15, 2012
*
* @author pquiring
*/
import java.io.*;
import java.util.*;
import javax.swing.*;
import javaforce.*;
public class MainPanel extends javax.swing.JPanel {
/**
* Creates new form MainPanel
*/
public MainPanel() {
initComponents();
Settings.loadSettings();
main = this;
clipboardPath = Paths.getClipboardPath();
new File(clipboardPath).mkdirs();
ProjectPanel.deleteClipboard();
newProject();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jToolBar1 = new javax.swing.JToolBar();
pause = new javax.swing.JButton();
play = new javax.swing.JButton();
stop = new javax.swing.JButton();
home = new javax.swing.JButton();
end = new javax.swing.JButton();
record = new javax.swing.JButton();
jSeparator1 = new javax.swing.JToolBar.Separator();
jSeparator2 = new javax.swing.JToolBar.Separator();
zoomOut = new javax.swing.JButton();
zoomIn = new javax.swing.JButton();
tabs = new javax.swing.JTabbedPane();
jToolBar2 = new javax.swing.JToolBar();
jLabel1 = new javax.swing.JLabel();
mute = new javax.swing.JToggleButton();
solo = new javax.swing.JToggleButton();
jSeparator3 = new javax.swing.JToolBar.Separator();
deleteTrack = new javax.swing.JButton();
jSeparator4 = new javax.swing.JToolBar.Separator();
spk = new javax.swing.JLabel();
playVol = new javax.swing.JSlider();
mic = new javax.swing.JLabel();
recVol = new javax.swing.JSlider();
jSeparator5 = new javax.swing.JToolBar.Separator();
filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 0));
jToolBar1.setFloatable(false);
jToolBar1.setRollover(true);
pause.setText("Pause");
pause.setFocusable(false);
pause.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
pause.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
pause.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
pauseActionPerformed(evt);
}
});
jToolBar1.add(pause);
play.setText("Play");
play.setFocusable(false);
play.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
play.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
play.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
playActionPerformed(evt);
}
});
jToolBar1.add(play);
stop.setText("Stop");
stop.setFocusable(false);
stop.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
stop.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
stop.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
stopActionPerformed(evt);
}
});
jToolBar1.add(stop);
home.setText("|<");
home.setFocusable(false);
home.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
home.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
home.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
homeActionPerformed(evt);
}
});
jToolBar1.add(home);
end.setText(">|");
end.setFocusable(false);
end.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
end.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
end.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
endActionPerformed(evt);
}
});
jToolBar1.add(end);
record.setText("Rec");
record.setFocusable(false);
record.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
record.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
record.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
recordActionPerformed(evt);
}
});
jToolBar1.add(record);
jToolBar1.add(jSeparator1);
jToolBar1.add(jSeparator2);
zoomOut.setText("Zoom-");
zoomOut.setFocusable(false);
zoomOut.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
zoomOut.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
zoomOut.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
zoomOutActionPerformed(evt);
}
});
jToolBar1.add(zoomOut);
zoomIn.setText("Zoom+");
zoomIn.setFocusable(false);
zoomIn.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
zoomIn.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
zoomIn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
zoomInActionPerformed(evt);
}
});
jToolBar1.add(zoomIn);
jToolBar2.setFloatable(false);
jToolBar2.setRollover(true);
jLabel1.setText("Track:");
jToolBar2.add(jLabel1);
mute.setText("mute");
mute.setFocusable(false);
mute.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
mute.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
mute.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
muteActionPerformed(evt);
}
});
jToolBar2.add(mute);
solo.setText("solo");
solo.setFocusable(false);
solo.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
solo.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
solo.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
soloActionPerformed(evt);
}
});
jToolBar2.add(solo);
jToolBar2.add(jSeparator3);
deleteTrack.setText("delete");
deleteTrack.setFocusable(false);
deleteTrack.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
deleteTrack.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
deleteTrack.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
deleteTrackActionPerformed(evt);
}
});
jToolBar2.add(deleteTrack);
jToolBar2.add(jSeparator4);
spk.setIcon(new javax.swing.ImageIcon(getClass().getResource("/spk.png"))); // NOI18N
jToolBar2.add(spk);
playVol.setValue(100);
playVol.setMaximumSize(new java.awt.Dimension(100, 23));
playVol.setMinimumSize(new java.awt.Dimension(100, 23));
playVol.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
playVolStateChanged(evt);
}
});
jToolBar2.add(playVol);
mic.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mic.png"))); // NOI18N
jToolBar2.add(mic);
recVol.setValue(100);
recVol.setMaximumSize(new java.awt.Dimension(100, 23));
recVol.setMinimumSize(new java.awt.Dimension(100, 23));
recVol.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
recVolStateChanged(evt);
}
});
jToolBar2.add(recVol);
jToolBar2.add(jSeparator5);
jToolBar2.add(filler1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jToolBar2, javax.swing.GroupLayout.DEFAULT_SIZE, 636, Short.MAX_VALUE)
.addComponent(tabs)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jToolBar2, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tabs, javax.swing.GroupLayout.DEFAULT_SIZE, 615, Short.MAX_VALUE))
);
}// </editor-fold>//GEN-END:initComponents
private void zoomOutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zoomOutActionPerformed
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.zoom(-1);
}//GEN-LAST:event_zoomOutActionPerformed
private void zoomInActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zoomInActionPerformed
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.zoom(+1);
}//GEN-LAST:event_zoomInActionPerformed
private void recordActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_recordActionPerformed
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.record();
play.setEnabled(false);
record.setEnabled(false);
pause.setEnabled(false);
}//GEN-LAST:event_recordActionPerformed
private void stopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_stopActionPerformed
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.stop();
play.setEnabled(true);
record.setEnabled(true);
play.setEnabled(true);
}//GEN-LAST:event_stopActionPerformed
private void playActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_playActionPerformed
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.play();
play.setEnabled(false);
record.setEnabled(false);
}//GEN-LAST:event_playActionPerformed
private void deleteTrackActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteTrackActionPerformed
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.deleteTrack();
}//GEN-LAST:event_deleteTrackActionPerformed
private void homeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_homeActionPerformed
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.gotoHome();
}//GEN-LAST:event_homeActionPerformed
private void endActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_endActionPerformed
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.gotoEnd();
}//GEN-LAST:event_endActionPerformed
private void pauseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pauseActionPerformed
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.pause();
}//GEN-LAST:event_pauseActionPerformed
private void muteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_muteActionPerformed
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
if (mute.isSelected()) {
project.mute();
} else {
project.unmute();
solo.setSelected(false);
}
}//GEN-LAST:event_muteActionPerformed
private void soloActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_soloActionPerformed
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.solo();
mute.setSelected(false);
}//GEN-LAST:event_soloActionPerformed
private void playVolStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_playVolStateChanged
}//GEN-LAST:event_playVolStateChanged
private void recVolStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_recVolStateChanged
}//GEN-LAST:event_recVolStateChanged
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton deleteTrack;
private javax.swing.JButton end;
private javax.swing.Box.Filler filler1;
private javax.swing.JButton home;
private javax.swing.JLabel jLabel1;
private javax.swing.JToolBar.Separator jSeparator1;
private javax.swing.JToolBar.Separator jSeparator2;
private javax.swing.JToolBar.Separator jSeparator3;
private javax.swing.JToolBar.Separator jSeparator4;
private javax.swing.JToolBar.Separator jSeparator5;
private javax.swing.JToolBar jToolBar1;
private javax.swing.JToolBar jToolBar2;
private javax.swing.JLabel mic;
private javax.swing.JToggleButton mute;
private javax.swing.JButton pause;
private javax.swing.JButton play;
private javax.swing.JSlider playVol;
private javax.swing.JSlider recVol;
private javax.swing.JButton record;
private javax.swing.JToggleButton solo;
private javax.swing.JLabel spk;
private javax.swing.JButton stop;
private javax.swing.JTabbedPane tabs;
private javax.swing.JButton zoomIn;
private javax.swing.JButton zoomOut;
// End of variables declaration//GEN-END:variables
public ArrayList<ProjectPanel> projects = new ArrayList<ProjectPanel>();
public static MainPanel main;
public static String clipboardPath;
public void newProject() {
ProjectPanel project = new ProjectPanel(null);
tabs.add(project, "New Project");
projects.add(project);
}
public void saveProject() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
if (project.filename == null) {
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setMultiSelectionEnabled(false);
chooser.setCurrentDirectory(new File(JF.getUserPath() + "/Music"));
javax.swing.filechooser.FileFilter ffProject = new javax.swing.filechooser.FileFilter() {
public boolean accept(File file) {
if (file.isDirectory()) return true;
if (file.getName().endsWith(".aproj")) return true;
return false;
}
public String getDescription() {
return "Audio Project (*.aproj)";
}
};
chooser.addChoosableFileFilter(ffProject);
chooser.setFileFilter(chooser.getAcceptAllFileFilter());
AudioApp.inDialog = true;
if (chooser.showSaveDialog(this) != JFileChooser.APPROVE_OPTION) {
AudioApp.inDialog = false;
return;
}
AudioApp.inDialog = false;
project.filename = chooser.getSelectedFile().getAbsolutePath();
if (!project.filename.toLowerCase().endsWith(".aproj")) project.filename += ".aproj";
int idx = project.filename.lastIndexOf(".");
String newPath = project.filename.substring(0, idx) + "_data";
try {
Paths.moveFolder(project.path, newPath);
} catch (Exception e) {
JF.showError("Error", "Failed to move project data files");
project.filename = null;
return;
}
project.path = newPath;
tabs.setTitleAt(tabs.getSelectedIndex(), project.getTabName());
}
project.saveConfig();
}
public void renameProject() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
if (project.filename == null) {
saveProject();
return;
}
String orgFilename = project.filename;
project.filename = null;
saveProject();
if (project.filename == null) {
project.filename = orgFilename;
}
}
public void openFile() {
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setMultiSelectionEnabled(false);
chooser.setCurrentDirectory(new File(JF.getUserPath() + "/Music"));
javax.swing.filechooser.FileFilter ffWAV = new javax.swing.filechooser.FileFilter() {
public boolean accept(File file) {
if (file.isDirectory()) return true;
if (file.getName().endsWith(".wav")) return true;
return false;
}
public String getDescription() {
return "WAV (*.wav)";
}
};
chooser.addChoosableFileFilter(ffWAV);
javax.swing.filechooser.FileFilter ffProject = new javax.swing.filechooser.FileFilter() {
public boolean accept(File file) {
if (file.isDirectory()) return true;
if (file.getName().endsWith(".aproj")) return true;
return false;
}
public String getDescription() {
return "Audio Project (*.aproj)";
}
};
chooser.addChoosableFileFilter(ffProject);
chooser.setFileFilter(chooser.getAcceptAllFileFilter());
AudioApp.inDialog = true;
if (chooser.showOpenDialog(this) != JFileChooser.APPROVE_OPTION) {
AudioApp.inDialog = false;
return;
}
AudioApp.inDialog = false;
String fn = chooser.getSelectedFile().getAbsolutePath();
closeProjectIfEmpty();
if (fn.toLowerCase().endsWith(".aproj")) {
ProjectPanel project = new ProjectPanel(fn);
tabs.add(project, project.getTabName());
return;
}
ProjectPanel project = new ProjectPanel(null);
tabs.add(project, "New Project");
project.importFile(fn);
}
public void importFile() {
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setMultiSelectionEnabled(false);
chooser.setCurrentDirectory(new File(JF.getUserPath() + "/Music"));
javax.swing.filechooser.FileFilter ffWAV = new javax.swing.filechooser.FileFilter() {
public boolean accept(File file) {
if (file.isDirectory()) return true;
if (file.getName().endsWith(".wav")) return true;
return false;
}
public String getDescription() {
return "WAV (*.wav)";
}
};
chooser.addChoosableFileFilter(ffWAV);
javax.swing.filechooser.FileFilter ffFLAC = new javax.swing.filechooser.FileFilter() {
public boolean accept(File file) {
if (file.isDirectory()) return true;
if (file.getName().endsWith(".flac")) return true;
return false;
}
public String getDescription() {
return "FLAC (*.flac)";
}
};
chooser.addChoosableFileFilter(ffFLAC);
javax.swing.filechooser.FileFilter ffMP3 = new javax.swing.filechooser.FileFilter() {
public boolean accept(File file) {
if (file.isDirectory()) return true;
if (file.getName().endsWith(".mp3")) return true;
return false;
}
public String getDescription() {
return "MP3 (*.mp3)";
}
};
chooser.addChoosableFileFilter(ffMP3);
chooser.setFileFilter(ffWAV);
AudioApp.inDialog = true;
if (chooser.showOpenDialog(this) != JFileChooser.APPROVE_OPTION) {
AudioApp.inDialog = false;
return;
}
AudioApp.inDialog = false;
String fn = chooser.getSelectedFile().getAbsolutePath();
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.importFile(fn);
}
public void exportFile(boolean selection) {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
if (!project.isTrackSelected()) return;
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setMultiSelectionEnabled(false);
chooser.setCurrentDirectory(new File(JF.getUserPath() + "/Music"));
javax.swing.filechooser.FileFilter ffWAV = new javax.swing.filechooser.FileFilter() {
public boolean accept(File file) {
if (file.isDirectory()) return true;
if (file.getName().endsWith(".wav")) return true;
return false;
}
public String getDescription() {
return "WAV (*.wav)";
}
public String toString() {
return ".wav";
}
};
chooser.addChoosableFileFilter(ffWAV);
javax.swing.filechooser.FileFilter ffFLAC = new javax.swing.filechooser.FileFilter() {
public boolean accept(File file) {
if (file.isDirectory()) return true;
if (file.getName().endsWith(".flac")) return true;
return false;
}
public String getDescription() {
return "FLAC (*.flac)";
}
public String toString() {
return ".flac";
}
};
chooser.addChoosableFileFilter(ffFLAC);
javax.swing.filechooser.FileFilter ffMP3 = new javax.swing.filechooser.FileFilter() {
public boolean accept(File file) {
if (file.isDirectory()) return true;
if (file.getName().endsWith(".mp3")) return true;
return false;
}
public String getDescription() {
return "MP3 (*.mp3)";
}
public String toString() {
return ".mp3";
}
};
chooser.addChoosableFileFilter(ffMP3);
chooser.setFileFilter(ffWAV);
AudioApp.inDialog = true;
if (chooser.showSaveDialog(this) != JFileChooser.APPROVE_OPTION) {
AudioApp.inDialog = false;
return;
}
AudioApp.inDialog = false;
String fn = chooser.getSelectedFile().getAbsolutePath();
String fnlc = fn.toLowerCase();
if ((!fnlc.endsWith(".wav")) && !fnlc.endsWith(".flac") && !fnlc.endsWith(".mp3")) {
javax.swing.filechooser.FileFilter ff = chooser.getFileFilter();
fn += ff.toString();
}
project.exportFile(fn, selection);
}
public void close() {
while (projects.size() > 0) {
ProjectPanel project = projects.remove(0);
project.close();
}
}
public void stopped() {
play.setEnabled(true);
record.setEnabled(true);
}
/** Closes current project. */
public void closeProject() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
tabs.remove(project);
if (tabs.getTabCount() == 0) newProject();
}
/** Closes current project and does NOT create a new one. */
public void closeProjectIfEmpty() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
if (project.list.isEmpty()) tabs.remove(project);
}
public void selectTrack(TrackPanel track) {
mute.setSelected(track.muted);
solo.setSelected(false);
}
public void stop() {
stopActionPerformed(null);
}
public void cut() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.getSelectedTrack().cut();
}
public void copy() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.getSelectedTrack().copy();
}
public void paste() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.getSelectedTrack().paste(MainPanel.clipboardPath, true);
}
public void delete() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.getSelectedTrack().delete(true);
}
public void undo() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.undo();
}
public void trackInfo() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.getSelectedTrack().info();
}
public void mixTracks() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.mixTracks();
}
public void resampleTrack() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.getSelectedTrack().fxResample();
}
public void newTrack(int chs) {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.newTrack(chs);
}
public void fxAmplify() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.getSelectedTrack().fxAmplify();
}
public void fxFadeIn() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.getSelectedTrack().fxFadeIn();
}
public void fxFadeOut() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.getSelectedTrack().fxFadeOut();
}
public void genTone() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.getSelectedTrack().genTone();
}
public void genSilence() {
ProjectPanel project = (ProjectPanel)tabs.getSelectedComponent();
project.getSelectedTrack().genSilence();
}
public int getPlayLevel() {
return playVol.getValue();
}
public int getRecordLevel() {
return recVol.getValue();
}
}