Sophie

Sophie

distrib > Mageia > 5 > x86_64 > media > core-release > by-pkgid > b707d9a4ee443103660a75ccb6e51334 > files > 2062

csound-doc-5.19.01-10.mga5.noarch.rpm

/*
 * Created on Apr 18, 2005
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

// package csnd;

import csnd.Csound;
import csnd.CsoundFile;
import csnd.CsoundPerformanceThread;

import javax.swing.JFrame;

import java.io.File;
import java.lang.System;
import java.util.Properties;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
import javax.swing.JToolBar;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JOptionPane;

/**
 * @author mkg
 *
 * Rudimentary Java GUI front end for Csound,
 * mainly to demonstrate using the Java interface to Csound 5.
 */
public class CsoundEditor extends JFrame {

    private javax.swing.JPanel jContentPane = null;
    private JToolBar jToolBar = null;
    private JButton jButton = null;
    private JButton jButton1 = null;
    private JButton jButton2 = null;
    private JTextField commandTextField = null;
    private JButton jButton3 = null;
    private JTabbedPane jTabbedPane = null;
    private JScrollPane jScrollPane = null;
    private JTextArea orchestraTextArea = null;
    private JScrollPane jScrollPane1 = null;
    static JFileChooser fileChooser;
    static FileFilter csoundFileFilter;
    private JTextArea scoreTextArea = null;
    static {
	 System.loadLibrary("_jcsound");
        fileChooser = new JFileChooser();
        fileChooser.setAcceptAllFileFilterUsed(true);
        csoundFileFilter = new CsoundFileFilter();
        fileChooser.addChoosableFileFilter(csoundFileFilter);
    }
    public Properties properties = new Properties(System.getProperties());
    private String soundfilePlayer = "";
    public Csound csound = null;
    public CsoundFile csoundFile = null;
	public CsoundPerformanceThread csoundPerformanceThread = null;
    private JButton jButton4 = null;

    /**
     * This method initializes jToolBar
     *
     * @return javax.swing.JToolBar
     */
    private JToolBar getJToolBar() {
        if (jToolBar == null) {
            jToolBar = new JToolBar();
            jToolBar.add(getJButton());
            jToolBar.add(getJButton1());
            jToolBar.add(getJButton2());
            jToolBar.add(getJButton4());
            jToolBar.add(getJButton3());
            jToolBar.add(getCommandTextField());
        }
        return jToolBar;
    }

    public static class CsoundFileFilter extends FileFilter {

        /*
         * (non-Javadoc)
         *
         * @see java.io.FileFilter#accept(java.io.File)
         */
        public boolean accept(File pathname) {
            String filename = pathname.getAbsolutePath();
            if (filename.endsWith(".csd")) {
                return true;
            } else if (filename.endsWith(".orc")) {
                return true;
            } else if (filename.endsWith(".sco")) {
                return true;
            }
            return false;
        }

        /*
         * (non-Javadoc)
         *
         * @see javax.swing.filechooser.FileFilter#getDescription()
         */
        public String getDescription() {
            return "Csound files";
        }
    }

    /**
     * This method initializes jButton
     *
     * @return javax.swing.JButton
     */
    private JButton getJButton() {
        if (jButton == null) {
            jButton = new JButton();
            jButton.setText("Open");
            jButton.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    fileChooser.showOpenDialog(CsoundEditor.this);
                    File file = fileChooser.getSelectedFile();
                    if (file != null) {
                        csoundFile.load(file.getAbsolutePath());
                        csoundFile.setFilename(file.getAbsolutePath());
                        updateView();
                    }
                }
            });
        }
        return jButton;
    }

    public void updateView() {
        String command = csoundFile.getCommand();
        commandTextField.setText(command);
        String orchestra = csoundFile.getOrchestra();
        orchestraTextArea.setText(orchestra);
        String score = csoundFile.getScore();
        scoreTextArea.setText(score);
        setTitle("[ C S O U N D ] " + csoundFile.getFilename());
    }

    public void updateModel() {
        String command = commandTextField.getText();
        csoundFile.setCommand(command);
        String orchestra = orchestraTextArea.getText();
        csoundFile.setOrchestra(orchestra);
        String score = scoreTextArea.getText();
        csoundFile.setScore(score);
    }

