11 #define BSE_TYPE_PART (BSE_TYPE_ID (BsePart))
12 #define BSE_PART(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_PART, BsePart))
13 #define BSE_PART_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_PART, BsePartClass))
14 #define BSE_IS_PART(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_PART))
15 #define BSE_IS_PART_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), BSE_TYPE_PART))
16 #define BSE_PART_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BSE_TYPE_PART, BsePartClass))
27 const double *semitone_table;
40 guint links_queued : 1;
41 guint range_queued : 1;
48 void (*range_changed) (
BsePart *part,
57 BSE_PART_EVENT_CONTROL,
61 #define bse_part_transpose_factor( part, index ) ((part)->semitone_table[index])
62 void bse_part_set_semitone_table (
BsePart *
self,
63 const double *semitone_table);
64 void bse_part_links_changed (
BsePart *
self);
66 gboolean bse_part_delete_control (
BsePart *
self,
68 gboolean bse_part_delete_note (
BsePart *
self,
71 guint bse_part_insert_note (
BsePart *
self,
78 guint bse_part_insert_control (
BsePart *
self,
80 Bse::MidiSignalType ctype,
82 gboolean bse_part_change_note (
BsePart *
self,
90 gboolean bse_part_change_control (
BsePart *
self,
93 Bse::MidiSignalType ctype,
101 gboolean include_crossings);
106 Bse::MidiSignalType ctype);
107 void bse_part_queue_notes_within (
BsePart *
self,
112 #define bse_part_queue_controls(p,t,d) bse_part_queue_notes_within (p, t, d, BSE_MIN_NOTE, BSE_MAX_NOTE)
115 void bse_part_select_notes (
BsePart *
self,
122 void bse_part_select_controls (
BsePart *
self,
125 Bse::MidiSignalType ctype,
127 void bse_part_select_notes_exclusive (
BsePart *
self,
133 void bse_part_select_controls_exclusive (
BsePart *
self,
136 Bse::MidiSignalType ctype);
137 gboolean bse_part_set_note_selected (
BsePart *
self,
141 gboolean bse_part_set_control_selected (
BsePart *
self,
146 BsePartEventType event_type;
156 gfloat fine_tune_value;
157 gfloat velocity_value;
159 Bse::MidiSignalType control_type;
160 gfloat control_value;
163 BsePartEventType bse_part_query_event (
BsePart *
self,
169 #define BSE_PART_MAX_CHANNELS (0x1024)
170 #define BSE_PART_MAX_TICK (0x7fffffff)
171 #define BSE_PART_INVAL_TICK_FLAG (0x80000000)
172 #define BSE_PART_NOTE_CONTROL(ctype) ((ctype) == Bse::MIDI_SIGNAL_VELOCITY || \
173 (ctype) == Bse::MIDI_SIGNAL_FINE_TUNE)
236 #define BSE_PART_NOTE_N_CROSSINGS(note) ((note)->crossings ? (note)->crossings[0] : 0)
237 #define BSE_PART_NOTE_CROSSING(note,j) ((note)->crossings[1 + (j)])
238 #define BSE_PART_SEMITONE_FACTOR(part,noteval) (bse_part_transpose_factor ((part), CLAMP ((noteval), SFI_MIN_NOTE, SFI_MAX_NOTE) - SFI_KAMMER_NOTE))
239 #define BSE_PART_NOTE_FREQ(part,note) (BSE_KAMMER_FREQUENCY * \
240 BSE_PART_SEMITONE_FACTOR ((part), (note)->note) * \
241 bse_cent_tune_fast ((note)->fine_tune))
289 virtual ErrorType
change_control (
int id,
int tick, MidiSignalType control_type,
double value)
override;
290 virtual ErrorType
change_note (
int id,
int tick,
int duration,
int note,
int fine_tune,
double velocity)
override;
292 virtual void deselect_controls (
int tick,
int duration, MidiSignalType control_type)
override;
294 virtual void deselect_notes (
int tick,
int duration,
int min_note,
int max_note)
override;
296 virtual void select_controls (
int tick,
int duration, MidiSignalType control_type)
override;
299 virtual void select_notes (
int tick,
int duration,
int min_note,
int max_note)
override;
301 virtual int insert_control (
int tick, MidiSignalType control_type,
double value)
override;
302 virtual int insert_note (
int channel,
int tick,
int duration,
int note,
int fine_tune,
double velocity)
override;
303 virtual int insert_note_auto (
int tick,
int duration,
int note,
int fine_tune,
double velocity)
override;
305 virtual void queue_notes (
int tick,
int duration,
int min_note,
int max_note)
override;
virtual ErrorType change_note(int id, int tick, int duration, int note, int fine_tune, double velocity) override
See Part::change_note()
Definition: bsepart.cc:2224
virtual ErrorType change_control(int id, int tick, MidiSignalType control_type, double value) override
See Part::change_control()
Definition: bsepart.cc:2184
virtual void select_controls_exclusive(int tick, int duration, MidiSignalType control_type) override
See Part::select_controls_exclusive()
Definition: bsepart.cc:2317
virtual int insert_control(int tick, MidiSignalType control_type, double value) override
See Part::insert_control()
Definition: bsepart.cc:2350
virtual PartControlSeq list_controls(int tick, int duration, MidiSignalType control_type) override
See Part::list_controls()
Definition: bsepart.cc:2124
virtual ErrorType delete_event(int id) override
See Part::delete_event()
Definition: bsepart.cc:2249
virtual int insert_note(int channel, int tick, int duration, int note, int fine_tune, double velocity) override
See Part::insert_note()
Definition: bsepart.cc:2360
The Bse namespace contains all functions of the synthesis engine.
Definition: bstbseutils.cc:67
Definition: bsepart.hh:23
Definition: bsepart.hh:181
virtual PartControlSeq list_selected_controls(MidiSignalType control_type) override
See Part::list_selected_controls()
Definition: bsepart.cc:2131
virtual int insert_note_auto(int tick, int duration, int note, int fine_tune, double velocity) override
See Part::insert_note_auto()
Definition: bsepart.cc:2370
virtual int get_max_note() override
See Part::get_max_note()
Definition: bsepart.cc:2172
virtual int get_min_note() override
See Part::get_min_note()
Definition: bsepart.cc:2178
Definition: bsepart.hh:144
Definition: bsepart.hh:225
virtual PartNoteSeq check_overlap(int tick, int duration, int note) override
See Part::check_overlap()
Definition: bsepart.cc:2110
virtual void select_notes_exclusive(int tick, int duration, int min_note, int max_note) override
See Part::select_notes_exclusive()
Definition: bsepart.cc:2343
Definition: gbsearcharray.hh:37
virtual SongTiming get_timing(int tick) override
See Part::get_timing()
Definition: bsepart.cc:2159
Definition: bsepart.hh:47
virtual PartControlSeq get_controls(int tick, MidiSignalType control_type) override
See Part::get_controls()
Definition: bsepart.cc:2138
A list of part control events.
Definition: bseapi.idl:378
Definition: bsepart.hh:271
Definition: bsepart.hh:20
virtual void queue_notes(int tick, int duration, int min_note, int max_note) override
See Part::queue_notes()
Definition: bsepart.cc:2387
virtual void deselect_controls(int tick, int duration, MidiSignalType control_type) override
See Part::deselect_controls()
Definition: bsepart.cc:2273
virtual void select_controls(int tick, int duration, MidiSignalType control_type) override
See Part::select_controls()
Definition: bsepart.cc:2310
Definition: bseobject.hh:60
virtual PartLinkSeq list_links() override
See Part::list_links()
Definition: bsepart.cc:2152
virtual void queue_controls(int tick, int duration) override
See Part::queue_controls()
Definition: bsepart.cc:2380
virtual bool is_event_selected(int id) override
See Part::is_event_selected()
Definition: bsepart.cc:2299
virtual void deselect_event(int id) override
See Part::deselect_event()
Definition: bsepart.cc:2280
See also the corresponding IDL class Part.
Definition: bseserverapi.hh:573
virtual PartNoteSeq get_notes(int tick, int note) override
See Part::get_notes()
Definition: bsepart.cc:2117
virtual PartNoteSeq list_notes_crossing(int tick, int duration) override
See Part::list_notes_crossing()
Definition: bsepart.cc:2089
virtual void select_notes(int tick, int duration, int min_note, int max_note) override
See Part::select_notes()
Definition: bsepart.cc:2336
A list of part note events.
Definition: bseapi.idl:364
virtual PartNoteSeq list_selected_notes() override
See Part::list_selected_notes()
Definition: bsepart.cc:2103
virtual void deselect_notes(int tick, int duration, int min_note, int max_note) override
See Part::deselect_notes()
Definition: bsepart.cc:2292
virtual PartControlSeq get_channel_controls(int channel, int tick, int duration, MidiSignalType control_type) override
See Part::get_channel_controls()
Definition: bsepart.cc:2145
Definition: bseitem.hh:153
Definition: bseitem.hh:40
Definition: bsepart.hh:177
Song timing configuration.
Definition: bseapi.idl:322
Definition: bsepart.hh:26
virtual void select_event(int id) override
See Part::select_event()
Definition: bsepart.cc:2324
Sequence of PartLink records.
Definition: bseapi.idl:504
Definition: bseitem.hh:34
virtual PartNoteSeq list_notes_within(int channel, int tick, int duration) override
See Part::list_notes_within()
Definition: bsepart.cc:2096