Rikkymodule/関数一覧/midiconverter系

ページ名:Rikkymodule/関数一覧/midiconverter系

Rikkymodule/関数一覧/midiconverter系

Rikkymodule/関数一覧
順序
○○draw
このページでは、Rikkymoduleで追加される関数を解説する。

midiconverter関数、midiconverterEx関数[]

ます、音を出すものではありません

  • midiファイル(smf)をluaでも読みやすい形式に変換するものです
  • 読み込んだmidファイルと同じ場所に同名で拡張子が.datになったファイルを生成します
boolean = rikky_module.midiconverter(string)
  • 第1引数はmidiファイルのフルパスです
  • 戻り値は変換に成功するとtrue、失敗するとfalse返ってきます
    • また変換後のファイルがある場合も成功としてtrueを返します
boolean = rikky_module.midiconverterEx(table, string)
  • 第1引数にはmidiファイルを解析して、そのデータを用いたオブジェクトを生成するためのテーブルを渡します
  • 第2引数はmidiファイルのフルパスです
  • 戻り値は変換に成功するとtrue、失敗するとfalse返ってきます
    • また変換後のファイルがある場合も成功としてtrueを返します
  • オブジェクトを生成したテーブルにはいくつかのメソッドが使えるようになっています
    • また変換した.datファイルの中身も同じテーブル内に収められています
local midi = {}local success = rikky_module.midiconverterEx(midi, "C:\\rikky.mid")if not success then returnendlocal oldtime = midi:SetOffsetTime(10)
  • 上のように使います

メソッドは現在以下のものがあります

  • :関数名はmidiconverterExで引数としたテーブル変数の後に関数名をつけることを意味を表しています
    • 上記の例を参考にしてください
  • number = :SetOffsetTime(number)
    • 再生時間を移動させることができます、初期状態は0で、秒数を数値で指定します、戻り値は前のoffsettimeです
  • number = :SetUprange(number)
    • Now系のメソッドで取得する上限を決めます、初期状態は0です、戻り値は前のuprangeです
  • number = :SetDownrange(number)
    • Now系のメソッドで取得する下限を決めます、初期状態は0です、戻り値は前のdownrangeです
  • number = :SetTyperange(number)
    • Now系のメソッドで取得する際にUprangeとDownrangeの解釈を変更します、0だと範囲なし、1だと秒数、2だと経過時間、3だと小節数です、戻り値は前のtyperangeです
midi:SetDownrange(1)midi:SetUprange(2)midi:SetTyperange(1)
  • 現在の時間の1秒前から2秒後までのデータを取得できるようになります