//    public void updateScore() {
//        csound.setScore(score.getCsoundScore());
//    }

    /**
     * This method initializes jButton1
     *
     * @return javax.swing.JButton
     */
    private JButton getJButton1() {
        if (jButton1 == null) {
            jButton1 = new JButton();
            jButton1.setText("Save");
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    fileChooser.showSaveDialog(CsoundEditor.this);
                    File file = fileChooser.getSelectedFile();
                    if (file != null) {
                        updateModel();
                        csoundFile.save(file.getAbsolutePath());
                    }
                }
            });
        }
        return jButton1;
    }

    /**
     * This method initializes jButton2
     *
     * @return javax.swing.JButton
     */
    private JButton getJButton2() {
        if (jButton2 == null) {
            jButton2 = new JButton();
            jButton2.setText("Perform");
            jButton2.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    perform();
                }
            });
        }
        return jButton2;
    }

    public void perform() {
        updateModel();
        try {
            csoundFile.exportForPerformance();
            csound.Compile("tmp.orc", "tmp.sco", "-odac");
	    csoundPerformanceThread = new CsoundPerformanceThread(csound);
            csoundPerformanceThread.Play();
        } catch (Exception x) {
            x.printStackTrace();
        }
    }

    /**
     * This method initializes commandTextField
     *
     * @return javax.swing.JTextField
     */
    private JTextField getCommandTextField() {
        if (commandTextField == null) {
            commandTextField = new JTextField();
            commandTextField.setFont(new java.awt.Font("Courier New",
                    java.awt.Font.PLAIN, 12));
        }
        return commandTextField;
    }

    /**
     * This method initializes jButton3
     *
     * @return javax.swing.JButton
     */
    private JButton getJButton3() {
        if (jButton3 == null) {
            jButton3 = new JButton();
            jButton3.setText("Play");
            jButton3.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    try {
                        String soundfile = null;//csound.getOutputSoundfileName();
                        File file = new File(soundfile);
                        Runtime.getRuntime().exec(
                                soundfilePlayer + " " + file.getAbsolutePath());
                    } catch (Exception x) {
                        x.printStackTrace();
                    }
                }
            });
        }
        return jButton3;
    }

    /**
     * This method initializes jTabbedPane
     *
     * @return javax.swing.JTabbedPane
     */
    private JTabbedPane getJTabbedPane() {
        if (jTabbedPane == null) {
            jTabbedPane = new JTabbedPane();
            jTabbedPane.addTab("Orchestra", null, getJScrollPane(), null);
            jTabbedPane.addTab("Score", null, getJScrollPane1(), null);
        }
        return jTabbedPane;
    }

    /**
     * This method initializes jScrollPane
     *
     * @return javax.swing.JScrollPane
     */
    private JScrollPane getJScrollPane() {
        if (jScrollPane == null) {
            jScrollPane = new JScrollPane();
            jScrollPane.setViewportView(getOrchestraTextArea());
            jScrollPane.setFont(new java.awt.Font("Courier New",
                    java.awt.Font.PLAIN, 12));
        }
        return jScrollPane;
    }

    /**
     * This method initializes orchestraTextArea
     *
     * @return javax.swing.JTextArea
     */
    private JTextArea getOrchestraTextArea() {
        if (orchestraTextArea == null) {
            orchestraTextArea = new JTextArea();
            orchestraTextArea.setFont(new java.awt.Font("Courier New",
                    java.awt.Font.PLAIN, 12));

        }
        return orchestraTextArea;
    }

    /**
     * This method initializes jScrollPane1
     *
     * @return javax.swing.JScrollPane
     */
    private JScrollPane getJScrollPane1() {
        if (jScrollPane1 == null) {
            jScrollPane1 = new JScrollPane();
            jScrollPane1.setViewportView(getScoreTextArea());
        }
        return jScrollPane1;
    }

    /**
     * This method initializes scoreTextArea
     *
     * @return javax.swing.JTextArea
     */
    private JTextArea getScoreTextArea() {
        if (scoreTextArea == null) {
            scoreTextArea = new JTextArea();
            scoreTextArea.setFont(new java.awt.Font("Courier New",
                    java.awt.Font.PLAIN, 12));
        }
        return scoreTextArea;
    }

    /**
     * This method initializes jButton4
     *
     * @return javax.swing.JButton
     */
    private JButton getJButton4() {
        if (jButton4 == null) {
            jButton4 = new JButton();
            jButton4.setActionCommand("Stop");
            jButton4.setText("Stop");
            jButton4.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    csoundPerformanceThread.Stop();
					csoundPerformanceThread.Join();
					csound.Cleanup();
                }
            });
        }
        return jButton4;
    }

    public static void main(String[] args) {
        CsoundEditor csoundEditor = new CsoundEditor();
        csoundEditor.setTitle("Csound");
        csoundEditor.move(100, 100);
        csoundEditor.setVisible(true);
    }

    /**
     * This is the default constructor
     */
    public CsoundEditor() {
        super();
	try {
	 properties.load(new java.io.FileInputStream(
	          "CsoundEditor.properties"));
	} catch (Exception x) {
	x.printStackTrace();
        }
        csound = new Csound();
	csoundPerformanceThread = new CsoundPerformanceThread(csound);
        csoundFile = new CsoundFile();
       soundfilePlayer = properties.getProperty("SoundfilePlayer",
         soundfilePlayer);
        initialize();
	String orchestra = properties.getProperty("DefaultOrchestra");
		if (orchestra != null) {
			csoundFile.load(orchestra);
	    csoundFile.setFilename(orchestra);
	    updateView();
		}
    }

    /**
     * This method initializes this
     *
     * @return void
     */
    private void initialize() {
        this.setSize(762, 396);
        this.setContentPane(getJContentPane());
        this.addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent e) {
                System.err.println("Closing window and exiting...");
                Runtime.getRuntime().exit(0);

            }
        });
        this.setTitle("JFrame");
    }

    /**
     * This method initializes jContentPane
     *
     * @return javax.swing.JPanel
     */
    private javax.swing.JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new javax.swing.JPanel();
            jContentPane.setLayout(new java.awt.BorderLayout());
            jContentPane.add(getJToolBar(), java.awt.BorderLayout.NORTH);
            jContentPane.add(getJTabbedPane(), java.awt.BorderLayout.CENTER);
        }
        return jContentPane;
    }
} //  @jve:decl-index=0:visual-constraint="10,10"