Logo Search packages:      
Sourcecode: rosegarden version File versions  Download package


// -*- c-basic-offset: 4 -*-

    A sequencer and musical notation editor.

    This program is Copyright 2000-2006
        Guillaume Laurent   <glaurent@telegraph-road.org>,
        Chris Cannam        <cannam@all-day-breakfast.com>,
        Richard Bown        <bownie@bownie.com>

    The moral right of the authors to claim authorship of this work
    has been asserted.

    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 2 of the
    License, or (at your option) any later version.  See the file
    COPYING included with this distribution for more information.

// Representation of a Track

#ifndef _TRACK_H_
#define _TRACK_H_

#include <string>

#include "XmlExportable.h"
#include "Instrument.h"
#include "Device.h"

namespace Rosegarden
class Composition;

typedef unsigned int TrackId;

 * A Track represents a line on the SegmentCanvas on the
 * Rosegarden GUI.  A Track is owned by a Composition and
 * has reference to an Instrument from which the playback
 * characteristics of the Track can be derived.  A Track
 * has no type itself - the type comes only from the
 * Instrument relationship.
00051 class Track : public XmlExportable
    friend class Composition;

    Track(TrackId id,
          InstrumentId instrument = 0,
          int position =0 ,
          const std::string &label = "",
          bool muted = false);

    void setId(TrackId id) { m_id = id; }

    Track(const Track &);
    Track operator=(const Track &);



    TrackId getId() const { return m_id; }

    void setMuted(bool muted);
    bool isMuted() const { return m_muted; }

    void setPosition(int position) { m_position = position; }
    int getPosition() const { return m_position; }

    void setLabel(const std::string &label);
    std::string getLabel() const { return m_label; }

    void setPresetLabel(const std::string &label);
    std::string getPresetLabel() const { return m_presetLabel; }

    void setInstrument(InstrumentId instrument);
    InstrumentId getInstrument() const { return m_instrument; }

    // Implementation of virtual
    virtual std::string toXmlString();

    Composition* getOwningComposition() { return m_owningComposition; }

    void setMidiInputDevice(DeviceId id);
    DeviceId getMidiInputDevice() const { return m_input_device; }

    void setMidiInputChannel(char ic);
    char getMidiInputChannel() const { return m_input_channel; }

    int getClef() { return m_clef; }
    void setClef(int clef) { m_clef = clef; }

    int getTranspose() { return m_transpose; }
    void setTranspose(int transpose) { m_transpose = transpose; }

    int getColor() { return m_color; }
    void setColor(int color) { m_color = color; }

    int getHighestPlayable() { return m_highestPlayable; }
    void setHighestPlayable(int pitch) { m_highestPlayable = pitch; }
    int getLowestPlayable() { return m_lowestPlayable; }
    void setLowestPlayable(int pitch) { m_lowestPlayable = pitch; }
    bool isArmed() const { return m_armed; }
    void setArmed(bool armed);

protected: // For Composition use only
    void setOwningComposition(Composition* comp) { m_owningComposition = comp; }

    //--------------- Data members ---------------------------------

    TrackId        m_id;
    bool           m_muted;
    std::string    m_label;
    std::string    m_presetLabel;
    int            m_position;
    InstrumentId   m_instrument;

    Composition*   m_owningComposition;

    DeviceId       m_input_device;
    char           m_input_channel;
    bool           m_armed;

    // default parameters for new segments created belonging to this track
    int              m_clef;
    int              m_transpose;
    int              m_color;
    int              m_highestPlayable;
    int              m_lowestPlayable;


#endif // _TRACK_H_

Generated by  Doxygen 1.6.0   Back to index