Anklang-0.3.0.dev956+gd75ac925 anklang-0.3.0.dev956+gd75ac925
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#pragma once
3
4#include <ase/device.hh>
5#include <ase/track.hh>
6#include <ase/member.hh>
7#include <ase/transport.hh>
8
9namespace Ase {
10
11class UndoScope {
12 ProjectImplP projectp_;
13 String scopename_;
14 friend class ProjectImpl;
15 explicit UndoScope (ProjectImplP projectp, const String &scopename);
16public:
17 /*copy*/ UndoScope (const UndoScope&) = delete;
18 UndoScope& operator= (const UndoScope&) = delete;
19 /*dtor*/ ~UndoScope ();
20};
21
22class ProjectImpl final : public DeviceImpl, public virtual Project {
25 std::unique_ptr<TransportListener> transport_listener_;
27 struct PStorage;
28 PStorage *storage_ = nullptr;
29 String saved_filename_;
30 bool discarded_ = false;
31 friend class TrackImpl;
32 friend class UndoScope;
33 friend void test_audio_sample_load();
34 UndoScope add_undo_scope (const String &scopename);
35protected:
36 explicit ProjectImpl ();
37 virtual ~ProjectImpl ();
38 void foreach_track (const std::function<bool(Track&,int)> &cb);
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 discard () override;
52 DeviceInfo device_info () override;
53 UndoScope undo_scope (const String &scopename);
54 void undo () override;
55 bool can_undo () override;
56 void redo () override;
57 bool can_redo () override;
58 double length () const override;
59 double master_volume () const override;
60 void master_volume (double db) override;
61 void group_undo (const String &undoname) override;
62 void ungroup_undo () override;
63 void clear_undo ();
64 void start_playback (double autostop);
65 void start_playback () override { start_playback (D64MAX); }
66 void pause_playback () override;
67 void stop_playback () override;
68 bool is_playing () const override;
69 void is_playing (bool play) override;
70 TrackP create_track () override;
71 void remove_self () override;
72 TrackS all_tracks () override;
73 TrackP master_track () override;
74 Error load_project (const String &utf8filename) override;
75 StreamReaderP load_blob (const String &fspath);
76 String loader_resolve (const String &hexhash);
77 Error save_project (const String &utf8filename, bool collect) override;
78 String saved_filename () override; // returns utf8filename
79 String writer_file_name (const String &fspath) const;
80 Error writer_add_file (const String &fspath);
81 Error writer_collect (const String &fspath, String *hexhashp);
82 TelemetryFieldS telemetry () const override;
83 ssize_t track_index (const Track &child) const;
84 int64_t bar_ticks () const;
85 static void force_shutdown_all ();
86 static ProjectImplP create (const String &projectname);
87};
88using ProjectImplP = std::shared_ptr<ProjectImpl>;
89
90} // Ase
91
void group_undo(const String &undoname) override
Merge upcoming undo steps.
Definition project.cc:842
void redo() override
Redo the last undo modification.
Definition project.cc:798
bool can_redo() override
Check if any redo steps have been recorded.
Definition project.cc:808
TrackP master_track() override
Retrieve the master track.
Definition project.cc:1028
void undo() override
Undo the last project modification.
Definition project.cc:781
String match_serialized(const String &regex, int group) override
Match regex against the serialized project state.
Definition project.cc:740
bool is_playing() const override
Check whether a project is currently playing (song sequencing).
Definition project.cc:946
void remove_self() override
Remove self from parent container.
Definition project.cc:435
bool can_undo() override
Check if any undo steps have been recorded.
Definition project.cc:791
TelemetryFieldS telemetry() const override
Retrieve project telemetry locations.
Definition project.cc:380
TrackS all_tracks() override
List all tracks of the project.
Definition project.cc:975
void ungroup_undo() override
Stop merging undo steps.
Definition project.cc:849
String saved_filename() override
Retrieve UTF-8 filename for save or from load.
Definition project.cc:664
TrackP create_track() override
Create and append a new Track.
Definition project.cc:963
Error save_project(const String &utf8filename, bool collect) override
Store Project and collect external files.
Definition project.cc:464
double master_volume() const override
Get master volume in dB.
Definition project.cc:822
String loader_resolve(const String &hexhash)
Find file from hash code, returns fspath.
Definition project.cc:729
void start_playback() override
Start playback of a project, requires active sound engine.
Definition project.hh:65
DeviceInfo device_info() override
Describe this Device type.
Definition project.cc:1037
void discard() override
Discard project and associated resources.
Definition project.cc:424
Error load_project(const String &utf8filename) override
Load project from file filename.
Definition project.cc:670
double length() const override
Get the end time of the last clip in seconds.
Definition project.cc:815
void pause_playback() override
Pause playback at the current position.
Definition project.cc:928
void stop_playback() override
Stop project playback.
Definition project.cc:935
Projects support loading, saving, playback and act as containers for all other sound objects.
Definition api.hh:308
Ase::Track implementation.
Definition track.hh:10
Container for Clip objects and sequencing information.
Definition api.hh:262
#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:8
Error
Enum representing Error states.
Definition api.hh:21
Info for device types.
Definition api.hh:200
typedef int64_t
typedef ssize_t