midi:SetDownrange(480)midi:SetUprange(1920)midi:SetTyperange(2)
  • 現在の経過時間から480引いた数から現在の経過時間に1920を加えた数までのデータを取得できるようになります(基本的に480が1拍を表します)
  • number = :Step2Time(number)
    • 経過時間を秒数に変換します、引数が経過時間で戻り値が秒数です
  • number = :Time2Step(number)
    • 秒数を経過時間に変換します、引数が秒数で戻り値が経過時間です
  • number, number, number = :Step2Bar(number)
    • 経過時間を小節数などに変換します、引数は経過時間で戻り値が小節数、拍数、その拍の経過パーセント(0から1未満)
  • number = :Bar2Step(number, number, number)
    • 小節数などを経過時間に変換します、引数は小節数、拍数、その拍の経過パーセント(0から1未満)で戻り値が経過時間です
  • string = :NoteNumber2KeyName(number)
    • ノート番号を音階の文字列に変換します、引数はノート番号(60など)で戻り値が音階を表す文字列(C4など)です
  • number = :KeyName2NoteNumber(string)
    • 音階の文字列をノート番号に変換します、引数は音階を表す文字列(C4など)で戻り値がノート番号(60など)です
  • number = :GetMaxNoteNumber()
    • 読み込んだmidiの一番高い音のノート番号を返します
  • string = :GetMaxNoteName()
    • 読み込んだmidiの一番高い音の音名を返します
  • number = :GetMinNoteNumber()
    • 読み込んだmidiの一番低い音のノート番号を返します
  • string = :GetMinNoteName()
    • 読み込んだmidiの一番低い音の音名を返します
  • number = :GetTrackNum()
    • 読み込んだmidiのトラック数を返します
  • number = :GetDeltaTime()
    • 読み込んだmidiの単位時間(4分音符1つ分の経過時間)を返します
  • number = :GetMidiLength()
    • 読み込んだmidiの曲の全体の経過時間を返します
  • Now系のメソッドはSetOffsetTimeで設定した時間プラスオブジェクトの経過時間(obj.time)をもとに現フレームにおける各データを取得します
    • SetTyperangeが0(初期状態)かそれ以外かで戻り値の型や戻り値のテーブルの構造が変わるものもあります
  • string or table = :GetNowScaleKey()
    • type : 0
      • 現在のスケールのキー(CやCmなど)の文字列を返します
    • type : 1,2,3
      • 現在の範囲内のスケールのキー(CやCmなど)が入ったテーブルを返します
      • テーブルには単数または複数のテーブルが入っています
        • テーブルにはstepとkeyの要素が入っていて、table[1].stepのように使います
        • keyはスケールキーの文字列、stepはスケールキーになった経過時間の数値です
        • 複数の場合は要素が若い順に経過時間も小さくなっています
        • 例えば現在の経過時間が1920でtable[1].step=0、table[1].key="C"、table[2].step=3840、table[2].key="A"ならば現在のスケールキーはCメジャーとなります
  • string or table = :GetNowScaleName()
    • type : 0
      • 現在のスケールの調号(ハ長調やハ短調など)の文字列を返します
    • type : 1,2,3
      • 現在の範囲内のスケールの調号(ハ長調やハ短調など)が入ったテーブルを返します
        • テーブルには単数または複数のテーブルが入っています
        • テーブル内テーブルにはstepとnameの要素があって、table[1].stepのように使います
        • nameは調号の文字列、stepはその調号になった経過時間の数値です
        • 複数の場合は要素が若い順に経過時間も小さくなっています
        • 例えば現在の経過時間が1920でtable[1].step=0、table[1].name="ハ長調"、table[2].step=3840、table[2].name="イ長調"ならば現在の調号はハ長調となります
  • table = :GetNowBPM()
    • type : 0
      • 現在の現在のbpm情報が入ったテーブルを返します
        • テーブルにはtempo、bpmの2つの要素があります
        • tempoは単位時間(4分音符1つ分)経過する時間(マイクロ秒)の数値、bpmは1分当たりの4分音符の数を表した文字列です
    • type : 1,2,3
      • 範囲内のbpm情報が入ったテーブルを返します
        • テーブルには単数または複数のテーブルが入っています
        • テーブル内テーブルにはtempo、bpm、stepの3つの要素があって、table[2].tempoのように使います
        • tempoは単位時間(4分音符1つ分)経過する時間(マイクロ秒)の数値、bpmは1分当たりの4分音符の数を表した文字列、stepはこのbpmが開始する経過時間の数値です
        • 例えば現在の経過時間が1920で[1].step=0、table[1].bpm="120.00"、table[2].step=3840、table[2].name="159.00"ならば現在のbpmは120となります
  • number or table = :GetNowStepNum()
    • type : 0
      • 現在の経過時間の数値を返します
    • type : 1,2,3
      • 現在の範囲内の経過時間が入ったテーブルを返します
        • テーブルにはstep、low_step、high_stepの3つの要素があります
        • stepは現在の経過時間の数値、low_stepが範囲の下限の経過時間の数値、high_stepが範囲の上限の経過時間の数値です
  • table = :GetNowNote()
    • typeに関わらず同一テーブルを返します
      • テーブルにはトラック数の数だけテーブルを持ちます
      • 各テーブルには範囲または現在に該当するノートが0または単数または複数だけ入っています
      • 各ノートはテーブル型で1番目の要素がノート番号(C4などを表した数値)、2番目が鳴り始めの経過時間の数値、3番目が鳴り終わりの経過時間の数値、4番目がベロシティ(音の強さ)で0から1の数値です
  • table = :GetNowExpression()
    • typeに関わらず同一テーブルを返します
      • テーブルにはトラック数の数だけテーブルを持ちます
      • 各テーブルには範囲または現在に該当するエクスプレッションが0または単数または複数だけ入っています
      • 各エクスプレッションはテーブル型で1番目のそのエクスプレッションになる経過時間の数値、2番目がエクスプレッションの数値(0から127)です

.datファイルの読み方[]

midiでは各イベントは独自の経過時間を用いています

  • まず単位時間という単位(四分音符1つ分がどのぐらいか)が決まっています
    • 例えば単位時間が480で経過時間が1920ならば4拍分経過したことになります
    • 実際どのぐらいの時間(秒)が経過したかはbpmなど使って計算します
bpm
  • テーブルの1番目の要素は経過時間です
  • 2番目は四分音符1つ分のマイクロ秒です(つまり、100000で割ると秒になります)
rhythm
  • テーブルの1番目の要素は経過時間です
  • 2番目は拍子の分子です
  • 3番目は拍子の分母です
scale
  • テーブルの1番目の要素は経過時間です
  • 2番目はシャープまたはフラットの数です(プラスならシャープ、マイナスならフラットの数)
  • 3番目は長調か短調かのフラグです(0が長調、1が短調です)
