This is alpha software and has bugs/unimplemented features and limitations. While it is public, I am not really doing support/requests for this at the moment. However, I will try to take care of bugs and issues as I find the time.
This controller is built for my use only and optimised for how I want my controller to behave in Reaper.
This public code version is a stripped down version of my non-public code. This simplified public version allows you to control one instance of either the Faderport 16 or Faderport 8.
The code base is originally designed to control two Faderport units at the same and offer advance features specific to my workflow. Therefore, there is still some legacy code and design patterns to take into account two Faderports, which I will try and remove/optimise as I go along. If anyone else has two Faderports and is interested in my driver, then just get in touch.
Because I do not know of anyone using two Faderports or expect them to understand my view on how they should be controlled, I have released this simplified code.
If you want more flexibility and customisation, then I recommend using the Control Surface Integrator, by Geoff Waddington and installing navelpluisje's Faderport configuration files as a starting point. This is now a very mature CSI implementation of the Faderport and is looking very promising!
Because the Control Surface Integrator is a stateless design and will only mirror Reaper's views, it does not really work exactly as I want it to. This is why I developed a native controller for my own use. However, since testing navelpluisje's implementation I will likely move my FP16 to the CSI and retain my FP8 as a stateless controller.
I do encourage the use of the Control Surface Integrator because it is a very mature project with plenty of contributors and more people to help with your problems. It opens up a world of flexibility. This driver will also work even with the CSI controller installed (as long as you are not using the CSI to control your Faderport).
I am not a C++ developer by trade. I prefer easier languages like C#. I have found it challenging to structure the code as I would like. I also had to learn how to do all this on-the-fly using the csurf_mcu controller as a base and understand how Reaper works with extensions. The extension may crash Reaper. Don't use it on production environments if you are worried!
- Volume faders
- Arm, solo clear, mute clear, select, solo, mute, pan, transport buttons, metronome
- Edit plugins (opens the plugin window only of the selected tracks)
- Automation buttons
- A way to implement busses and view them on the surface
- VCA Leader view
- VI view (filters tracks if there is a virtual instrument somewhere in the fx chain)
- Navigation with transport wheel (not working very well)
- Pin the master bus to the surface
- Link - toggle follow Reaper on/off
- Enable bypass, macro, buttons to assign to custom actions
- Pan/Param wheel
- Shift + Save, Redo, Undo
- Sends
- Zoom, Scroll, Section, Marker buttons. I haven't decided if I want to use them or how I want to use them
- Limited support for Nagivation Wheel. At the moment, it only works to control the Master buss volume
- RTZ << >> buttons. They go to the start/end of the project but are not useful right now.
- Editing FX parameters
The intention behind the contoller is to partially mimic using a regular mixing desk at the computer. There are some things implemented differently from other surface controllers:
-
The Faderport will always show a full bank of tracks when paging. For example, if you have 20 tracks in Reaper the Faderport 16 will display tracks 1-16. When you press "Next" to page by bank, the Faderport will show tracks 4-20. This is to avoid having empty faders constantly flip up and down when paging and not waste space.
-
Bus view will not change the TCP or Mixer view in Reaper when showing busses. The driver will hold the state internally and create a virtual view to reflect on the Faderport. This means, if you press the Bus button it will display all your tracks that use the bus prefix tag in config.txt file.
-
VCA view will show only on the Faderport and will not show/hide non-VCA tracks on the TCP or Mixer view in Reaper. The driver will hold the state internally and create a virtual view to reflect on the Faderport.
Note if a button doesn't light up, it is not implemented yet. It should, however, still trigger a MIDI event and can be assigned an action.
The following buttons are currently implemented with details on how they work:
Button | Description |
---|---|
Arm | Arm tracks by pressing ARM then Select each track to be armed. Disengage ARM when done |
Solo | Press S to solo each track respectively. Quickly double pressing S will exclusively solo the selected track (all other soloed tracks are cleared) |
Mute | Press M to mute each track respectively. Quickly double pressing M will exclusively mute the selected track (all other muted tracks are cleared) |
Solo Clear | Clear soloed tracks |
Mute Clear | Clear muted tracks |
Select | Pressing Select will select the track. To exclusively select a track, double press the Select button. To clear all selected tracks, double press to exclusively select then click one more time to unselect the track. A single volume fader will control all selected tracks |
Edit Plugins | This will open the FX window for any selected tracks. It does not provide plugin parameter editing |
Pan | Ability to set the pan with a volume fader |
Audio | Show prefixed "audio_prefix=A-" tracks set in the config file (see Bus) |
VI | Show tracks that have virtual instruments) |
Bus | By adding the line "bus_prefix=B-" you can mark track names with a prefix (in this case, "B-", and show these tracks on the Faderport. Replace "B-" with any characters of your choice. |
VCA | Show VCA leader tracks |
All | Show all tracks not in the prefix filter list |
Channel | Prev/Next will move the surface display by -1/+1 channel at a time |
Bank | Prev/Next will move the surface display by 8 or 16 channels at a time |
Prev | Move the surface display left by one channel or a bank of 8/16 depending on the Channel or Bank buttons status |
Next | Move the surface display right by one channel or a bank of 8/16 depending on the Channel or Bank buttons status |
Master | Will control the master buss volume with the large navigation wheel |
Click | Toggle metronome on/off |
Transport buttons | Repeat, Stop, Play/Pause, Record are all implemented |
Automation buttons | All buttons implemented except Off |
The Faderport must be set to "Studio One" mode. Make sure the Faderport is off. Hold down the first two select buttons and turn on the unit. Make sure "Studio One" is highlighed and press the select button undernearth EXIT
Install the dll from the FP16.zip in your Reaper UserPlugins directory. Place the config.txt in the same directory.
Edit the config.txt :
Specify if you have the Faderport 8 or 16 version.:
#Set to 16 or 8
faderport=16
Set the track to start from:
start_track=0
Prefix filter list:
Audio/VI/Bus/VCA/All work as radio buttons. By creating a prefix in the config you can use these buttons to show/hide groups of tracks from the Faderport.
E.g If you want to use fake busses and have the bus button display them on Faderport then you can add a track title prefix here to identify busses. To activate them, make sure your track has the defined prefix in the start of its name.
bus_prefix=B- // Add B- in the start of any tracks that will be filtered by the bus button
audio_prefix=A- // Add A- in the start of any tracks that will be filtered by the audio button
vi_prefix=V- // Add V- in the start of any tracks that will be filtered by the VI button
For example, to create a bus track for Drums, rename the track to B-DRUMS. This track will now be removed from the main view and will be shown when pressing the Bus button on the Faderport. You can make the prefix anything you like. The filter will check for a matching prefix in each track.
Since Reaper doesn't really have traditional busses, you can think of this as a kind of filter instead that is engaged when pressing Bus.
Note The All button doesn't show all the tracks. It shows everything not in the prefix list.
All buttons should trigger a MIDI event, except for Shift. You can set up actions from the Reaper action list to trigger an action from any button on the Faderport.
Buttons without action |
---|
Bypass |
Macro |
Link |
Track |
Sends |
Off |
Zoom |
Scroll |
Section |
Marker |
- Download - 64bit Windows Build (at the moment this is buggy as cleaning up the code has caused breakage)
- CSI - Control Surface Integrator
- Navelpluisje - Navelpluisje's Faderport installer using a custom build of CSI
- audio/vi/bus/vca/all radio buttons with prefix for audio/vi/bus