ルモーリン
ホーム 更新 Perl Sample サービス 雑談 鉄ゲタ Linux リンク 連絡先

Synthesizer V Studio ProのSILを削除するスクリプトを配布

2020-08-18

MIDIファイルをSynthesizer V Studio Proにインポートすることがあります。 そうした時に発音と発音の間にSILマークが表示されて、 発音がぶつ切りになってしまいます。 解消するにはSILマークをマウスでクリックすると消えますけれど、ほぼ全ての音符(歌い出しとか間奏後以外)に付いてしまいます。 操作自体はマウスクリックで済みますけれど、何せ発音数が多いので手間がかかります。

function getClientInfo()
  return {
    name = "SILを削除(Lua)",
    category = "インポート支援",
    author = "lemorin_jp",
    versionNumber = 1,
    minEditorVersion = 0
  }
end

function main()
  local notegroup = SV:getMainEditor():getCurrentTrack():getGroupReference(1):getTarget()
  local numNote = notegroup:getNumNotes()
  local count = 0
  if 1 < numNote then
    local i
    for i = 1, numNote - 1 do
      local note_a = notegroup:getNote(i)
      local note_b = notegroup:getNote(i + 1)
      local end_blick = notegroup:getNote(i):getEnd()
      local start_blick = notegroup:getNote(i + 1):getOnset()
      if note_a:getEnd() < note_b:getOnset() and note_b:getOnset() - note_a:getEnd() < 37000000 then
        note_a:setDuration(note_b:getOnset() - note_a:getOnset())
        count = count + 1
      end
    end
  end

  SV:showMessageBox("SILを削除(Lua)", "全部で" .. tostring(count) .. "個のSILを削除しました。")
end

MIDIファイルをインポートすると、多分SILマークが多量に表示されます。 そのトラックを選択してメニュー「スクリプト|インポート支援|SILを削除(Lua)」を選択すると削除後にメッセージが表示されます。 トラック内のSILが削除されています。