kuma4649 / mml2vgm

GNU General Public License v3.0
105 stars 10 forks source link

なぜか演奏が最後までなされずに中断する。 #107

Closed to884 closed 3 years ago

to884 commented 3 years ago

以下のような MML を実行すると、演奏が最後まで演奏されず中断されます。 発生した経緯は、96行目を99行目にあるように休符に置き換えた際に発生しました。 MDPlayer で muc を再生した場合も、も同様の現象が発生しました。

TAG412 のビルドで確認しました。

こちらでは何が原因かわかりかねますが、何かしらの不具合(があれば)の改善の助けになれば幸いです。 もしかしたら、MML がおかしいという可能性もありますが…

#mucom88 1.7
#title Castlevania 3 - Beginng(Block 1)
#composer Jun Funahasi, Yukie Morimot and Hidenori Maezawa
#auther TH-884
#voice voice.dat
#pcm mucompcm.bin
#date 2021/04/24
#time 120
#comment (c)KONAMI
#driver mucomDotNet

; --------------------------------------------------------------------
; FM Voice Definitions
; --------------------------------------------------------------------
  @2
   7,  5
  31,  0,  0, 15,  0, 22,  0,  2,  0
  31, 20,  6, 15,  0,  0,  0,  2,  0
  31, 20,  5, 15,  0,  0,  0,  4,  0
  31, 20,  8, 15,  0,  0,  0,  4,  0

  @3
   7,  5
  31,  0,  0,  0,  0, 26,  0,  1,  0
  31, 14,  3, 15,  0,  0,  2,  2,  0
  31, 19,  4, 15,  0,  0,  0,  2,  0
  31, 27, 10, 15,  0,  0,  0,  2,  0

  @4
   7,  5
  31,  0,  0,  0,  0, 23,  0,  1,  0
  31, 25,  6, 15,  0,  0,  0,  1,  0
  31, 25,  6, 15,  0,  0,  0,  1,  0
  31, 18,  8, 15,  0,  0,  0,  1,  0

  @5
   7,  4
  31,  0,  0,  2,  0, 25,  0,  1,  3
  31,  2,  0,  4,  3,  0,  1,  2,  0
  31,  0,  0,  2,  0,  0,  0,  2,  7
  31,  2,  0,  4,  3,  0,  0,  3,  0

  @6
  7   0
  31, 31, 10,  5,  5,  8,  0,  2,  4
  31, 31,  8,  5,  4, 18,  0,  1,  5
  24, 31,  0,  5,  2, 18,  0,  1,  6
  25, 15,  0,  6,  2,  0,  0,  2,  4

; --------------------------------------------------------------------
; Channel Defenitions
; --------------------------------------------------------------------
A   C96  t189 K0 l16 @2   o2 V0 v8  p3 D0
B   C96       K0 l16 @3   o6 V0 v7  p2 D0
C   C96       K0 l16 @3   o6 V0 v5  p1 D-4
H   C96       K0 l16 @4   o5 V0 v7  p3 D0
I   C96       K0 l16 @4   o5 V0 v7  p3 D0
J   C96       K0 l16 @4   o2 V0 v8  p3 D0 
G   C96          l16 @1      V0 v63,20,0,0,0,0,0 p49
K   C96       K0 l16 @1   o1 V0 v64 p3
D   C96       K0 l16 @1   o5 V0 v11    D0
E   C96       K0 l16 @1   o4 V0 v11    D0
F   C96       K0 l16 @1   o1 V0 v11    D0

# *1{ M16,1,16,3 MF1 }

# *10{ @1 (50 }
# *11{ )50 }
# *12{ c(16c)16c(16c)16 }
# *13{ r(16c)16c(16c)16 }
# *14{ @8 )20 f+ (20 }
# *15{ *10 >b(8b)8b(8b)8< *11 }
# *16{ *14 *10 >(8b)8b(8b)8< *11 }
# *17{ r *14 *10 >b(8b)8< *11 }
# *18{ *14 *10 (8>b<)8 *11 *14 *14 }
# *19{ D-45+ }
# *20{ D-140+ }
# *21{ E255,255,250,140,0,255  P1 M18,1,-136,24 MF1 }

