Skip to content

FL Studio

Created: 2017-06-23 19:32:14 -0700 Modified: 2023-12-18 09:07:48 -0800

  • At the top of the Playlist (shortcut=F5), there’s a dropdown to select a particular pattern.
  • For a GREAT explanation on ADSR (attack, decay, sustain, and release), check out 8m04s in this video
  • If you’re just looking for a passable synth, Sytrus is built-in and has some good presets. FLEX is also pretty good.
  • To input individual notes using a MIDI keyboard, enter “Step editing mode”, which will input a note at the playhead. The sustain pedal will advance the playhead.
  • To scale velocities proportionally, select a bunch of notes and press ⌥X. It’ll open “level scaling”:
    • Pasted image 20240316103420.png

Getting my Nektar SE 25 to pause/play FL Studio

Section titled Getting my Nektar SE 25 to pause/play FL Studio

(reference) This is sort of ridiculous. If you press the pause/record buttons together on the Nektar SE 25, you’ll send special codes to FL Studio, but it won’t know what to do with them, so you need a custom MIDI script. Here’s what I did on macOS:

  • Make ~/Documents/Image-Line/FL Studio/Settings/Hardware/Testeroni/device_testeroni.py (the name has to start with device_) with these contents:
#name=Testeroni Testeroni Testeroni Testeroni Testeroni
print("Loaded my Testeroni MIDI script")
import midi
import ui
import transport
BUTTON_PLAY = 0x6A
BUTTON_RECORD = 0x6B
BUTTON_REWIND = 0x67
BUTTON_FAST_FORWARD = 0x68
def OnMidiMsg(event):
print("On midi msg", event.midiId, event.data1, event.data2)
event.handled = False
if event.midiId == midi.MIDI_CONTROLCHANGE:
if event.data2 > 0:
if event.data1 == BUTTON_PLAY:
if transport.isPlaying():
transport.stop()
else:
transport.start()
event.handled = True
elif event.data1 == BUTTON_RECORD:
transport.record()
event.handled = True
elif event.data1 == BUTTON_REWIND:
ui.previous()
event.handled = True
elif event.data1 == BUTTON_FAST_FORWARD:
ui.next()
event.handled = True
  • Reopen FL Studio (you would think that “Update MIDI scripts” would help, but it didn’t seem to)
  • At this point, in Options → MIDI settings, you should be able to set your controller to use your script (set it to SE25 MIDI2 since that’s the one that sends CC messages, not MIDI1):
    • 500
  • Select it and confirm that it worked via View → Script output
    • This is also how you’ll reload your script after making changes (using the “Reload script” button)
  • OptionsDebugging log can show you which codes are being sent so that you don’t need to log them all:
    • Play button press: control change BF 6A 7F
    • Play button release: control change BF 6A 00
    • Record button press: control change BF 6B 7F
    • Record button release: control change BF 6B 00
    • Rewind button press: control change BF 67 7F
    • Rewind button release: control change BF 67 00
    • FF button press: control change BF 68 7F
    • FF button release: control change BF 68 00

https://bedroomproducersblog.com/free-vst-plugins/

Note: for my Mac, I have to use Kontakt from this plugin:

However, as of ~April 2024, all of the instruments are stuck in demo mode (see this thread). I guess Kontakt 5 has been discontinued. I’m not going to bother trying to get it to work.

IL Remote (“Image-Line Remote”)

Section titled IL Remote (“Image-Line Remote”)

This is crazy. I downloaded the app on my Android phone, pressed “tap to connect” on the setup screen with FLStudio open on my computer, and that was it (i.e. ~5-second setup). After that, you can use it to control FLStudio on your computer from your phone: pause/play, input notes on a virtual piano, etc.

If you press and drag the pencil icon at the upper right toward the left, you can make a new layout. I added a pad, tapped it to customize its function from “Mode: note” → “Mode: syscmd”, left its message as “pause/play”, then double-tapped the pad itself to make it huge. Of course, adding a “stop” button is also good (resizing is a bit tough; try dragging from farther inside the pad than on the edge or outside).

