There is no native way to achieve it in FL Studio. However, there are other ways to achieve it. Here are some methods that may be helpful.
Method 1 - AutoHotkey
The easiest way to achieve something similar is to use AutoHotkey script. The script is extremely simple:
~SPACE:: SoundSet, +1, , Mute
When you run this script, it will allow you to mute/unmute system sound on Space key press. Good thing is that FL Studio uses space key to play/pause soundtrack or piano roll track, so you can basically edit your piano roll (while the system sound is muted) and then press space, which will unmute the system sound and play the track at the same time. When you press space again, it will stop the sound track and mute system sounds again.
Method 2 - Modify assemblies
While method 1 is very simple and practical, although not exactly what the OP has asked. But, if you want to mute only piano roll sounds on placing a note, then the things becomes very hard. FL Studio didn't provide a way to achieve it, so if you really need exactly it, you'll need to disassemble binaries and modify executable files and dinamic linked library data.
First off, note that disassembling binaries is extremely hard job and even very experienced developers in that field of computer science may spend more than few months on debugging hard coded assembly procedures.
I'm definitely not going to spend time on trying to achieve it, the life is not long enough. If you don't have anything smarter to do in your life, then you should start by reading and understanding the following topics and programs:
- I suppose you're on Windows, so you should read this first
- Study the Portable Executable File Format Specification Standard
- Read about the sections in a PE file
- Learn NASM, C, C++
- Understand Machine Instructions Format, then Pointers, and Memory Management
- Learn how to digitally assign a dll and how to modify assigned dll file (see this)
To start, you'll need to write your own memory inspector tool in C++. Again, I'm assuming that you're on Windows. You can read on MSDN about functions like CreateProcess
and similar ones and how to use them to view and modify another process memory regions. If you want to do it from scratch, you'll need to write your own assembler/disassembler and inspect memory regions of FL Studio's spawned process, then find procedures and functions which work with the piano roll, then modify them and replace with your own procedures which do exactly the same things except playing audio. FL Studio must call some Windows native functions from gdi32.dll
or user32.dll
, or even kernel32.dll
in order to play sounds. Find them, create a script which modifies these procedures and attach the script to FL Studio process. Once you modify the procedures, they will not be changed anymore.
How you can find which assembly functions play the sound in the piano roll? There is no universal answer to this question. It is sometimes hard to understand even some high programming language like Python, but in order to understand the lowest possible language (assembly language), you better prepare for a lot of work. It is not impossible, you need to try different approaches, try to modify random procedures to check if the process crash, try to use some stack trace algorithms and inspect which function preceded the current function, etc. These are just some general tips on how to start.
Not related to this question, but I'll suggest you to see this post. There I explained how to modify assembly codes in order to suppress Chrome's warning. I spent more than a month on that project, so I'm pretty sure it will not be easier in FL Studio either.