Package music.ui.panels

Source Code of music.ui.panels.Timing

/*
*    Musical Skill Coach - An interactive midi device friendly program to help music students improve their skills
*    Copyright (C) 2011  Paul-Emile Gaudet
*
*    This program is free software: you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*    the Free Software Foundation, either version 3 of the License, or
*    (at your option) any later version.
*
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU General Public License for more details.
*
*    You should have received a copy of the GNU General Public License
*    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

package music.ui.panels;

import javax.swing.*;

import music.ui.images.TrebleClefImage;
import music.ui.lib.Bar;
import music.ui.lib.FiveStaff;
import music.ui.lib.MusicCanvas;
import music.ui.lib.MusicTime;
import music.ui.lib.Note;
import music.ui.lib.TimingCurve;

public class Timing extends JPanel
{
  /**
   *
   */
  private static final long serialVersionUID = 1L;

  protected JTextField keepFrames;

  protected JPanel segmentPane;

  protected FiveStaff staff;
  protected TimingCurve timingCurve;

  protected MusicCanvas musicCanvas;
  protected boolean processEvent;
  protected TrebleClefImage tcImage;
 
  public Timing()
  {
    super();
   
    setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
   
    add(musicCanvas = new MusicCanvas());
   
    staff = new FiveStaff();
   
    tcImage = new TrebleClefImage();
   
    timingCurve = new TimingCurve();
    timingCurve.setDescent(150);
   
    musicCanvas.setTopStaff(staff);
    musicCanvas.setTimingCurve(timingCurve);
   
    musicCanvas.setTopClef(tcImage);
   
    staff.setDescent(50);
   
    processEvent = true;
  }
 
  public void removeNotes()
  {
    musicCanvas.removeNotes();
  }
 
  public void addMusicTime(int top, int bottom)
  {
    musicCanvas.setMusicTime(new MusicTime(top, bottom));
  }
 
  public void addNote(Bar bar, int note, int randomNo, int noteType)
  {
    if ((noteType != 1) && (noteType != 2) && (noteType != 4) && (noteType != 8))
      return;
   
    if (noteType > 4)
    {
      timingCurve.setEigthDisplay(true);
    }
   
    Note n = new Note(1);
    n.setMidiNote(note, noteType, randomNo);

    if (bar == null)
      musicCanvas.addNote(n, false);
    else
      bar.addNote(n);
  }
 
  public Bar addBar()
  {
    Bar bar = new Bar();
   
    musicCanvas.addBar(bar);
   
    return bar;
  }
 
  public void addTiming(double timingRatio, int force)
  {
    if (force == 0)
      return;
   
    int bin = ((int)(TimingCurve.TIMING_BINS * timingRatio) + (TimingCurve.TIMING_BINS / 2)) % TimingCurve.TIMING_BINS;
   
    timingCurve.addToBin(bin);
   
    invalidate();
    repaint();
  }
}
TOP

Related Classes of music.ui.panels.Timing

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.