Super useful:

  • Shift+clicking with notes selected will automatically duplicate them and let you move them around
    • This should prevent you from having to use ctrl+C, ctrl+V most of the time
  • J/H: select lower/higher channel with note data
  • Ctrl+drag will let you select many notes at once
  • Double-clicking a title bar will switch between maximizing a window and making it normal-sized (as does simply pressing Enter)
  • Middle-click-drag will pan the current view
  • Alt+right-click+drag will let you play the immediate notes in the view
    • This will let you listen to patterns too in the playlist, but you have to drag over a particular track
  • Ctrl+right-click will zoom-to-fit so that everything is visible.
  • Ctrl+G: glue selected notes together to form one note
  • Ctrl+middle-click-drag: vertical zoom
  • Page up|down: change horizontal zoom

Helpful

Shift+clicking an empty note in Paint mode will place a note and immediately start customizing its duration.

This is helpful if you find yourself painting notes in that don’t snap any longer; it’s because the duration of the note you place is equal to the last one selected.

Shift+clicking something with a name (e.g. a pattern or track) will rename it.

After having placed a note, alt+scroll will change its velocity, and shift+scroll will change its timing.

Numpad - and + will shift between patterns.

Pressing backspace changes grid snapping, so if it’s ever off, press backspace again.

Back+forward buttons (used for browser navigation) can change channels or patterns quickly and visually

Alt+middle-click-drag: right and left will scroll, up and down will zoom

Not very helpful, but still shortcuts:

  • Shift+alt+right-click (in playlist view): play track from beginning

Some instruments don’t have reliable enough velocity control, so you have to add an automation clip for the track’s volume. First of all, to add an automation clip, you just right-click practically anything in FL Studio and choose “Create automation clip”:

It’ll put a clip into the playlist:

The first thing you should do is cut this (the “C” key on the keyboard activates that tool) down to as small a size as you need (and delete the extra piece that’s created by cutting), that way it’s more manageable.

If you ever shrink an automation clip (via dragging its ends), then keep in mind that only what’s visible will affect the thing that you’re controlling. For example, suppose you draw lots of peaks and valleys over 50 measures, then you shrink the clip to just one measure. Whatever value is set at measure 2 will be set forever after.

So now you have a clip where you can draw linear shapes:

If you want to reuse this, you can shift-click+drag its title bar:

These are actually references to the same clip, so making a change to one will affect both of them. That’s where you can click the icon at the left side of its title bar and choose “Make unique”:

Now, changes you make to the unique one will not affect anything else.

As for setting specific values, as far as I can tell, there’s no easy way to do this. I always right-clicked a dot and either chose “Copy value” (or “Type in value”) to get the specific value that I wanted, then I’d right-click another dot and paste in that value.

When you drag a dot around on an automation clip, it may end up shifting/sliding all other dots out of the way. This is controlled by this checkmark in the playlist:

Tropcialbananaman: Hey Adam, while watching you remake the subscription-theme, I noticed you wanted to record into an automation-clip directly. That’s not possible atm, but there is another way: https://www.youtube.com/watch?v=K3CTlOyTwAw Hopefully it’ll be helpful next time you’re working on music :D

  • This isn’t really part of FL Studio, but it’s free at the time of writing, and I’d never used a modular synth before.
  • Awesome tutorial video
    • From this video, I learned how to connect a few modules to get basics sounds outputting:

  • Shown above:
    • The “CV OUTS” (control voltage outs) are feeding the pitch into the oscillator to produce a waveform, then the gate into the envelope generator to control the ADSR properties. The pitch CV will let you play specific notes via MIDI input, and the gate will let you control the velocity.

Colors: track colors can be nice, but picking them is tedious unless you settle on the same colors for every song you make. You can right-click a track and choose “random color”.

Undo history: ctrl+Z by default seems to just undo/redo the same single change. If you right-click the “undo” button though, you get to the browser history (which you can also open via alt+F8 and then click “history”).

It’s this button

If you’re using numpad minus and plus to change between tracks, it can be really helpful to choose “Auto locate” from the channel dropdown at the top of the piano roll:

By doing this, it’ll automatically select the first non-empty channel, and if you’re like me and only have one channel per track, then this’ll save you some time.

  • Right-click the tempo control in the top toolbar and click “Create automation clip”
  • Right-click the tempo control in the top toolbar and click “copy value”.
  • Right-click a point in the track created for tempo automation and click “paste value”.

I had no idea this was possible until 7/16/2017…

  • F8 to open the browser
  • Choose “Generators”
  • Pick your 3rd-party VST (if there are multiple then you can find the name at the upper left of the VST’s window)
  • You’ll now see all of the VST’s controls, and from here you can link them to your MIDI controller by right-clicking just like you would a 1st-party VST.
    • Note: clicking a control in the VST window will highlight it in the browser so that you can tell what’s what.

