2 #ifndef __BSE_PATTERN_H__
3 #define __BSE_PATTERN_H__
6 #include <bse/bseeffect.h>
15 #define BSE_TYPE_PATTERN (BSE_TYPE_ID (BsePattern))
16 #define BSE_PATTERN(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_PATTERN, BsePattern))
17 #define BSE_PATTERN_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_PATTERN, BsePatternClass))
18 #define BSE_IS_PATTERN(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_PATTERN))
19 #define BSE_IS_PATTERN_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), BSE_TYPE_PATTERN))
20 #define BSE_PATTERN_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BSE_TYPE_PATTERN, BsePatternClass))
24 #define BSE_PATTERN_N_CHANNELS(pattern) (((BsePattern*) (pattern))->n_channels)
25 #define BSE_PATTERN_N_ROWS(pattern) (((BsePattern*) (pattern))->n_rows)
31 BseInstrument *instrument;
44 BsePatternNote *notes ;
47 guint current_channel;
60 BsePatternNote* bse_pattern_peek_note (BsePattern *pattern,
63 GList* bse_pattern_list_selection (BsePattern *pattern);
64 gboolean bse_pattern_has_selection (BsePattern *pattern);
65 void bse_pattern_modify_note (BsePattern *pattern,
69 BseInstrument *instrument);
70 guint bse_pattern_note_get_n_effects (BsePattern *pattern,
73 BseEffect* bse_pattern_note_get_effect (BsePattern *pattern,
77 BseEffect* bse_pattern_note_find_effect (BsePattern *pattern,
81 void bse_pattern_note_actuate_effect (BsePattern *pattern,
85 void bse_pattern_note_drop_effect (BsePattern *pattern,
92 void bse_pattern_set_note (BsePattern *pattern,
96 void bse_pattern_set_instrument (BsePattern *pattern,
99 BseInstrument *instrument);
103 void bse_pattern_set_n_channels (BsePattern *pattern,
105 void bse_pattern_set_n_rows (BsePattern *pattern,
107 void bse_pattern_select_note (BsePattern *pattern,
110 void bse_pattern_unselect_note (BsePattern *pattern,
122 void bse_pattern_save_selection (BsePattern *pattern,
124 void bse_pattern_restore_selection (BsePattern *pattern,
126 guint32* bse_pattern_selection_new (guint n_channels,
128 guint32* bse_pattern_selection_copy (guint32 *src_selection);
129 void bse_pattern_selection_free (guint32 *selection);
130 void bse_pattern_selection_fill (guint32 *selection,
132 #define BSE_PATTERN_SELECTION_N_CHANNELS(selection) (selection[0])
133 #define BSE_PATTERN_SELECTION_N_ROWS(selection) (selection[1])
134 #define BSE_PATTERN_SELECTION_MARK(selection, channel, row) \
135 _bse_pattern_selection_mark ((selection), (channel), (row))
136 #define BSE_PATTERN_SELECTION_UNMARK(selection, channel, row) \
137 _bse_pattern_selection_unmark ((selection), (channel), (row))
138 #define BSE_PATTERN_SELECTION_TEST(selection, channel, row) \
139 _bse_pattern_selection_test ((selection), (channel), (row))
143 static inline gboolean
144 _bse_pattern_selection_test (guint32 *selection,
148 guint n = BSE_PATTERN_SELECTION_N_CHANNELS (selection) * row + channel;
151 return (selection[(n >> 5) + 2] & (1 << (n & 0x1f))) != 0;
154 _bse_pattern_selection_mark (guint32 *selection,
158 guint n = BSE_PATTERN_SELECTION_N_CHANNELS (selection) * row + channel;
160 selection[(n >> 5) + 2] |= 1 << (n & 0x1f);
163 _bse_pattern_selection_unmark (guint32 *selection,
167 guint n = BSE_PATTERN_SELECTION_N_CHANNELS (selection) * row + channel;
169 selection[(n >> 5) + 2] &= ~(1 << (n & 0x1f));
Definition: bsepattern.hh:29
Definition: bsepattern.hh:37
Definition: bsepattern.hh:50
Definition: bseitem.hh:39
Definition: bseitem.hh:34