BEAST/BSE - Better Audio System and Sound Engine
0.8.2
|
00001 // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html 00002 #ifndef __BSE_PROJECT_H__ 00003 #define __BSE_PROJECT_H__ 00004 00005 #include <bse/bsecontainer.hh> 00006 00007 G_BEGIN_DECLS 00008 00009 00010 /* --- object type macros --- */ 00011 #define BSE_TYPE_PROJECT (BSE_TYPE_ID (BseProject)) 00012 #define BSE_PROJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_PROJECT, BseProject)) 00013 #define BSE_PROJECT_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_PROJECT, BseProjectClass)) 00014 #define BSE_IS_PROJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_PROJECT)) 00015 #define BSE_IS_PROJECT_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), BSE_TYPE_PROJECT)) 00016 #define BSE_PROJECT_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BSE_TYPE_PROJECT, BseProjectClass)) 00017 00018 00019 /* --- BseProject object --- */ 00020 typedef enum { 00021 BSE_PROJECT_INACTIVE, 00022 BSE_PROJECT_ACTIVE, 00023 BSE_PROJECT_PLAYING 00024 } BseProjectState; 00025 00026 struct BseProject : BseContainer { 00027 GSList *supers; 00028 GSList *items; 00029 guint in_undo : 1; 00030 guint in_redo : 1; 00031 BseUndoStack *undo_stack; 00032 BseUndoStack *redo_stack; 00033 BseProjectState state; 00034 guint deactivate_timer; 00035 gint64 deactivate_usecs; 00036 guint64 deactivate_min_tick; 00037 BseMidiReceiver *midi_receiver; 00038 }; 00039 struct BseProjectClass : BseContainerClass 00040 {}; 00041 00042 BseErrorType bse_project_activate (BseProject *project); 00043 void bse_project_start_playback (BseProject *project); 00044 void bse_project_stop_playback (BseProject *project); 00045 void bse_project_check_auto_stop (BseProject *project); 00046 void bse_project_deactivate (BseProject *project); 00047 void bse_project_set_auto_deactivate (BseProject *project, 00048 gint64 usecs); 00049 void bse_project_keep_activated (BseProject *project, 00050 guint64 min_tick); 00051 void bse_project_state_changed (BseProject *project, 00052 BseProjectState state); 00053 BseStringSeq* bse_project_list_upaths (BseProject *project, 00054 GType item_type); 00055 BseErrorType bse_project_restore (BseProject *project, 00056 BseStorage *storage); 00057 BseErrorType bse_project_store_bse (BseProject *project, 00058 BseSuper *super, 00059 const gchar *bse_file, 00060 gboolean self_contained); 00061 BseObject* bse_project_upath_resolver (gpointer project /* func_data */, 00062 GType required_type, 00063 const gchar *upath, 00064 gchar **error_p); 00065 BseItem* bse_project_lookup_typed_item (BseProject *project, 00066 GType item_type, 00067 const gchar *uname); 00068 BseWaveRepo* bse_project_get_wave_repo (BseProject *project); 00069 BseSong* bse_project_get_song (BseProject *project); 00070 BseSNet* bse_project_create_intern_synth (BseProject *project, 00071 const gchar *synth_name, 00072 GType check_type); 00073 BseCSynth* bse_project_create_intern_csynth(BseProject *project, 00074 const char *base_name); 00075 BseMidiNotifier*bse_project_get_midi_notifier (BseProject *project); 00076 void bse_project_clear_undo (BseProject *project); 00077 void bse_project_clean_dirty (BseProject *project); 00078 void bse_project_push_undo_silent_deactivate (BseProject *self); 00079 00080 00081 G_END_DECLS 00082 00083 #endif /* __BSE_PROJECT_H__ */