Just go to the MIDI settings, choose “Novation Impulse” (NOT “MIDIIN2 (Novation Impulse)”) and then click “Enable”. There’s no need to set a port. You should immediately be able to press keys and hear the result in whatever track was last selected; no need to restart anything.

The stop/play buttons on the keyboard directly remember where you are in the song. If you press stop twice though, it’ll bring you to the beginning. The rewind and fast forward buttons can change where the stop button resets to.

Right-clicking practically any knob/fader in FLStudio and choosing “Link to controller…” will let you be able to control a component from the keyboard. After choosing “Link to controller…”, adjust the corresponding knob/fader on the keyboard and they’ll become paired.

Note: a channel is just an instrument basically, e.g. a kick or a snare. The mixer (shortcut=F9) is where you can control the volumes of these from one central place.

Easiest way: in the Channel Rack (shortcut=F6), you can see a number picker to the left of the channel name. Just choose a mixer track there or ”---” for master.

Another way: select the channel in the Channel Rack (shortcut=F6), then in the mixer, right-click an insert and choose “Channel routing” —> “Route selected channel(s) to this track”.

Another way: click the name of the channel in the Channel Rack, then click the tiny arrow at the upper left and choose “Assign free mixer track”.

NOTE: there’s no concept of removing a channel from the mixer altogether; it at least has to go to Master. When you assign a channel via some methods, it will automatically color/rename the mixer insert, but “un-assigning” it by using the Channel Rack’s number-picker won’t change the color/name, so it can be confusing sometimes.

If all you’re hearing is white noise from your microphone, it means Edison is enabled in your mixer. Press F9 to open the mixer, then click the “REC” track and choose “(none)” on the right side. If you still hear static, then it’s probably because you RECORDED static and Edison has it saved as a waveform. In that case, in the “REC” track, click Edison on the right side and delete the waveform.

If you have a drum pads on your MIDI controller, adding an FPC will let you play samples when you hit the pad on the controller. To map notes, there are three general methods:

  1. [configures all] Click to the right of “Midi Note” and choose “map notes for entire bank”. Then just press the pads on your MIDI controller (it helps if the pads on the controller are sending unique notes). If you run out of notes, you can just tap some keys on the high end of the keyboard.
  2. [configures one] Tap a pad to configure in FL Studio, then click to the right of “Midi Note” and choose “Learn”. Then press the pad on your MIDI controller.
  3. [configures one] Tap a pad to configure in FL Studio and see which note it’s set to, then change your MIDI controller to output that particular note from the pad.

I use Synth1 for some chiptune sorts of sounds.

8/29/2017 - 2:41 Popcultur: are you looking for 8-bit sounds because the best i’ve found is one called tb_peach

5/21/2018 - tons of extra presets for Synth1 here (how to install: go to synth1, click “opt”, browse to a “zipbank” folder with all the zips/rars, then wait for it to scan them all). Best presets I found:

  • Alfmeister’s Magic Cracker
    • 74: Above the Clouds
    • 77: Space Keys MW
  • Art Institute Vol 2 (lots of other random good ones too)
    • 6: Voyabass
    • 7: Bass soft
    • 31: clavia
    • 32: brass
    • 37: Trumpet toy
    • 41: piano rhodes
  • Azur Studio 2
    • 1: Barrel bass
    • 22: Aquamarine
    • 24: Water piano
    • 39: Unknown Machine - cool for just ambient sound
    • 78: Talk Robots - probably great for Bot Land
  • Azur Studio 3
    • 46: CB4 (cool when holding lots of notes)
  • BIGTONE
    • 5: BT old stage pno
  • Bladerunner
    • 61 - 63: kicks
  • Bryan Lake
    • 2: Bottleneck
  • Rydsound
    • 12: hi hat
  • VitaminD The Definitive Bank
    • Decent drums in the green section
  • Vivolator
    • 3: BS Nymphette (mw,at)
  • Wavephonic
    • 69: child in time
  • Teksonik 1 - lots of good stuff here: 54, 93

You have to reboot after giving Native Access and its daemon full disk access, otherwise the installations will keep failing.

Sending MIDI input to an instrument

Section titled Sending MIDI input to an instrument

Choose the “MIDI Ch[annel]“

If this doesn’t work, make sure your MIDI device is enabled: Pasted image 20240315211218.png

Delete Browser → Patterns → Initialized controls → Tempo