From e2374492e84d4df4f7fc8f330f56b990e519ee86 Mon Sep 17 00:00:00 2001 From: Fernando Herrera Date: Wed, 2 Oct 2024 20:32:52 +0200 Subject: [PATCH 1/2] Add MIDI time signatures for "common" and "cut" meterSig --- src/doc.cpp | 9 +++++++-- src/midifunctor.cpp | 10 ++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/doc.cpp b/src/doc.cpp index b123741b1c..1d15051b60 100644 --- a/src/doc.cpp +++ b/src/doc.cpp @@ -500,8 +500,13 @@ void Doc::ExportMIDI(smf::MidiFile *midiFile) if (!meterSig && (scoreDef->HasMeterSigInfo())) { meterSig = vrv_cast(scoreDef->GetMeterSig()); } - if (meterSig && meterSig->HasCount() && meterSig->HasUnit()) { - midiFile->addTimeSignature(midiTrack, 0, meterSig->GetTotalCount(), meterSig->GetUnit()); + if (meterSig) { + if (meterSig->HasSym() && meterSig->GetSym() != METERSIGN_open) { + midiFile->addTimeSignature(midiTrack, 0, meterSig->GetTotalCount(), meterSig->GetTotalCount()); + } + else if (meterSig->HasCount() && meterSig->HasUnit()) { + midiFile->addTimeSignature(midiTrack, 0, meterSig->GetTotalCount(), meterSig->GetUnit()); + } } } diff --git a/src/midifunctor.cpp b/src/midifunctor.cpp index 05f91a550d..9d48f95895 100644 --- a/src/midifunctor.cpp +++ b/src/midifunctor.cpp @@ -775,8 +775,14 @@ FunctorCode GenerateMIDIFunctor::VisitScoreDef(const ScoreDef *scoreDef) // set MIDI time signature if (scoreDef->HasMeterSigInfo()) { const MeterSig *meterSig = vrv_cast(scoreDef->GetMeterSig()); - if (meterSig && meterSig->HasCount() && meterSig->HasUnit()) { - m_midiFile->addTimeSignature(m_midiTrack, currentTick, meterSig->GetTotalCount(), meterSig->GetUnit()); + if (meterSig) { + if (meterSig->HasSym() && meterSig->GetSym() != METERSIGN_open) { + m_midiFile->addTimeSignature( + m_midiTrack, currentTick, meterSig->GetTotalCount(), meterSig->GetTotalCount()); + } + else if (meterSig->HasCount() && meterSig->HasUnit()) { + m_midiFile->addTimeSignature(m_midiTrack, currentTick, meterSig->GetTotalCount(), meterSig->GetUnit()); + } } } From 4eb936ca0c50580a4eaae21c1bb4209fa099fc93 Mon Sep 17 00:00:00 2001 From: Laurent Pugin Date: Thu, 3 Oct 2024 19:42:47 +0200 Subject: [PATCH 2/2] Update src/doc.cpp --- src/doc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/doc.cpp b/src/doc.cpp index 1d15051b60..ba88198d02 100644 --- a/src/doc.cpp +++ b/src/doc.cpp @@ -501,7 +501,7 @@ void Doc::ExportMIDI(smf::MidiFile *midiFile) meterSig = vrv_cast(scoreDef->GetMeterSig()); } if (meterSig) { - if (meterSig->HasSym() && meterSig->GetSym() != METERSIGN_open) { + if (meterSig->HasSym() && (meterSig->GetSym() != METERSIGN_open)) { midiFile->addTimeSignature(midiTrack, 0, meterSig->GetTotalCount(), meterSig->GetTotalCount()); } else if (meterSig->HasCount() && meterSig->HasUnit()) {