/* * Created on May 13, 2004 * */ package jmsltutorial; import java.awt.*; import com.softsynth.jmsl.util.TuningTable; /** * Provide textfields for user to define custom tuning table
* * Starts with Gamalan Son of Lion tuning. See http://www.punosmusic.com/pages/yudishthira/liontuning.html * * @author Nick Didkovsky, (c) 2004 Nick Didkovsky, All right reserved, didkovn@mail.rockefeller.edu * * */ public class TuningTableToot extends TuningETToot { double[] frequencies = { 274.8, 298.8, 316.6, 330.0, 358.4, 368.2, 421.1, 452.4, 482.6, 533.9 }; ArrayEditorPanel arrayEditorPanel; void buildGUI() { super.buildGUI(); arrayEditorPanel = new ArrayEditorPanel(); arrayEditorPanel.setArray(frequencies); add(BorderLayout.CENTER, arrayEditorPanel); } public void start() { interval1 = -frequencies.length; interval2 = frequencies.length; stepsPerOctave = frequencies.length; super.start(); instrument.setTuning(new TuningTable(frequencies, referencePitch)); } protected void buildTextFieldPanel() { Panel p = new Panel(); p.setLayout(new GridLayout(0, 2, 5, 10)); p.add(gimmeLabelTextFieldPanel("reference pitch", referencePitchTextField)); p.add(gimmeLabelTextFieldPanel("octave stretch in cents", octaveStretchInCentsTextField)); p.add(gimmeLabelTextFieldPanel("Interval 1", interval1TextField)); p.add(gimmeLabelTextFieldPanel("Interval 2", interval2TextField)); add(BorderLayout.SOUTH, p); } void changeTuning() { try { stepsPerOctave = (int) instrument.getTuning().getStepsPerOctave(); frequencies = arrayEditorPanel.getArray(); referencePitch = new Double(referencePitchTextField.getText()).doubleValue(); octaveStretchInCents = new Integer(octaveStretchInCentsTextField.getText()).intValue(); TuningTable tuning = new TuningTable(frequencies, referencePitch); tuning.setOctaveStretchCents(octaveStretchInCents); instrument.setTuning(tuning); interval1 = new Double(interval1TextField.getText()).doubleValue(); interval2 = new Double(interval2TextField.getText()).doubleValue(); buildMusicShape(); } catch (NumberFormatException e) { System.out.println("Bad Number"); } } }