https://github.com/ahlstromcj/sequencer64
Screenshot:Sequencer64 (replaces sequencer24) is a reboot of seq24 to refactor it to be
tighter and easier to transition to GTKmm 3, and much more. It is now
beyond seq24 in functionality and bug fixes; the code is *significantly*
refactored, although the heart of seq24 definitely remains intact.
Arch PKGBUILD:
https://aur.archlinux.org/packages/sequencer64-git/
Changelog:
Roadmap:Major updates:
- Version 0.9.11 fixes a bug that disabled the important queueing
feature! Many other bugs fixed as well.
- Sequencer64 loads SMF 0 files and splits the channels into separate
tracks/sequences.
- JACK support has been improved. Sequencer64 will track JACK transport
properly, and as Master, will provide the proper Bar:Beats:Ticks (BBT)
to other JACK clients. We are still investigating JackBBTFrameOffset
support.
- Pause functionality (still tweaking it) has been added to playback
under ALSA. Instead of rewinding, the Pause button leaves
playback where it is, and resumes when playback restarts. Stop
still rewinds the sequences. The Pause feature does not affect JACK
transport, which already supports pause; we would like to add rewind
to JACK transport eventually. Also added is a Pause key (by default,
the period). Pause can be disabled at configure time (--disable-pause).
- Long sequences/patterns now auto-scroll horizontally during playback
to keep up with the progress bar in the sequence/pattern editor.
- Highlighting of last sequence brought up for editing.
- Configurable progress bar, font, redraw timeouts, and more.
- MIDI Clock support has been fixed. Sequencer64 will now interact
well with QJackCtl, Hydrogen, and Klick (command-line metronome).
See the testing described in contrib/notes/jack-testing.txt.
- An event-editing window has been added, for viewing and editing a
list of events, regardless of event type. Still in progress; viewing
is fine, editing basics work.
- Two synchronized song-editor windows can now be shown on screen, to
better arrange songs with a large number of tracks.
- Added a more modern-looking, bolder font to the graphical user
interface, selectable at run-time, in the "user" configuration file.
- Added an ALSA --bus option for easier testing against a specific
hardware/software synthesizer.
- Added a --ppqn option to try to play files at the right speed. Still
in progress, as the Seq24 PPQN value of 192 affects a lot of code!
It basically seems to work, but bugs may still lurk.
- Added support for using the Mod4/Super/Windows key to keep the
performance and sequence user-interfaces in editing mode, very helpful
for certain crappy laptop trackpads. Extra "paint" key support also
gets around the limitations of some trackpads.
- Shift-left-click on the pattern slot in the pattern editor now
toggles the playing state of all other patterns. This works across
screensets. Shift-left-click on the pattern name or M in the song
editor now toggles the mute state of all other tracks.
- Added arrow key support to some of the windows and panes.
- Also supplemented the mouse with "p" to start paint/draw mode, and
"x" to escape it, in the sequence and song editors.
- The "l" and "r" keys allow arrow movement of the performance
markers, with "x" to escape this mode.
- If notes are selected in the sequence editor, the arrow keys can
be used to move the notes in time and in pitch. In the
performance editor, a pattern can be selected with the mouse and
moved right/left with the arrow keys.
- Add "z" and "Z" keys to zoom out and zoom in the pattern and song
piano rolls. "0" restores the default zoom.
- Tweaked the colors of some user-interface elements to make it
easier to see them when combined. For example, the background
sequence is now colored, and the scale bars are now light grey.
Progress bars are now red, if not running in legacy mode. Selected
events now appear as orange in the data panel.
- The "rc" configuration file has been upgraded to support a couple
more options, including the enabling/disabling of LASH session
support.
- The "user" configuration file is now written, as well as being read.
It contains more extensive run-time configuration for
the user-interface. The following items have been added so far,
though not all are internally implemented:
- [user-interface-setting]
- Style of the main-window grid is now modifiable.
- Main window rows
- Main window columns
- Main window border thickness
- Main window spacing
- Maximum sets
- Control height
- Allowing two performance editors onscreen
- The page settings of scrollbar to increase the amount of
scrolling from the too-short defaults.
- [user-midi-settings]
- Global PPQN value
- Global beats per bar
- Global beats per minute
- Global beat width
- Global MIDI buss override
- Fixed a long-standing (back to seq24) bug that caused the main window
buttons to grab focus, causing the space bar to press the button, as
well as doing its start function.
- Internal (invisible) work:
- The code has been broken up into libraries, for better separation
between GUI support and the files, MIDI, JACK, and LASH support.
- A wide range of MIDI files have been tested, to find bugs that
can crash the application. A nice increase in robustness.
- Centralized dirtiness-handling to the perform module, and
improving its accuracy and comprehensiveness.
- Set Tempo and Time Signature events are now read from
non-Sequencer64 MIDI files. They are also saved in the normal
MIDI format, so other sequencers can get them from Sequencer64
MIDI files.
- The user-interface classes have refactored to derive from
base classes providing common code.
- Sequencer64 now uses std::multimap instead of std::list as an
event-container. It works well, and loads MIDI files a lot
faster, especially when compiled for debugging. The reason seems
to be that sorting is a lot faster in the multimap. See the
SEQ64_USE_EVENT_MAP macro in the libseq64/include/event_list.hpp
module for selection of the container, and try it for yourself!
- Constant variables are slowly being assigned to new members, in
preparation for support of altering the number of sequences and
screen sets supported.
https://github.com/ahlstromcj/sequencer ... er/ROADMAP