「サクラ」質問掲示板

サクラの質問掲示板です。
[一覧へ] > (@95) [高] [解決]
@95■ (#314) 関数定義使用時のメモリオーバー? - ななこっち★ (2014-12-12 04:32) /高 未処理
【症状】とりあえず、再生されなくなる
【再現方法】下記ソース
【要望】せめて、エラーメッセージを・・・
【バージョン】2.376
【その他】

MIDIポートも開けなくなる
終了時、iniファイルも書き込めなくなる


[1 の状態では再生できるが、[10 ぐらいにすると、再生できなくなり
[1 に戻すと、上記エラーが発生する

System.TimeBase=768
Tempo 50

Int I=1
Function BGAP(Str MML) {
  Str BUF=""
  Str ML=""
  Str M
  Str R

  BUF=""
  For(Int i=1; MID(MML, i, 1)!=""; i++) {
    M=MID(MML, i, 1)
    IF(M="a"||M="b"||M="c"||M="d"||M="e"||M="f"||M="g") {
      IF(BUF!="") {
        BUF=BUF+R+ML+CHR(125)
        R=R+"r"+Random(120,150)
      }
      BUF=BUF+"Sub" + CHR(123)
      ML=M
    } ELSE {
      ML=ML+M
    }
  }
  BUF=BUF+ML+R+CHR(125)+"r16"
  I=I+1
  Print(I)
  Print(BUF)
  BUF
}

TR(1)
  @1
  v127
  o5
  [1
    [999 BGAP(a>c#e<) ]
  ]

(#315) 自己解決? - ななこっち★ (2014-12-12 08:33) /高 解決
デバッグウィンドウがメモリリークしていたのやら・・・


// DTMらしくないように和音を演奏させる

Function BGAP(Str MML) {
  Str BUF=""
    Str FIRST=""
  Str ML=""
  Str M
  Str R
    Str FM
    Int C=0

  BUF=""
    R=""
  For(Int i=1; MID(MML, i, 1)!=""; i++) {
    M=MID(MML, i, 1)
//        Print("Count "+ C + " Str="+M)
    IF(M="a"||M="b"||M="c"||M="d"||M="e"||M="f"||M="g") {
    C++
      IF(C<3) {
      FIRST=ML
      ML=FM+M
      FM=""
    } ELSE {
        R=R+"r"+Random(192,384)
          BUF=BUF+"Sub" + CHR(123)+R+ML+CHR(125)
        ML=M
    }
    } ELSE {
    IF(C>0) {
        ML=ML+M
    } ELSE {
      FM=FM+M
    }
    }
  }
  BUF=BUF+"Sub"+CHR(123)+R+ML+CHR(125)+FIRST
//    Print(BUF)
  BUF
}

(#314)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を平仮名で記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能