Rivendellaudio/lib/rdwavedata.h
Fred Gleason f033d3b4b0 2020-02-03 Fred Gleason <fredg@paravelsystems.com>
* Consolidated the Metadata Wildcard definitions in the
	'RDResolveNowNext()' function into the 'RDLogLine::resolveWildcards()'
	method.
	* Added 'recordMbId' and 'releaseMbId' fields to the cut XML data
	schema.
	* Added '%wm' ['MusicBrainz Recording ID'] and '%wr'
	['MusicBrainz Release ID'] metadata wildcards.
2020-02-03 18:17:24 -05:00

293 lines
8.8 KiB
C++

// rdwavedata.h
//
// A Container Class for Audio Meta Data.
//
// (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License
// version 2 as published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#ifndef RDWAVEDATA_H
#define RDWAVEDATA_H
#include <qstring.h>
#include <qstringlist.h>
#include <qdatetime.h>
#include <rdsettings.h>
class RDWaveData
{
public:
enum EndType {UnknownEnd='N',ColdEnd='C',FadeEnd='F'};
enum CartType {AudioType=0,MacroType=1};
enum UsageCode {UsageFeature=0,UsageOpen=1,UsageClose=2,UsageTheme=3,
UsageBackground=4,UsagePromo=5,UsageLast=6};
RDWaveData();
bool metadataFound() const;
void setMetadataFound(bool state);
unsigned cartNumber() const;
void setCartNumber(unsigned cartnum);
int cutNumber() const;
void setCutNumber(int cutnum);
QString cutName() const;
void setCutName(const QString &str);
CartType cartType() const;
void setCartType(CartType type);
QString title() const;
void setTitle(const QString &str);
QString artist() const;
void setArtist(const QString &str);
QString album() const;
void setAlbum(const QString &str);
QString conductor() const;
void setConductor(const QString &str);
QString label() const;
void setLabel(const QString &str);
int releaseYear() const;
void setReleaseYear(int year);
QString client() const;
void setClient(const QString &str);
QString agency() const;
void setAgency(const QString &str);
QString composer() const;
void setComposer(const QString &str);
QString publisher() const;
void setPublisher(const QString &str);
QString songId() const;
void setSongId(const QString &str);
UsageCode usageCode() const;
void setUsageCode(UsageCode code);
QStringList schedCodes() const;
void setSchedCodes(const QStringList &codes);
QString licensingOrganization() const;
void setLicensingOrganization(const QString &str);
QString copyrightNotice() const;
void setCopyrightNotice(const QString &str);
QString cutId() const;
void setCutId(const QString &str);
QString classification() const;
void setClassification(const QString &str);
QString category() const;
void setCategory(const QString &str);
QString url() const;
void setUrl(const QString &str);
QString tagText() const;
void setTagText(const QString &str);
QString description() const;
void setDescription(const QString &str);
QString originator() const;
void setOriginator(const QString &str);
QString originatorReference() const;
void setOriginatorReference(const QString &str);
QString codingHistory() const;
void setCodingHistory(const QString &str);
QString userDefined() const;
void setUserDefined(const QString &str);
QString isrc() const;
void setIsrc(const QString &str);
QString isci() const;
void setIsci(const QString &str);
QString recordingMbId() const;
void setRecordingMbId(const QString &mbid);
QString releaseMbId() const;
void setReleaseMbId(const QString &mbid);
QString mcn() const;
void setMcn(const QString &str);
QString outCue() const;
void setOutCue(const QString &str);
RDWaveData::EndType endType() const;
void setEndType(RDWaveData::EndType type);
int forcedLength() const;
void setForcedLength(int msecs);
int averageLength() const;
void setAverageLength(int msecs);
int lengthDeviation() const;
void setLengthDeviation(int msecs);
int minimumTalkLength() const;
void setMinimumTalkLength(int msecs);
int maximumTalkLength() const;
void setMaximumTalkLength(int msecs);
int averageSegueLength() const;
void setAverageSegueLength(int msecs);
int averageHookLength() const;
void setAverageHookLength(int msecs);
int cutQuantity() const;
void setCutQuantity(int n);
int lastCutPlayed() const;
void setLastCutPlayed(int cutnum);
QDateTime lastPlayDatetime() const;
void setLastPlayDatetime(const QDateTime &dt);
int length() const;
void setLength(int msecs);
bool enforceLength() const;
void setEnforceLength(bool state);
bool asyncronous() const;
void setAsyncronous(bool state);
QString owner() const;
void setOwner(const QString &str);
QDateTime metadataDatetime() const;
void setMetadataDatetime(const QDateTime &dt);
bool dayOfWeek(int dow) const;
void setDayOfWeek(int dow,bool state);
int weight() const;
void setWeight(int weight);
bool evergreen() const;
void setEvergreen(bool state);
int talkStartPos() const;
void setTalkStartPos(int msec);
int talkEndPos() const;
void setTalkEndPos(int msec);
int segueStartPos() const;
void setSegueStartPos(int msec);
int segueEndPos() const;
void setSegueEndPos(int msec);
int segueGain() const;
void setSegueGain(int lvl);
int startPos() const;
void setStartPos(int msec);
int endPos() const;
void setEndPos(int msec);
int hookStartPos() const;
void setHookStartPos(int msec);
int hookEndPos() const;
void setHookEndPos(int msec);
int fadeUpPos() const;
void setFadeUpPos(int msec);
int fadeDownPos() const;
void setFadeDownPos(int msec);
int beatsPerMinute() const;
void setBeatsPerMinute(int bpm);
QString tmciSongId() const;
void setTmciSongId(const QString &str);
QDate originationDate() const;
void setOriginationDate(const QDate &date);
QTime originationTime() const;
void setOriginationTime(const QTime &time);
QDate startDate() const;
void setStartDate(const QDate &date);
QTime startTime() const;
void setStartTime(const QTime &time);
QDateTime startDateTime() const;
QDate endDate() const;
void setEndDate(const QDate &date);
QTime endTime() const;
void setEndTime(const QTime &time);
QDateTime endDateTime() const;
QTime daypartStartTime() const;
void setDaypartStartTime(const QTime &time);
QTime daypartEndTime() const;
void setDaypartEndTime(const QTime &time);
unsigned playCounter() const;
void setPlayCounter(unsigned count);
RDSettings audioSettings() const;
void setAudioSettings(const RDSettings &settings);
int playGain() const;
void setPlayGain(int lvl);
bool validateMarkers(int msec=-1);
bool validateDateTimes();
QString dump() const;
void clear();
static QString endTypeText(EndType type);
static QString cartTypeText(CartType type);
static QString usageText(UsageCode code);
private:
bool data_metadata_found;
bool data_datetime_set;
unsigned data_cart_number;
CartType data_cart_type;
int data_cut_number;
QString data_cutname;
QString data_title;
QString data_artist;
QString data_album;
QString data_conductor;
QString data_song_id;
QString data_label;
int data_release_year;
QString data_client;
QString data_agency;
QString data_composer;
QString data_publisher;
UsageCode data_usage_code;
QStringList data_sched_codes;
QString data_licensing_organization;
QString data_copyright_notice;
QString data_user_defined;
QString data_cut_id;
QString data_classification;
QString data_category;
QString data_url;
QString data_tag_text;
QString data_description;
QString data_originator;
QString data_originator_reference;
QString data_coding_history;
QString data_isrc;
QString data_isci;
QString data_recording_mbid;
QString data_release_mbid;
QString data_mcn;
QString data_out_cue;
EndType data_end_type;
int data_length;
int data_forced_length;
int data_average_length;
int data_length_deviation;
int data_minimum_talk_length;
int data_maximum_talk_length;
int data_average_segue_length;
int data_average_hook_length;
int data_cut_quantity;
int data_last_cut_played;
QDateTime data_last_play_datetime;
bool data_enforce_length;
bool data_asyncronous;
QString data_owner;
QDateTime data_metadata_datetime;
bool data_evergreen;
bool data_day_of_week[7];
int data_weight;
int data_talk_start_pos;
int data_talk_end_pos;
int data_segue_start_pos;
int data_segue_end_pos;
int data_segue_gain;
int data_start_pos;
int data_end_pos;
int data_hook_start_pos;
int data_hook_end_pos;
int data_fade_up_pos;
int data_fade_down_pos;
int data_beats_per_minute;
QString data_tmci_song_id;
QDate data_origination_date;
QTime data_origination_time;
QDate data_start_date;
QTime data_start_time;
QDate data_end_date;
QTime data_end_time;
QTime data_daypart_start_time;
QTime data_daypart_end_time;
unsigned data_play_counter;
RDSettings data_settings;
int data_play_gain;
};
#endif // RDWAVEDATA_H