MIDI制御スクリプト逆引き



Transport

再生と停止を交互に切り替える

import transport # FLのTransport(Play, Stop, Pause & Record)を操作する.
 
def toggle_between_play_and_pause(event):
    print("play/stop") # 再生/停止する.
    if transport.isPlaying(): # 再生中
        transport.stop() # 停止.
    else: # 停止している.
        transport.start() # 再生.
    event.handled = True # FLに処理させる.
 

Pattern(ステップ)モード・Loopモード切り替え

import transport # FLのTransport(Play, Stop, Pause & Record)を操作する.
 
def change_loopmode(event):
    # ループモード切り替え.
    transport.setLoopMode()
    event.handled = True # FLに処理させる
 

録音モードの切替

import transport # FLのTransport(Play, Stop, Pause & Record)を操作する.
 
def toggle_record(event):
    # 録音状態の切り替え
    print("record") # 録音切り替え.
    transport.record()
    event.handled = True # FLに処理させる.
 

再生位置をノブの位置に移動する

import transport # FLのTransport(Play, Stop, Pause & Record)を操作する.
import patterns # FLのパターン操作.
 
# 定義が見つからないのでここで定義してみる...
SONGLENGTH_MS = 0 # SONGモードの長さをMSで取得.
 
VAL_MIN = 0 # 値の最小.
VAL_MAX = 127 # 値は0〜127まで.
 
def move_song_pos(event):
    # ノブの位置で再生位置を移動してみる.
    if transport.getLoopMode() == 0:
      # パターンモード.
      idx = patterns.patternNumber() # 現在選択しているパターン.
      total = patterns.getPatternLength(idx) # パターンの長さ.
      pos = int(total * event.data2 / VAL_MAX)
      print("pos:", pos , " total:", total)
      transport.setSongPos(1.0 * pos / total)
    else:
      # ソングモード.
      total = transport.getSongLength(SONGLENGTH_MS) # 曲の長さ.
      pos = total * event.data2 / VAL_MAX
      print("pos:", pos , " total:", total)
      transport.setSongPos(pos, SONGLENGTH_MS)
    event.handled = True # FLに処理させる.
 

Plugins

プリセットの切り替え

import channels # FLのチャンネルラック操作.
import patterns # FLのパターン操作.
import plugins # FLのプラグイン操作.
 
# プリセット変更(1つ前).
def prev_preset():
    # 選択しているチャンネル番号を取得する.
    channel_idx = channels.channelNumber()
 
    print("prevPreset")
    plugins.prevPreset(channel_idx)
    event.handled = True # FLに処理させる.
 
# プリセット変更(1つ先).
def next_preset():
    # 選択しているチャンネル番号を取得する.
    channel_idx = channels.channelNumber()
 
    print("nextPreset")
    plugins.nextPreset(channel_idx)
    event.handled = True # FLに処理させる.
 

参考

  • FL Studio API Documentation: 非公式だけれど機能ごとにページが分かれていて調べやすく、公式リファレンスにない色々な注意事項が書かれていてとても参考になります
最終更新:2024年01月07日 11:15