; --------------------------------------------------------------------
K           @8 ra32a32aadd>gg<
K           [ *15 *16 *17 *16 [ *17 / *16 ]2 *18 ]2 r4 *10 >b%4< *11 @8 )20 f+%4f+%4 (20 [ *14 ]6 
G           r2
G           [[ *12 ]2 *13 *12 | *13 *12 *13 *12 ]2 r4*12 *12
A           r2
A           q1 [ ddddd>d<dd8>d<dd >d<ddd8>d<dd >d<ddd8>d<dd / e>e<a>a< ]2
A           e&(3e)3 a8& [a&(3a&)3]5 a&(3a)3
B           r2
B     *1    r4 [ d8.c4& ([*19 c%1&]5 *19 c%1 D0) c8.<b4& ([*19 b%1&]5 *19 b%1 D0) b8.b-8  / b-agb-a>d- e8& ([*19 e%1&]6 D0 (e& [*19 e%1&]5 *19 e%1  D0)2 ]2
B p2  @6 o6 v11      <a>d-e>ged-<aged-<aged-b-agfe
C           r2
C     *1    r4 [ d4^16c8& ([*19 c%1&]6 D0) c& ([*19 c%1&]5 *19 c%1 D0) c8.<b8& ([*19 b%1&]6 D0) b& ([*19 b%1&]5 *19 b%1 D0) b8. b-& ([*19 b-%1&]6 D0)  / b-agb-a>d-e8& ([*19 e%1&]5 *19 e%1 D0) ]2
C p1  @6  o6 v10     <a>d-e>ged-<aged-<aged-b-ag
D           r2
D           r4 *21 [ d8.c4^16 c8.<b4^16 b8.b-8  / b-agb-a>d- MW12 e8.& MF0 (e& [*20 e%1&]5  *20 e%1 D0)2 MF1 MW24 ]2
;  ###      下の行を休符と入れ替えると正常に演奏される。
;D           (3 @1 a>d-e>ged-<aged-<aged-b-agfe
;  ###      ↓の行があるとなぜか途中で演奏が止まる…
D           MF0 r4^8. r2.
E           r2
E           r4 *21 [ a8.g4^16 g8.g4^16  g8.g8 / gf+ggga> MW12 c+8.& MF0 (c+& [*20 c+%1&]5 *20 c+%1< D0)2 MF1 MW24 ]2
E           ga>c+e8& ([*19 e%1&]6 D0 (e& [*19 e%1&]5 *19 e%1 D0)2 <g8c+8<e8a+8g8e
H           r2
H     *1    r4 [ a8.g4& ([*19 g%1&]5 *19 g%1 D0) g8.g4& ([*19 g%1&]5 *19 g%1 D0) g8.g& ([*19 g%1&]5 *19 g%1 D0) / gf+ggga>c+8& ([*19 c+%1&]6 D0 (c+& [*19 c+%1&]5 *19 c+%1< D0)2 ]2
H           ga>c+e8& ([*19 e%1&]6 D0 (e& [*19 e%1&]5 *19 e%1 D0)2 <g8c+8<e8a+8g8e
I           r2
I     *1    r4 [ f8.e4& ([*19 e%1&]5 *19 e%1 D0) e8.d4& ([*19 d%1&]5 *19 d%1 D0) d8.d& ([*19 d%1&]5 *19 d%1 D0) / dd-dddgg8& ([*19 g%1&]6 D0 (g& [*19 g%1&]5  *19 g%1 D0)2 ]2
I           dgg>d-& [*19 d-%1&]6 D0 d-& [*19 d-%1&]5  *19 d-%1  D0 <a8e8<g8d8a8f8>
kuma4649 commented 3 years ago

すみません、調べてみます

kuma4649 commented 3 years ago

r4^8. の8.のところがダメ見たいです。 たしか、符点は^コマンドで繋げられなかったような気がするのですが mucomDotNETのみの現象でしょうか

to884 commented 3 years ago

MUCOM88だと、r4.^16 など、末尾以外に付点があるものは不正だった記憶があるんですが、このサンプルだと r4.^16 に変更しても最後まで演奏されますね。 mucomDotNet については r4^8^16 に変更しても途中で演奏が止まりますね… なぜだろう?

kuma4649 commented 3 years ago

mucomは休符に^コマンドを使用すると不正なmubを作成することがわかったので、 mucomDotNETではエラーを出力するよう修正しました。

kuma4649 commented 3 years ago

こちら、いかがでしょうか

to884 commented 3 years ago

返信が遅くなってすみません。問題は解消されました。 ありがとうございます。

kuma4649 commented 3 years ago

返信ありがとうございます! また何かございましたらご連絡くださいませ。