Anklang-0.3.0.dev886+g785567a1 anklang-0.3.0.dev886+g785567a1
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 TrackImpl;
33 friend class UndoScope;
34 friend void test_audio_sample_load();
35 UndoScope add_undo_scope (const String &scopename);
36protected:
37 explicit ProjectImpl ();
38 virtual ~ProjectImpl ();
39 void foreach_track (const std::function<bool(Track&,int)> &cb);
40 void serialize (WritNode &xs) override;
41 Error snapshot_project (String &json);
42 String match_serialized (const String &regex, int group) override;
43 void deactivate_edit ();
44public:
45 void bpm (double bpm) override;
46 double bpm () const override;
47 void numerator (double num) override;
48 double numerator () const override;
49 void denominator (double den) override;
50 double denominator () const override;
51 String name () const override;
52 void name (const std::string &n) override;
53 void _activate () override;
54 void _deactivate () override;
55 void discard () override;
56 DeviceInfo device_info () override;
57 UndoScope undo_scope (const String &scopename);
58 void undo () override;
59 bool can_undo () override;
60 void redo () override;
61 bool can_redo () override;
62 double length () const override;
63 double master_volume () const override;
64 void master_volume (double db) override;
65 void group_undo (const String &undoname) override;
66 void ungroup_undo () override;
67 void clear_undo ();
68 void start_playback (double autostop);
69 void start_playback () override { start_playback (D64MAX); }
70 void pause_playback () override;
71 void stop_playback () override;
72 bool is_playing () const override;
73 void is_playing (bool play) override;
74 TrackP create_track () override;
75 void remove_self () override;
76 TrackS all_tracks () override;
77 TrackP master_track () override;
78 Error load_project (const String &utf8filename) override;
79 StreamReaderP load_blob (const String &fspath);
80 String loader_resolve (const String &hexhash);
81 Error save_project (const String &utf8filename, bool collect) override;
82 String saved_filename () override; // returns utf8filename
83 String writer_file_name (const String &fspath) const;
84 Error writer_add_file (const String &fspath);
85 Error writer_collect (const String &fspath, String *hexhashp);
86 TelemetryFieldS telemetry () const override;
87 ssize_t track_index (const Track &child) const;
88 int64_t bar_ticks () const;
89 static void force_shutdown_all ();
90 static ProjectImplP create (const String &projectname);
91};
92using ProjectImplP = std::shared_ptr<ProjectImpl>;
93
94} // Ase
95
96#endif // __ASE_PROJECT_HH__
void group_undo(const String &undoname) override
Merge upcoming undo steps.
Definition project.cc:818
void _deactivate() override
Stop processing the corresponding AudioProcessor.
Definition project.cc:401
void redo() override
Redo the last undo modification.
Definition project.cc:774
bool can_redo() override
Check if any redo steps have been recorded.
Definition project.cc:784
TrackP master_track() override
Retrieve the master track.
Definition project.cc:1004
void undo() override
Undo the last project modification.
Definition project.cc:757
String match_serialized(const String &regex, int group) override
Match regex against the serialized project state.
Definition project.cc:716
bool is_playing() const override
Check whether a project is currently playing (song sequencing).
Definition project.cc:922
void remove_self() override
Remove self from parent container.
Definition project.cc:386
bool can_undo() override
Check if any undo steps have been recorded.
Definition project.cc:767
void serialize(WritNode &xs) override
Serialize members and childern.
Definition project.cc:710
TelemetryFieldS telemetry() const override
Retrieve project telemetry locations.
Definition project.cc:331
TrackS all_tracks() override
List all tracks of the project.
Definition project.cc:951
void ungroup_undo() override
Stop merging undo steps.
Definition project.cc:825
String saved_filename() override
Retrieve UTF-8 filename for save or from load.
Definition project.cc:633
TrackP create_track() override
Create and append a new Track.
Definition project.cc:939
Error save_project(const String &utf8filename, bool collect) override
Store Project and collect external files.
Definition project.cc:431
void _activate() override
Add AudioProcessor to the Engine and start processing.
Definition project.cc:393
double master_volume() const override
Get master volume in dB.
Definition project.cc:798
String loader_resolve(const String &hexhash)
Find file from hash code, returns fspath.
Definition project.cc:699
void start_playback() override
Start playback of a project, requires active sound engine.
Definition project.hh:69
DeviceInfo device_info() override
Describe this Device type.
Definition project.cc:1013
void discard() override
Discard project and associated resources.
Definition project.cc:375
Error load_project(const String &utf8filename) override
Load project from file filename.
Definition project.cc:639
double length() const override
Get the end time of the last clip in seconds.
Definition project.cc:791
void pause_playback() override
Pause playback at the current position.
Definition project.cc:904
void stop_playback() override
Stop project playback.
Definition project.cc:911
Projects support loading, saving, playback and act as containers for all other sound objects.
Definition api.hh:311
Ase::Track implementation.
Definition track.hh:11
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:275
The Anklang C++ API namespace.
Definition api.hh:8
Error
Enum representing Error states.
Definition api.hh:21
Info for device types.
Definition api.hh:200
typedef int64_t
typedef ssize_t