AgsNotation

AgsNotation — Notation class supporting selection and clipboard.

Synopsis

#include <ags/audio/ags_notation.h>

#define             AGS_NOTATION_DEFAULT_BPM
#define             AGS_NOTATION_DEFAULT_DURATION
#define             AGS_NOTATION_DEFAULT_JIFFIE
#define             AGS_NOTATION_DEFAULT_LENGTH
#define             AGS_NOTATION_MAXIMUM_NOTE_LENGTH
#define             AGS_NOTATION_MINIMUM_NOTE_LENGTH
#define             AGS_NOTATION_TICS_PER_BEAT
struct              AgsNotation;
struct              AgsNotationClass;
enum                AgsNotationFlags;
void                ags_notation_add_note               (AgsNotation *notation,
                                                         AgsNote *note,
                                                         gboolean use_selection_list);
void                ags_notation_add_point_to_selection (AgsNotation *notation,
                                                         guint x,
                                                         guint y,
                                                         gboolean replace_current_selection);
void                ags_notation_add_region_to_selection
                                                        (AgsNotation *notation,
                                                         guint x0,
                                                         guint y0,
                                                         guint x1,
                                                         guint y1,
                                                         gboolean replace_current_selection);
xmlNodePtr          ags_notation_copy_selection         (AgsNotation *notation);
xmlNodePtr          ags_notation_cut_selection          (AgsNotation *notation);
GList *             ags_notation_find_near_timestamp    (GList *notation,
                                                         guint audio_channel,
                                                         GObject *timestamp);
AgsNote *           ags_notation_find_point             (AgsNotation *notation,
                                                         guint x,
                                                         guint y,
                                                         gboolean use_selection_list);
GList *             ags_notation_find_region            (AgsNotation *notation,
                                                         guint x0,
                                                         guint y0,
                                                         guint x1,
                                                         guint y1,
                                                         gboolean use_selection_list);
void                ags_notation_free_selection         (AgsNotation *notation);
GList *             ags_notation_get_current            (AgsNotation *notation);
GList *             ags_notation_get_selection          (AgsNotation *notation);
void                ags_notation_insert_from_clipboard  (AgsNotation *notation,
                                                         xmlNodePtr content,
                                                         gboolean reset_x_offset,
                                                         guint x_offset,
                                                         gboolean reset_y_offset,
                                                         guint y_offset);
gboolean            ags_notation_is_note_selected       (AgsNotation *notation,
                                                         AgsNote *note);
AgsNotation *       ags_notation_new                    (guint audio_channel);
gboolean            ags_notation_remove_note_at_position
                                                        (AgsNotation *notation,
                                                         guint x,
                                                         guint y);
void                ags_notation_remove_point_from_selection
                                                        (AgsNotation *notation,
                                                         guint x,
                                                         guint y);
void                ags_notation_remove_region_from_selection
                                                        (AgsNotation *notation,
                                                         guint x0,
                                                         guint y0,
                                                         guint x1,
                                                         guint y1);

Description

AgsNotation acts as a container of AgsNote.

Details

AGS_NOTATION_DEFAULT_BPM

#define AGS_NOTATION_DEFAULT_BPM (120.0)

AGS_NOTATION_DEFAULT_DURATION

#define AGS_NOTATION_DEFAULT_DURATION (AGS_NOTATION_DEFAULT_LENGTH * AGS_NOTATION_DEFAULT_JIFFIE * AGS_MICROSECONDS_PER_SECOND)

AGS_NOTATION_DEFAULT_JIFFIE

#define AGS_NOTATION_DEFAULT_JIFFIE (60.0 / AGS_NOTATION_DEFAULT_BPM / AGS_NOTATION_TICS_PER_BEAT)

AGS_NOTATION_DEFAULT_LENGTH

#define AGS_NOTATION_DEFAULT_LENGTH (65535.0 / AGS_NOTATION_TICS_PER_BEAT - AGS_NOTATION_MAXIMUM_NOTE_LENGTH)

AGS_NOTATION_MAXIMUM_NOTE_LENGTH

#define AGS_NOTATION_MAXIMUM_NOTE_LENGTH (16.0)

AGS_NOTATION_MINIMUM_NOTE_LENGTH

#define AGS_NOTATION_MINIMUM_NOTE_LENGTH (1.0 / 16.0)

AGS_NOTATION_TICS_PER_BEAT

#define AGS_NOTATION_TICS_PER_BEAT (1.0)

struct AgsNotation

struct AgsNotation {
  GObject object;

  guint flags;

  GObject *timestamp;

  guint audio_channel;
  GObject *audio;

  gchar *key;
  gdouble base_frequency;

  gdouble tact;
  gdouble bpm;

  gdouble maximum_note_length;

  GList *notes;
  
  gdouble start_loop;
  gdouble end_loop;
  gdouble offset;

  GList *selection;

  GObject *port;

  GList *current_notes;
  GList *next_notes;
};

struct AgsNotationClass

struct AgsNotationClass {
  GObjectClass object;
};

enum AgsNotationFlags

typedef enum {
  AGS_NOTATION_STICKY              =  1,
  AGS_NOTATION_INDICATED_LENGTH    =  1 <<  1,
} AgsNotationFlags;

ags_notation_add_note ()

void                ags_notation_add_note               (AgsNotation *notation,
                                                         AgsNote *note,
                                                         gboolean use_selection_list);

