This is my GitHub profile, which is where I host many of my programming projects.
-
If you want to learn more about me, here's my website!
-
If you want a more organised way to view my work, check out my portfolio.
Stub code, documentation, and basic emulation for the FL Studio Python API
Home Page: https://miguelguthridge.github.io/FL-Studio-API-Stubs/
License: Other
This is my GitHub profile, which is where I host many of my programming projects.
If you want to learn more about me, here's my website!
If you want a more organised way to view my work, check out my portfolio.
src/transport/__position.py:88
Currently the plugins stubs don't support global indexes, which were added in FL 21.0.3. Test, document, and code this.
Hello, I noticed on the API Stubs that most Live modules have "Help Wanted" on them, and I wanted to help clarify. "Live" in FL refers to Performance Mode
getDisplayZone() gets the display zone, which is this red box that shows up in performance mode over a specific area of blocks
liveDisplayZone() sets the area for a display zone in live mode, int left starts 0, int top starts at 1 referring to Track 1, int right refers to the amount of bars right, and int bottom refers to the bottom Track number.
getLiveLoopMode() at the int Track index gets the selection in the "Motion" tab when right clicking a track and looking at "Performance Settings"
getLiveTriggerMode() at the int Track index gets the selection in the "Press" tab when right clicking a track and looking at "Performance Settings"
getLivePosSnap() at the int Track index gets the selection in the "Position Sync" tab when right clicking a track and looking at "Performance Settings"
getLiveTrigSnap() at the int Track index gets the selection in the "Trigger Sync" tab when right clicking a track and looking at "Performance Settings"
getLiveStatus() at the int Track index gets if at the track index if any blocks are playing, scheduled, or if its empty
getLiveBlockStatus() at Track index, block index, gets back if the block is filled, scheduled, or playing (or empty with different flags)
getLiveBlockColor() at Track index, block index, gets the color of the specified block.
triggerLiveClip() at Track index, block index, flag, triggers the block clip at that index with the specified flag (I wish the documentation explained the flags)
refreshLiveClips() at Track index, for clip number refreshes the clip
incLivePosSnap, incLiveTrigSnap, incLiveLoopMode, and incLiveTrigMode at index increases the selection at "Position Sync", "Trigger Sync", "Motion", and "Press" tabs respectively for the track, I think value means what mode it uses for each one.
getVisTimeTick() I'm not sure what it gets, but I get different numbers depending on what clip I play, how many clips, and where they are in performance mode
getVisTimeStep() is a bit of the same, but I think it adds together all playing clips' positions in steps?
The ones I still couldn't figure out are lockDisplayZone() and getVisTimeBar(), but hopefully this helps you find how these work
Currently, the stubs won't give errors when calling a function with kwargs (eg: foo(value=42)
), even though this causes errors in FL Studio.
Add a /
as the last param for each API function in order to prevent kwarg usage.
ui.navigateBrowserMenu(<prevnext>, <ShiftHeld>)
# Navigates the prev/next item in browser. <prevnext> can be 0 for previous or > 0 for next.
# Shift held will cause the browser item to expand/open if it's a folder/collection ie Node Type <= -100. # similar to keyboard nav
ui.getFocusedNodeCaption() # returns the text caption of the highlighted item in the Browser
ui.getFocusedNodeFileType() # returns an int representing the file/item type. values <= -100 are collection/folders and can be 'opened'
# some values I have seen:
# 4 = fst, 7 = WAV, 10 = FSC / Score, 13 = MP3, 11= SoundFont, 23 = Image JPG, 27 = MIDI
# some folder/collection values:
# -100 = Folder, -101 = Current Project Folder, -108 = History Folder, -107 = Pattern Folder, -105 = Effects Folder
# -104 = Generators Folder, -106 = plug-in, -4 plugin parameter, -103 = Remote Control, -3 = remote control item
# -120 = Recent Files
ui.isBrowserAutoHide() # is the browser set to auto hide?
ui.previewBrowserMenuItem() # previews the current browser item. plays it if it is audio clip
ui.selectBrowserMenuItem() # selects the highlighted menu item as if you had clicked on it.
ui.setBrowserAutoHide(<TORF>) # <TORF> can be True or False,
bonus item:
ui.miDisplayDockRect() # takes 4 integers but I cant get it to do anything
The fl_model
code is incomplete, and in many cases doesn't reflect FL Studio's behavior. In a future version, support for it will be removed.
If you depend on this code to test your script, you may prefer to use the flapi
library to remotely control FL Studio. In the near future, it will support decorating other scripts in order to provide support for decorating scripts so that unit tests can be written using frameworks such as Pytest. See Flapi#4
The documentation states that FFNEP_DontPromptName is 1, where it doesn't work, but inputting 2 does work correctly and doesn't prompt a name when creating a new empty pattern.
channels.getChannelPitch
and channels.setChannelPitch
seem to have some very weird behavior. See if I can find a better explanation, and perhaps opena bug report with FL Studio.
Some functions such as channels.setChannelColor
adjust the given color to ensure it remains readable, but others don't. Document this behaviour.
Can you please add piano roll Scripting?
import flpianoroll
Thanks
Things to template-ify:
utils
moduleOther useful features:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.