event
  • eventテーブルには複数のnoteとexpressionが収められています
  • noteの各要素は
    • 1番目が鳴らす音の番号です(60ならC4です)
    • 2番目が鳴り始める経過時間
    • 3番目が鳴り終わる経過時間
    • 4番目がべロシティです
  • expressionの各要素は
    • 1番目が変化開始の経過時間です
    • 2番目が強さです(最大値が127で最小値が0です)
info
  • テーブルの1番目の要素は音の番号の最大値です
  • 2番目は音の番号の最小値です
  • 3番目はeventテーブルの要素数です(音が鳴るトラック数)
  • 4番目は単位時間です
  • 5番目は全体の経過時間です


特に記載のない限り、コミュニティのコンテンツはCC BY-SAライセンスの下で利用可能です。

シェアボタン: このページをSNSに投稿するのに便利です。


最近更新されたページ

左メニュー

左メニューサンプル左メニューはヘッダーメニューの【編集】>【左メニューを編集する】をクリックすると編集できます。ご自由に編集してください。掲示板雑談・質問・相談掲示板更新履歴最近のコメントカウン...

電球ボトル

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...

電球

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...

闇の中心

闇の中心EnglishCenter of Darkness 属性 DemonUnknown目次1 属性解説2 闇の中心の関係者2.1 幽閉されたナイトメア種2.2 幽閉された荒らし3 関連項目属性解説...

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...

野生の毒沼

野生の毒沼EnglishVenomous wild swamp 属性 VenomFeral地理情報地名の由来属性からの連想属性解説[]Venom - A deadly essence that can...

部分フィルタ

部分フィルタ上フィルタオブジェクト部分フィルタとは、部分フィルタに追加されたフィルタ効果を画面の一部分のみに反映させるフィルタオブジェクトの1つである。※フィルタによっては正しく動作しません。目次1 ...

輪郭系エフェクト

輪郭系エフェクト上フィルタオブジェクトこの記事では、「オブジェクトの輪郭」を変更する系のフィルタオブジェクトについて説明する。目次1 凸エッジ1.1 ◇幅1.2 ◇高さ1.3 ◇角度2 エッジ抽出2....

設定ダイアログ/トラックバー

設定ダイアログ/トラックバー上設定ダイアログ目次1 移動の種類2 基本の移動方法2.1 直線移動2.2 曲線移動2.3 加減速移動2.4 瞬間移動2.5 中間点無視2.6 移動量指定2.7 ランダム移...

設定ダイアログ

設定ダイアログ上拡張編集オブジェクトの追加やオブジェクト自体をダブルクリックすることで設定ダイアログが表示されます。表示中にダブルクリックで閉じることも出来ます。目次1 操作方法2 右クリックメニュー...

色関係エフェクト

色関係エフェクト上フィルタオブジェクトこの記事では、色関係のフィルタオブジェクトについて説明する。目次1 色調補正1.1 ◇明るさ1.2 ◇コントラスト1.3 ◇色相1.4 ◇輝度1.5 ◇彩度1.6...

自演コメント風スクリプト

Aviutl 自演コメント風スクリプト anm 種類使用種別アニメーション効果動作種別文字列絵画外部情報作者gometh公開日2017/12/2自演コメントとは、gometh氏によるanm拡張子のAv...

直方体展開

Aviutl 直方体展開 anm 種類使用種別アニメーション効果動作種別3D絵画外部情報作者ティム公開日2011/5/27直方体展開とは、ティム氏によるanm拡張子のAviutlスクリプトの1つである...

盗聴器

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...

液状荒野

液状荒野EnglishLiquid wilderness 属性 SiltPlague地理情報地名の由来属性からの連想属性解説[]Silt - Weaker version of Stone in so...

歪み系エフェクト

歪み系エフェクト上フィルタオブジェクトこの記事では、歪み関係のフィルタオブジェクトについて説明する。目次1 ミラー1.1 ◇透明度1.2 ◇減衰1.3 ◇境目調整1.4 ◇ミラーの方向1.5 ◇中心の...

極座標変換+ぼかしミラー

Aviutl 極座標変換+ぼかしミラー anm 種類使用種別アニメーション効果動作種別基本機能の拡張、2D絵画、3D絵画外部情報作者ティム公開日2012/3/4極座標変換+ぼかしミラーとは、ティム氏に...

本、辞書

この記事は種族検索のためのページです。Tardis"元人間の物人の遺伝子は物人の世界から来た同族の遺伝子と全く同じだったの。" - Tardis下記は種族が同じキャラクターのページへのリンク一覧です。...