From e7d0f15eed2e459cece3590ccb2b24895909d720 Mon Sep 17 00:00:00 2001 From: Cerys Date: Sun, 26 Jan 2025 21:33:11 +0000 Subject: [PATCH] db can now handle variants of tunes --- App/Dataclasses/ABCWrapper.php | 50 --------------------- App/Dataclasses/DatabaseFolkTuneDetails.php | 21 +++++++++ App/Dataclasses/TuneVariant.php | 41 +++++++++++++++++ App/Dataclasses/TuneVariantPart.php | 17 +++++++ 4 files changed, 79 insertions(+), 50 deletions(-) delete mode 100644 App/Dataclasses/ABCWrapper.php create mode 100644 App/Dataclasses/DatabaseFolkTuneDetails.php create mode 100644 App/Dataclasses/TuneVariant.php create mode 100644 App/Dataclasses/TuneVariantPart.php diff --git a/App/Dataclasses/ABCWrapper.php b/App/Dataclasses/ABCWrapper.php deleted file mode 100644 index 5b600aa..0000000 --- a/App/Dataclasses/ABCWrapper.php +++ /dev/null @@ -1,50 +0,0 @@ -ID = $assocArray['ID']; - $this->Title = $assocArray['Title']; - $this->Source = $assocArray['Copyright']; - $this->TimeSignature = $assocArray['TimeSignature']; - $this->KeySignature = $assocArray['KeySignature']; - $this->Parts = json_decode($assocArray['Parts'], true); - } - - - public function Build(): string - { - $builder = "X: {$this->ID} -T: {$this->Title} -S: {$this->Source} -M: {$this->TimeSignature} -K: {$this->KeySignature} -L: {$this->DefaultNoteLength}"; - $counter = 0; - $letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; - foreach($this->Parts as $part) - { - $builder .= " -P: {$letters[$counter]} Part -{$part}"; - $counter = $counter + 1; - } - return $builder; - } -} \ No newline at end of file diff --git a/App/Dataclasses/DatabaseFolkTuneDetails.php b/App/Dataclasses/DatabaseFolkTuneDetails.php new file mode 100644 index 0000000..36a744b --- /dev/null +++ b/App/Dataclasses/DatabaseFolkTuneDetails.php @@ -0,0 +1,21 @@ +ID = $assocArray['ID']; + $this->Title = $assocArray['Title']; + $this->Copyright = $assocArray['Copyright']; + } +} \ No newline at end of file diff --git a/App/Dataclasses/TuneVariant.php b/App/Dataclasses/TuneVariant.php new file mode 100644 index 0000000..21d7b3d --- /dev/null +++ b/App/Dataclasses/TuneVariant.php @@ -0,0 +1,41 @@ +ID = $assocArray['ID']; + $this->Tune = $tuneDetails; + + $temp = json_decode($assocArray['Parts'], associative: true, flags: JSON_THROW_ON_ERROR); + foreach($temp as $part) + $this->Parts[] = new TuneVariantPart($part); + } + + + public function Build(): string + { + $builder = "X: {$this->Tune->ID}.{$this->ID} +T: {$this->Tune->Title} +S: {$this->Tune->Copyright} +M: {$this->Parts[0]->TimeSignature} +K: {$this->Parts[0]->KeySignature} +L: 1/8"; + $counter = 0; + $letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; + foreach($this->Parts as $part) + { + $builder .= " +P: {$letters[$counter]} Part +{$part->ABCNotation}"; + $counter = $counter + 1; + } + return $builder; + } +} diff --git a/App/Dataclasses/TuneVariantPart.php b/App/Dataclasses/TuneVariantPart.php new file mode 100644 index 0000000..de196b1 --- /dev/null +++ b/App/Dataclasses/TuneVariantPart.php @@ -0,0 +1,17 @@ +TimeSignature = $assocArray['TimeSignature']; + $this->KeySignature = $assocArray['KeySignature']; + $this->ABCNotation = $assocArray['ABCNotation']; + } +}