Adds a note to notation.

notation :

an AgsNotation

note :

the AgsNote to add

use_selection_list :

if TRUE add to selection, else to default notation

Since 0.4


ags_notation_add_point_to_selection ()

void                ags_notation_add_point_to_selection (AgsNotation *notation,
                                                         guint x,
                                                         guint y,
                                                         gboolean replace_current_selection);

Select notes at position.

notation :

an AgsNotation

x :

offset

y :

tone

replace_current_selection :

if TRUE selection is replaced

Since 0.4


ags_notation_add_region_to_selection ()

void                ags_notation_add_region_to_selection
                                                        (AgsNotation *notation,
                                                         guint x0,
                                                         guint y0,
                                                         guint x1,
                                                         guint y1,
                                                         gboolean replace_current_selection);

Select notes within region.

notation :

an AgsNotation

x0 :

start offset

y0 :

start tone

x1 :

end offset

y1 :

end tone

replace_current_selection :

if TRUE selection is replaced

Since 0.4


ags_notation_copy_selection ()

xmlNodePtr          ags_notation_copy_selection         (AgsNotation *notation);

Copy selection to clipboard.

notation :

an AgsNotation

Returns :

the selection as XML.

Since 0.4


ags_notation_cut_selection ()

xmlNodePtr          ags_notation_cut_selection          (AgsNotation *notation);

Cut selection to clipboard.

notation :

an AgsNotation

Returns :

the selection as XML.

Since 0.4


ags_notation_find_near_timestamp ()

GList *             ags_notation_find_near_timestamp    (GList *notation,
                                                         guint audio_channel,
                                                         GObject *timestamp);

Retrieve appropriate notation for timestamp.

notation :

a GList containing AgsNotation

audio_channel :

the matching audio channel

timestamp :

the matching timestamp

Returns :

Next match.

Since 0.4


ags_notation_find_point ()

AgsNote *           ags_notation_find_point             (AgsNotation *notation,
                                                         guint x,
                                                         guint y,
                                                         gboolean use_selection_list);

Find note by offset and tone.

notation :

an AgsNotation

x :

offset

y :

note

use_selection_list :

if TRUE selection is searched

Returns :

the matching note.

Since 0.4


ags_notation_find_region ()

GList *             ags_notation_find_region            (AgsNotation *notation,
                                                         guint x0,
                                                         guint y0,
                                                         guint x1,
                                                         guint y1,
                                                         gboolean use_selection_list);

Find notes by offset and tone region.

notation :

an AgsNotation

x0 :

start offset

y0 :

start tone

x1 :

end offset

y1 :

end tone

use_selection :

_list if TRUE selection is searched

Returns :

the matching notes as GList.

Since 0.4


ags_notation_free_selection ()

void                ags_notation_free_selection         (AgsNotation *notation);

Clear selection.

notation :

an AgsNotation

Since 0.4


ags_notation_get_current ()

GList *             ags_notation_get_current            (AgsNotation *notation);

ags_notation_get_selection ()

GList *             ags_notation_get_selection          (AgsNotation *notation);

Retrieve selection.

notation :

the AgsNotation

Returns :

the selection.

Since 0.4


ags_notation_insert_from_clipboard ()

void                ags_notation_insert_from_clipboard  (AgsNotation *notation,
                                                         xmlNodePtr content,
                                                         gboolean reset_x_offset,
                                                         guint x_offset,
                                                         gboolean reset_y_offset,
                                                         guint y_offset);

Paste previously copied notes.

notation :

an AgsNotation

notation_node :

the clipboard XML data

reset_x_offset :

if TRUE x_offset used as cursor

x_offset :

region start cursor offset

reset_y_offset :

if TRUE y_offset used as cursor

y_offset :

region start cursor tone

Since 0.4


ags_notation_is_note_selected ()

gboolean            ags_notation_is_note_selected       (AgsNotation *notation,
                                                         AgsNote *note);

Check selection for note.

notation :

the AgsNotation

note :

the AgsNote to check for

Returns :

TRUE if selected

Since 0.4


ags_notation_new ()

AgsNotation *       ags_notation_new                    (guint audio_channel);

Creates a AgsNotation, assigned to audio_channel.

audio_channel :

the audio channel to be used

Returns :

a new AgsNotation

Since 0.4


ags_notation_remove_note_at_position ()

gboolean            ags_notation_remove_note_at_position
                                                        (AgsNotation *notation,
                                                         guint x,
                                                         guint y);

Removes one AgsNote of notation.

notation :

an AgsNotation

x :

offset

y :

note

Returns :

TRUE if successfully removed note.

Since 0.4


ags_notation_remove_point_from_selection ()

void                ags_notation_remove_point_from_selection
                                                        (AgsNotation *notation,
                                                         guint x,
                                                         guint y);

Remove notes at position of selection.

notation :

an AgsNotation

x :

offset

y :

tone

Since 0.4


ags_notation_remove_region_from_selection ()

void                ags_notation_remove_region_from_selection
                                                        (AgsNotation *notation,
                                                         guint x0,
                                                         guint y0,
                                                         guint x1,
                                                         guint y1);

Remove notes within region of selection.

notation :

an AgsNotation

x0 :

start offset

y0 :

start tone

x1 :

end offset

y1 :

end tone

Since 0.4