From d0877b2a749b8906746ed2c021db9bcee1a8704a Mon Sep 17 00:00:00 2001 From: starg Date: Wed, 24 Aug 2016 00:17:26 +0900 Subject: [PATCH] =?utf8?q?=E9=95=B7=E3=81=95=E6=8C=87=E5=AE=9A=E3=81=AE?= =?utf8?q?=E3=81=AA=E3=81=84=E9=9F=B3=E7=AC=A6=E3=81=AF=E5=90=8C=E3=81=98?= =?utf8?q?=E3=82=B9=E3=83=86=E3=83=BC=E3=83=88=E3=83=A1=E3=83=B3=E3=83=88?= =?utf8?q?=E5=86=85=E3=81=AE=E4=BB=A5=E5=89=8D=E3=81=AE=E6=8C=87=E5=AE=9A?= =?utf8?q?=E3=82=92=E5=BC=95=E3=81=8D=E7=B6=99=E3=81=90=E3=82=88=E3=81=86?= =?utf8?q?=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/ast2ir/phrase2ir.cpp | 6 +++++- src/ast2ir/phrase2ir.hpp | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ast2ir/phrase2ir.cpp b/src/ast2ir/phrase2ir.cpp index 238da83..312e598 100644 --- a/src/ast2ir/phrase2ir.cpp +++ b/src/ast2ir/phrase2ir.cpp @@ -95,6 +95,8 @@ bool Phrase2IRCompiler::Compile(const AST::Phrase& ast, IR::BlockReference index std::vector Phrase2IRCompiler::operator()(const AST::NoteSequenceStatement& ast) { + m_DefaultDuration = TickPerQuarter; + if (ast.Attributes.empty()) { return (*this)(*ast.NoteSeq); @@ -166,6 +168,8 @@ std::vector Phrase2IRCompiler::operator()(const AST::NoteA std::vector Phrase2IRCompiler::operator()(const AST::NoteAndDuration& ast) { int duration = CalculateDuration(ast); + m_DefaultDuration = duration; + boost::variant varDuration = duration; auto newEvent = boost::apply_visitor(*this, ast.Note, varDuration); @@ -258,7 +262,7 @@ int Phrase2IRCompiler::CalculateDuration(const AST::NoteAndDuration& ast) } else { - return TickPerQuarter; + return m_DefaultDuration; } } diff --git a/src/ast2ir/phrase2ir.hpp b/src/ast2ir/phrase2ir.hpp index 97ed491..06c44a8 100644 --- a/src/ast2ir/phrase2ir.hpp +++ b/src/ast2ir/phrase2ir.hpp @@ -52,6 +52,8 @@ private: IR::Module& m_IR; std::deque> m_AttributeStack; int m_RelativeTime = 0; + + int m_DefaultDuration; }; } // namespace AST2IR -- 2.11.0