使用 Python 脚本在 FL Studio 中开发 MIDI 控制器、钢琴卷帘编辑、Edison 音频编辑、工作流自动化以及使用 PyFLP 解析 FLP 文件。可用于程序化配置、设备定制、MIDI 传输、宏和保存文件操作。涵盖 427+ API 函数,分布在 14 个 MIDI 脚本模块以及钢琴卷帘、Edison 和 PyFLP 环境。
FL Studio Python 脚本是一项面向实际任务的技能,主要用于FL Studio Python API 的完整参考: MIDI 控制脚本( 14 模块, 427+ 函数) 钢琴卷音符操纵, Edison 音频编辑, 和 FLP f。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
FL Studio Python API 完整参考文档:MIDI 控制器脚本(14 个模块,427+ 个函数)、钢琴卷帘窗音符操作、Edison 音频编辑,以及使用 PyFLP 解析 FLP 工程文件。
import general
print(f"API Version: {general.getVersion()}")
将脚本文件放入 SharedPythonUser Scripts 文件夹中。
用途:通过硬件 MIDI 控制器控制 FL Studio,并向设备发送反馈信号。
运行时机:FL Studio 运行期间持续执行。
可用模块:transport、mixer、channels、arrangement、patterns、playlist、device、ui、general、plugins、screen、launchMapPages、utils、callbacks
入口函数:
def OnInit():
"""脚本启动时调用。"""
pass
def OnDeInit():
"""脚本停止时调用。"""
pass
def OnMidiMsg(msg):
"""接收到任意 MIDI 消息时调用。"""
pass
def OnControlChange(msg):
"""接收到 CC(Control Change)消息时调用。"""
pass
def OnNoteOn(msg):
"""接收到 Note-On 消息时调用。"""
pass
def OnRefresh(flags):
"""FL Studio 状态发生变化时调用。"""
pass
用途:在钢琴卷帘窗编辑器中操作音符与标记。
运行时机:用户通过“Scripts”菜单手动触发,仅执行一次。
可用模块:flpianoroll、enveditor
import flpianoroll
score = flpianoroll.score
for note in score.notes:
note.velocity = 0.8 # 将所有音符力度设为 80%
用途:在 Edison 中编辑和处理音频采样。
运行时机:仅在 Edison 上下文中执行一次。
可用模块:enveditor
请根据您的具体控制需求,跳转至对应参考文档。
仅当您需要查阅特定 API 函数签名时,才需阅读这些文件。
| 模块 | 函数数量 | 控制对象 | 参考文档 |
|---|---|---|---|
| transport | 20 | 播放、停止、录音、定位、速度、循环 | api-transport.md |
| mixer | 69 | 轨道音量/声像/静音/独奏、EQ、路由、效果器 | api-mixer.md |
| channels | 48 | 通道机架、步进网格位、步进音序器、音符 | api-channels.md |
| 模块 | 函数数量 | 控制对象 | 参考文档 |
|---|---|---|---|
| arrangement + patterns | 9 + 25 | 标记、时间、Pattern 控制、分组 | api-arrangement-patterns.md |
| playlist | 41 | 播放列表轨道、实时模式、性能模式、区块 | api-playlist.md |
| 模块 | 函数数量 | 控制对象 | 参考文档 |
|---|---|---|---|
| device | 34 | MIDI 输入/输出、SysEx、分发、硬件刷新 | api-device.md |
| 模块 | 函数数量 | 控制对象 | 参考文档 |
|---|---|---|---|
| ui + general | 71 + 24 | 窗口、导航、撤销/重做、版本信息、吸附设置 | api-ui-general.md |
| 模块 | 函数数量 | 控制对象 | 参考文档 |
|---|---|---|---|
| plugins | 13 | 插件参数、预设、名称、颜色 | api-plugins.md |
| 模块 | 函数数量 | 控制对象 | 参考文档 |
|---|---|---|---|
| screen + launchMapPages | 9 + 12 | AKAI Fire 屏幕、Launchpad 页面管理 | api-screen-launchmap.md |
| 模块 | 函数数量 | 控制对象 | 参考文档 |
|---|---|---|---|
| utils + constants | 21 | 颜色转换、数学运算、音符名称、MIDI 表格 | api-utils-constants.md |
| 模块 | 函数数量 | 控制对象 | 参考文档 |
|---|---|---|---|
| callbacks | 26 | 全部回调函数、FlMidiMsg 类、事件流机制 | api-callbacks.md |
提供用于钢琴卷帘窗操作的 Note、Marker、ScriptDialog、score 类,以及 Edison enveditor 实用工具。
详见 piano-roll-edison.md
一个外部库,支持在不运行 FL Studio 的情况下读写 .flp 工程文件。适用于批量处理、工程分析、自动化生成等场景。
详见 pyflp.md
# name=My Controller
# url=https://example.com
import device
import mixer
import transport
def OnInit():
if device.isAssigned():
print(f"Connected: {device.getName()}")
def OnDeInit():
print("Script shut down")
def OnControlChange(msg):
if msg.data1 == 7: # Volume CC
mixer.setTrackVolume(mixer.trackNumber(), msg.data2 / 127.0)
msg.handled = True
def OnNoteOn(msg):
track = msg.data1 % 8
mixer.setActiveTrack(track)
msg.handled = True
def OnRefresh(flags):
pass # 此处更新硬件显示
def OnInit():
if not device.isAssigned():
print("No output device linked!")
return
# 此后可安全调用 device.midiOutMsg() 等函数
def OnControlChange(msg):
if msg.data1 == 7:
mixer.setTrackVolume(0, msg.data2 / 127.0)
msg.handled = True # 防止 FL Studio 对该消息重复处理
def OnRefresh(flags):
if device.isAssigned():
# 更新音量推子 LED 状态
vol = int(mixer.getTrackVolume(0) * 127)
device.midiOutMsg(0xB0, 0, 7, vol)
完整示例(MIDI 学习、音阶强制、LED 反馈、批量量化、SysEx 处理、性能监控、自动化引擎、调试技巧)请参阅:
examples-patterns.md
device.directFeedback() 实现控制器回显device.isAssigned()device.isAssigned() 返回 TrueSharedPythonUser Scripts 文件夹中flpianoroll.score.notes 访问音符列表OnIdle() 中执行复杂计算(该函数约每 20ms 调用一次)device.setHasMeters()device.isDoubleClick(index)device.dispatch(ctrlIndex, message)device.midiOutMsg(0x90, 0, note, velocity) 用于 Note-On 类型 LEDOn* 系列回调函数ui 模块进行有限访问;不支持完整 UI 自动化device.getName() 区分设备,并按端口分别处理相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章