Anklang-0.3.0.dev797+g4e3241f3 anklang-0.3.0.dev797+g4e3241f3
ASE — Anklang Sound Engine (C++)

« « « Anklang Documentation
Loading...
Searching...
No Matches
project.hh
Go to the documentation of this file.
1 // This Source Code Form is licensed MPL-2.0: http://mozilla.org/MPL/2.0
2#ifndef __ASE_PROJECT_HH__
3#define __ASE_PROJECT_HH__
4
5#include <ase/device.hh>
6#include <ase/track.hh>
7#include <ase/member.hh>
8#include <ase/transport.hh>
9
10namespace Ase {
11
12class UndoScope {
13 ProjectImplP projectp_;
14 String scopename_;
15 friend class ProjectImpl;
16 explicit UndoScope (ProjectImplP projectp, const String &scopename);
17public:
18 /*copy*/ UndoScope (const UndoScope&) = delete;
19 UndoScope& operator= (const UndoScope&) = delete;
20 /*dtor*/ ~UndoScope ();
21};
22
23class ProjectImpl final : public DeviceImpl, public virtual Project {
26 std::unique_ptr<TransportListener> transport_listener_;
28 struct PStorage;
29 PStorage *storage_ = nullptr;
30 String saved_filename_;
31 bool discarded_ = false;
32 friend class UndoScope;
33 UndoScope add_undo_scope (const String &scopename);
34protected:
35 explicit ProjectImpl ();
36 virtual ~ProjectImpl ();
37 void foreach_track (const std::function<bool(Track&,int)> &cb);
38 void serialize (WritNode &xs) override;
39 Error snapshot_project (String &json);
40 String match_serialized (const String &regex, int group) override;
41 void deactivate_edit ();
42public:
43 void bpm (double bpm) override;
44 double bpm () const override;
45 void numerator (double num) override;
46 double numerator () const override;
47 void denominator (double den) override;
48 double denominator () const override;
49 String name () const override;
50 void name (const std::string &n) override;
51 void _activate () override;
52 void _deactivate () override;
53 void discard () override;
54 DeviceInfo device_info () override;
55 UndoScope undo_scope (const String &scopename);
56 void undo () override;
57 bool can_undo () override;
58 void redo () override;
59 bool can_redo () override;
60 double length () const override;
61 double master_volume () const override;
62 void master_volume (double db) override;
63 void group_undo (const String &undoname) override;
64 void ungroup_undo () override;
65 void clear_undo ();
66 void start_playback (double autostop);
67 void start_playback () override { start_playback (D64MAX); }
68 void pause_playback () override;
69 void stop_playback () override;
70 bool is_playing () const override;
71 void is_playing (bool play) override;
72 TrackP create_track () override;
73 bool remove_track (Track &child) override;
74 TrackS all_tracks () override;
75 TrackP master_track () override;
76 Error load_project (const String &utf8filename) override;
77 StreamReaderP load_blob (const String &fspath);
78 String loader_resolve (const String &hexhash);
79 Error save_project (const String &utf8filename, bool collect) override;
80 String saved_filename () override; // returns utf8filename
81 String writer_file_name (const String &fspath) const;
82 Error writer_add_file (const String &fspath);
83 Error writer_collect (const String &fspath, String *hexhashp);
84 TelemetryFieldS telemetry () const override;
85 ssize_t track_index (const Track &child) const;
86 int64_t bar_ticks () const;
87 static void force_shutdown_all ();
88 static ProjectImplP create (const String &projectname);
89};
90using ProjectImplP = std::shared_ptr<ProjectImpl>;
91
92} // Ase
93
94#endif // __ASE_PROJECT_HH__
bool remove_track(Track &child) override
Remove a track owned by this Project.
Definition project.cc:969
void group_undo(const String &undoname) override
Merge upcoming undo steps.
Definition project.cc:836
void _deactivate() override
Stop processing the corresponding AudioProcessor.
Definition project.cc:419
void redo() override
Redo the last undo modification.
Definition project.cc:792
bool can_redo() override
Check if any redo steps have been recorded.
Definition project.cc:802
TrackP master_track() override
Retrieve the master track.
Definition project.cc:1035
void undo() override
Undo the last project modification.
Definition project.cc:775
String match_serialized(const String &regex, int group) override
Match regex against the serialized project state.
Definition project.cc:734
bool is_playing() const override
Check whether a project is currently playing (song sequencing).
Definition project.cc:940
bool can_undo() override
Check if any undo steps have been recorded.
Definition project.cc:785
void serialize(WritNode &xs) override
Serialize members and childern.
Definition project.cc:728
TelemetryFieldS telemetry() const override
Retrieve project telemetry locations.
Definition project.cc:356
TrackS all_tracks() override
List all tracks of the project.
Definition project.cc:982
void ungroup_undo() override
Stop merging undo steps.
Definition project.cc:843
String saved_filename() override
Retrieve UTF-8 filename for save or from load.
Definition project.cc:651
TrackP create_track() override
Create and append a new Track.
Definition project.cc:957
Error save_project(const String &utf8filename, bool collect) override
Store Project and collect external files.
Definition project.cc:449
void _activate() override
Add AudioProcessor to the Engine and start processing.
Definition project.cc:411
double master_volume() const override
Get master volume in dB.
Definition project.cc:816
String loader_resolve(const String &hexhash)
Find file from hash code, returns fspath.
Definition project.cc:717
void start_playback() override
Start playback of a project, requires active sound engine.
Definition project.hh:67
DeviceInfo device_info() override
Describe this Device type.
Definition project.cc:1044
void discard() override
Discard project and associated resources.
Definition project.cc:400
Error load_project(const String &utf8filename) override
Load project from file filename.
Definition project.cc:657
double length() const override
Get the end time of the last clip in seconds.
Definition project.cc:809
void pause_playback() override
Pause playback at the current position.
Definition project.cc:922
void stop_playback() override
Stop project playback.
Definition project.cc:929
Projects support loading, saving, playback and act as containers for all other sound objects.
Definition api.hh:309
Container for Clip objects and sequencing information.
Definition api.hh:269
One entry in a Writ serialization document.
Definition serialize.hh:24
#define ASE_DEFINE_MAKE_SHARED(CLASS)
Define a member function static shared_ptr<CLASS> make_shared(ctorargs...);.
Definition cxxaux.hh:274
The Anklang C++ API namespace.
Definition api.hh:9
Error
Enum representing Error states.
Definition api.hh:22
Info for device types.
Definition api.hh:199
typedef int64_t
typedef ssize_t