36 lines
1.1 KiB
C
36 lines
1.1 KiB
C
#ifndef XTC_PROJECT_INTERNAL_H
|
|
#define XTC_PROJECT_INTERNAL_H
|
|
|
|
#include "xtc/xtc_project.h"
|
|
#include "xtc/xtc_midi.h"
|
|
#include "xtc/xtc_mixer.h"
|
|
|
|
struct xtc_project {
|
|
xtc_graph *graph;
|
|
uint64_t next_track_id, next_clip_id;
|
|
unsigned int tempo;
|
|
size_t track_count, clip_count;
|
|
uint64_t next_note_id;
|
|
size_t note_count;
|
|
size_t automation_count;
|
|
xtc_automation_point automation[XTC_MAX_AUTOMATION_POINTS];
|
|
xtc_note_info notes[XTC_PROJECT_MAX_NOTES];
|
|
xtc_track_info tracks[XTC_PROJECT_MAX_TRACKS];
|
|
xtc_clip_info clips[XTC_PROJECT_MAX_CLIPS];
|
|
};
|
|
|
|
/**
|
|
* @brief Checks for a nonempty UTF-8 name of at most 63 bytes without ASCII controls.
|
|
*
|
|
* @param name NUL-terminated name.
|
|
* @return Nonzero for a valid name, zero otherwise.
|
|
*/
|
|
int xtc_project_valid_name(const char *name);
|
|
/**
|
|
* @brief Validates project IDs, timeline ranges, names, graph, notes, and automation.
|
|
*
|
|
* @param project Project model; borrowed for this call.
|
|
* @return XTC_OK on success, or an error code describing the failure.
|
|
*/
|
|
xtc_result xtc_project_validate(const xtc_project *project);
|
|
#endif
|