Beppigames Sequencer

A toy-like unassuming sequencer for composing.

Second song: Long Ride To Home
First song: Sparkling
Test 11: Pitch black (and a 3/4 time signature)
Test 10: Single track using layering feature
Test 9: Vibraphone, Strings, English Horn
Test 8: Guitar And Strings
Test 3: Duh
Subpage Steps Editing
Subpage 1: Steps Editing
Subpage Sessions And Song
Subpage 2: Sessions And Song
Subpage Instruments
Subpage 3: Instruments (all tracks displayed at once)
Subpage Scale And Basenote
Subpage 4: Scale And Basenote
Subpage Mixer
Subpage 5: Mixer (volume, pan, channel, out, pitch, layer)
Subpage Fluidsynth Reverb And Chorus
Subpage 6: Fluidsynth Reverb And Chorus
Subpage Reverb (ZitaRev1)
Subpage 7: Reverb (ZitaRev1)
Subpage 10 Band Equalizer
Subpage 8: 10 Band Equalizer
Pitch Black
Pitch Black (no distractions)
Help Pages
Help Pages
Block Copy
Block Copy
Blue Background
Blue background: Started with option -c 101071ff.
Wallpaper 1
Wallpaper 1. Started with option -w 1.
Wallpaper 2
Wallpaper 2. Started with option -w 2.

Download

Linux Please read the manual first.

Download beppigames_sequencer_manual.pdf

Download beppigames_sequencer_v091_linux.tgz

