Class FnGui

All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, RootPaneContainer, WindowConstants

class FnGui extends JFrame
 +-----------+   +---------+    +---------+   +----------+   +--------+
 |uNn 3 4 -2 | = |27*625/49| =  | 30625/49| = | 344.38776| = | 456.342| Cent
 +-----------+   +---------+    +---------+   +----------+   +--------+
  (-20)

    +-----------+   +--------------+    +----------+   +--------------+
    |uNn 3 4 -2 | = | 27 * 625 / 49| =  | 344.38776| = | 120456.342...| Cent
    +-----------+   +--------------+    +----------+   +--------------+
     (-20)

    +-----------+   +--------------+    +----------+   +--------------+
    |uNn 3 4 -2 | = | 27 * 625 / 49| =  | 344.38776| = | 120456.342...| Cent
    +-----------+   +--------------+    +----------+   +--------------+
     (-20)

         +---------+
    1 ≡  | 55      | Hz
         +---------+
 
Time structure is as follows:
                      play = false         play = true
  subaudio waitDt
              ----->  retrigger all K+Ss  ----> switch phase
                                          ----> retrigger all K+Ss
                                          ----> restart envelope
  audio network           ---> all synthesizers which have current phase
                               are producing sound
 
  • Field Details

    • TEXT_COLUMNS

      public int TEXT_COLUMNS
      Subclassing parameter. Used for all text input widgets.
    • baseBorder

      final Border baseBorder
      Shared inset border for titled sub-panels.
    • mainPanel

      final JPanel mainPanel
      Main grid panel holding the per-frequency rows.
    • footer1

      final JPanel footer1
      Footer panel for master controls (pitch, timbre, volume).
    • footer2

      final JPanel footer2
      Footer panel for transport and tempo controls.
    • controlPanel

      final FnGui.ControlPanel controlPanel
      Shared controls (pitch, timbre, volume, transport).
    • numberPanels

      final List<FnGui.NumberPanel> numberPanels
      All constructed frequency rows.
    • NUMBER_OF_SEQUENCER_SLOTS

      static final int NUMBER_OF_SEQUENCER_SLOTS
      Number of phase slots in the sequencer.
      See Also:
    • footer3

      final JPanel footer3
      Footer panel for the mute and pause-mode buttons.
    • seqPhaseButtons

      final JRadioButton[] seqPhaseButtons
      Phase selector radio buttons placed as the last row of the main panel, aligned with the soundline checkboxes.
    • seqPhaseGroup

      final ButtonGroup seqPhaseGroup
      Groups seqPhaseButtons for single selection.
    • muteButton

      final JCheckBox muteButton
      Mutes all audio output when selected.
    • withPauseButton

      final JCheckBox withPauseButton
      Inserts pauses when selected.
    • fnSound

      final FnSound fnSound
      Audio back-end.
    • COLOR_ERROR

      public static final Color COLOR_ERROR
      Background colour for fields in error state.
    • COLOR_OK

      final Color COLOR_OK
      Background colour for fields in normal state.
    • COLOR_PLAYING

      final Color COLOR_PLAYING
      Background colour while the row is sounding.
    • BITSET_ALL

      public static final BitSet BITSET_ALL
    • BITSET_ONE

      public static final BitSet BITSET_ONE
      BitSet with only bit 0; default when no phases are defined.
  • Constructor Details

    • FnGui

      public FnGui()
      Builds and wires the complete GUI.
  • Method Details

    • makeTextField

      JTextField makeTextField(boolean editable)
      Creates an output text field.
      Parameters:
      editable - whether the field accepts user input
      Returns:
      the configured text field
    • makeTextField

      JTextField makeTextField(boolean editable, int width)
      Creates an output text field with a maximum width.
      Parameters:
      editable - whether the field accepts user input
      width - maximum pixel width
      Returns:
      the configured text field
    • pausesSelected

      boolean pausesSelected()
    • phaseSet

      static BitSet phaseSet(int... bits)
      Returns a BitSet with exactly the given bits set.
      Parameters:
      bits - bit indices to set
      Returns:
      a BitSet of size NUMBER_OF_SEQUENCER_SLOTS
    • resetAll

      void resetAll()
      Resets all rows to Ff.ONE with no phases selected.
    • prepareDemo

      void prepareDemo(String select)
      Loads a named demo preset.
      Parameters:
      select - one of "---", "tritones", "triads", or "rheingold"
    • rescanSelectedPhases

      void rescanSelectedPhases()
      Recomputes the selected-phase set from the footer seqPhaseButtons.
    • showSelectedPhases

      void showSelectedPhases()
      Reflects the current phase back into the footer seqPhaseButtons.
    • rescanPlaying

      void rescanPlaying()
      Recomputes active phases from all rows; updates seqPhaseButtons.
    • main

      public static void main(String[] args)
      Launches the application.
      Parameters:
      args - ignored