The beppigames sequencer is a Linux 64 bit application and portable AppImage (https://appimage.org). I made tests running it from a USB stick on LiveCD Ubuntu 20.04, Mint Cinammon 20.2 and Debian Live 11.1.0. I noticed these had all same glibc 2.31 as the build machine. To run the application you need same glibc version or higher. You can find out the glibc version of your Linux machine in shell with "ldd --version".

The sequencer can load one LinuxVST effect into its effect pipeline. I use it to load linvst'ed (https://github.com/osxmidi/LinVst) DReverb, epicPLATE or Freeverb3_Hibiki reverbs. Regarding the latter, I also modified the Hibiki sources to have a LinuxVST which can be loaded without linvst and wine. You have to build it yourself and find the sources here.

Introduction

Why another sequencer ?

Wanted a simple composition/sketching tool with no negative effects on my intuition. The Novation Circuit (the original one) worked ok. So I developed the beppigames sequencer which is influenced by it.

The sequencer is keyboard only (a midi keyboard is supported). There is a plethora of keyboard commands. You can view the complete list here. At end of list you find key combinations for when there is no numpad. The sequencer is a standalone music sketching application.

Next a "feature list":

Acknowledgments

I developed the sequencer as native Linux application in 100% C++ and OpenGL ES 2 (emulation). Used Codelite as development IDE and DiffMerge for merging. Used libs fluidsynth and rtmidi. The dfzitarev1 ladspa plugin is used as additional reverb. The 10 band equalizer uses code from this blog.

Using the sequencer with one large GM soundfont. Applied follwing approach in creating it: Collected three dozens of MIDIs of beloved songs (classic, film score, pop). Imported them to LMMS using the nicely balanced GeneralUser as default soundfont and starting point. Then for some time switched instruments from other soundfonts in/out to optimize the songs. Finally jotted down all used instruments and compiled a GM soundfont utilizing polyphone.

For post-processing in LMMS, a song can be exported with [F8] from the sequencer to midicomp compiler human readable format, converted with midicomp to midi binary format and imported in LMMS utilizing same soundfont as in sequencer as default.

To have a portable version I created an AppImage.

Version history

0.10 Initial version.
0.11 Added midi file export (via midicomp) and made an AppImage.
0.20 Added param for one midi output device. Select on mixer page for each track where to send notes to: Soundfont renderer, midi output or both. Also set midi channel there. The midi output only receives note on and note off messages, nothing else. Purpose is e.g. to play some tracks via soundfont and some through a external sound module or use (VST) instruments hosted in a DAW. Updated project version file format from version 1 to 2 (just added channel and output attributes for each track).
0.30 Added a second midi output. Added a track pitch change (in semitones) to mixer. Raised PPQ from 32 to 512: Offset and gate fraction now values 0..127. Every step has 128 substeps. Now storing velocity non-quantized (values 0..127). First velocity curve (0) is now just identity (=leaves midi velocity untouched). Added a simple editing mode for note attributes because of larger value ranges now (previous editing was only with [Alt], cursor keys and shift). Entered by pressing [Entf] when cursor on notehead (and no playback), just type in new values, select attribute column with left/right cursor keys, [Del] deletes last char, leave editing mode by [Entf] again or [Return]. [Shift+Einfg] plays step at cursor. Fixed always applying same chorus and reverb for all tracks (was just debug code active). Fixed bug which resulted in gate fraction zero even if not quantizing gate. Fixed bug which caused fixed recorded velocity for external midi keyboard.
0.40 Improved sound by adding the dfzitarev1 reverb ladspa plugin and added an according seventh subpage for configuring it. Updated project file format with params for this reverb. Fixed bug of cursor leaving right screen on reverb and chorus subpage. Fixed conceptual issue: When switching soundfont (=synth instance), the track attribs get assigned the synth values for reverb, chorus and external reverb. When updating a track, all other tracks referencing the same soundfont (=synth instance) get assigned its reverb, chorus and external reverb. This is because the reverbs and chorus is a synth setting which is the same for all tracks referencing the synth, while e.g. pan is a synth channel setting which can be different for each track referencing the synth. Explained this in the user manual. Looks the sequencer is now operational complete.
0.41 Added optional param (-b) for fluidsynth audio buffer size to commandline. The (safe) default is 128. You may want to try 64. Fixed crash when specifying more than 10 soundfonts in soundfonts.dat (the limit is still 10). Changed key combinations for line and bar transposing to be more logical. Added combination [ALT SHIFT UP] and [ALT SHIFT DOWN] which moves all notes in bar one semitone up or down. Added combination [CTRL SHIFT I] on mixer page which makes a pitch change for a track permanent in the notes of the track (and resetting pitch back to 64). Was required because (from concept) midi export does NOT apply pitch changes from mixer. Added one further linear velocity curve (C5) and three convex (expanding) curves. The latter (curves C6,C7,C8) I added because I got a midi keyboard with very low midi velocities.
0.42 Added optional param (-c) to commandline. This specifies the background color in rrggbbaa hex digits. Default is 212121ff (dark grey). If you want e.g. a blueish background try 101071ff.
0.43 Fixed stucked note when holding key pressed, then switching scale and key not in new scale and releasing the key. The solution chosen is to flush sequencer for current track before applying changed scale (=flushing the noteoff- and note completion queues). This means you should not switch scales while recording AND holding keys down AND sequencer playing (you still can but notes may be shortened).
0.44 For faster navigation on step edit page, added key combination [CTRL SHIFT <CURSOR KEYS>] which moves cursor to next note (same line (step) or column (note)). Added [CTRL K A] which selects all notes of current track in current session to block. For bulk velocity changes added [CTRL K S] which applies current track velocity to all notes in block. Changed block selection behavior so [CTRL K B] and [CTRL K K] can be used repeatedly to resize block. E.g. first select all notes to block, then shrink block.
0.45 On the song and session subpage combination [CTRL C] then [CTRL T] can now copy also a track within the same session. Note that the destination track contents are deleted before copying over the source track contents. If you want a copying method which overdubs, use the block copy mechanism.
0.50 On subpage 2, song and sessions, a [CTRL T] now also copies over the length of the source track. Added [CTRL L] which pastes only the length of the source track. Experimental launchpad/controller mode. Invoked with "-l" option. See manual. Also added some experiments with note humanization: [CTRL K R] randomizing velocity, [CTRL K T] randomizing offset for notes in block.
0.51 Increased number of bars per session from 8 to 16. Bars reachable through consecutive keys on keyboard: First 8 bars still reachable with [ALT 1] to [ALT 8]. All 16 bars reachable with [ALTGR 1] to [ALTGR 8] and [ALTGR Q] to [ALTGR I]. Added [CTRL K Q] which quantizes the offset of every note in a block (=zero note offset). Changes to formatting of numbers in upper right (session, track, bar). Bugfix: Changed number of tracks in MFile statement in export from 10 to 11 (before 10th track was stripped off in midicomp .asc to .mid conversion). Changed launchpad mode keys to be more logical. Added launchpad key invoking playing from cursor position. Removed possibility to switch sessions from launchpad (needed the key and recording while freely switching sessions invites chaos).
0.52 Fixed bizarre bug which caused follow playhead flag [ALT F] to be turned on when pressing "1" and scale selected did not include a "C" (e.g. F# minor). Removed a debug message.
0.53 Added [ALT SHIFT M] on mixer page which propagates the mute flag of a track to all other tracks of the session. E.g. to mute all tracks, select a track (mixer column), mute it with [ALT M] (toggling), then press [ALT SHIFT M].
0.54 Fixed midi export (=export to midicomp) bug which caused some events appearing in wrong time order.
0.60 Added a hard limiter to fx chain. Added a gimmick: New option -w <wallpaper-number> selects a (fixed) wallpaper. Values for wallpaper-number are 1 or 2. If using this option the scale help lines disappear and the white keys change color and transparency.
0.61 Fixed stuck key issue by switching tracks only if no key pressed currently on external midi keyboard. Fixed bug which always selected midi through as second midi output.
0.62 Added layering feature in mixer as a quick way to hear instruments in unison: A track can receive notes from another track. Added safeguards: Set pitch change and layering in mixer only when playback stopped and no note key pressed. Fixed switching instrument for track 10 (was using wrong track for switch).
0.63 Added -m <velocityMax> command line option which specifies maximum achievable velocity of keyboard and scales to full range (before applying a velocity curve of the sequencer). My korg microkey2 does not create velocities above 120 therefore I use "-m 120". Also added a third wallpaper (nature), selectable with "-w 3". Previously gain values outside the range of 0.2 .. 1 in soundfonts.dat were not applied. Now values in range 0..10 are applied.
0.64 On page 2 (song and sessions) added key [CTRL SHIFT L] which pastes length of source track in source session to all tracks in target session. This is helpful to create empty sessions as pauses between other sessions when the length should be less than 16 steps. Added command line option -q which enables some controls for an Alesis Qmini which I use frequently (start/stop session/loop play, toggle record, undo recording). Consult the manual.
0.70 Added new recommended midi (midicomp) song export method with [F8] (old one with [F7] still existing). Difference: New one obeys track pitch change and layering (both are settings from mixer) and also removes note overlaps. Latter was required for LMMS midi import. See manual.
0.71 Fixed not propagating fluidsynth reverb and chorus settings (code there but wrong scope): When changing reverb or chorus, the changes made for current track must be propagated to all tracks referencing the same synth instance (=entry in soundfonts.dat). Before: Assume one sounfont in soundfonts.dat. Change for e.g. track 9, Save, Load. Change was not in effect because change not propagated to the other tracks, in particular track 10. Note track 10 is the last track applying settings to its respective synth instance in project import.
0.80 Added 10 band equalizer. Extended the Pitch Black view. Added experimental option -x which loads a Linux VST effect into fx chain (or a linvst'ed (https://github.com/osxmidi/LinVst) Windows VST effect). Added bypass option for zita reverb. Added keys [ALT RETURN] for Pitch Black, [CTRL RETURN] for direct editing of note under cursor.
0.81 Added Harmonic Transpose. Keys are [SHIFT NUMPAD PLUS] and [SHIFT NUMPAD MINUS]. This applies to a line or, if a block was selected, to the block. I got the inspiration from discovering the Voyetra Sequencer Plus Gold manual (old but cool keyboard only sequencer).
0.82 Fixed bug: Playing a step did not stop when pressing [SHIFT INSERT], then lifting SHIFT before INSERT. Added key combinations so the sequencer can be operated with keyboards which have no numpad. Added keys [SHIFT O] and [SHIFT F] which cycle offset and gate fraction of a note through 0,32,64,96 (=1/64th notes). Removed SDL2 lib from the appimage (unused), shrinking the sequencer size to 2.2 MB.
0.83 Fixed bug: In export to midicomp, calculation of bank select lsb and msb values for banks >= 128 was wrong causing illegal controller values >= 128 which in turn caused midicomp choking up. Increased number of tracks from 10 to 12 to have some more working space.
0.84 Changed way of configuring a LinuxVST in the effects chain: Option -x now has no params and user must provide a configuration file fx.dat (in appimage directory). In that file it must be specified which plugin (.so) to load, which program (preset) to select (-1 for none), the number of parameters to change and, if nonzero, the parameters (each is index and value pair). I made tests with DReverb and epicPLATE. See manual.
0.85 Added more LinuxVST output: Logging the plugin params and their indices (to be referenced in fx.dat). Added a hack which uses black keys as transport controls. Enabled with option -k, see manual. Displaying an application icon (in the dock). Setting icon name failed (huh?), so shows still "Unknown" as text.
0.90 Reworked track velocity. Can now be set in mixer with [ALT V]. If "locked" to track (with [ALT T]) a "v" is displayed on the tracks bar. Then all notes existing and live played on the track play with track velocity. The track velocity can also be "written" to all notes of a track with [CTRL SHIFT V]. Changed some key combinations, e.g. [ALT V] for volume change became [ALT O]. Fixes to build itself (was missing optimizations and LinuxVST built with debug symbols). New wallpaper modes -w 4, -w 5, -w 6: Same wallpapers as before but they display only in pitch black mode (and there replace cat eyes and text there).
0.91 Added two commands on sessions subpage: [CTRL M] copies only the mute- and single flags of the clipboard session to session under cursor. [CTRL A] pastes the whole session, meaning, the notes, the session track lengths and mute- and single flags.