Giter Club home page Giter Club logo

ahlstromcj / seq66 Goto Github PK

View Code? Open in Web Editor NEW
136.0 16.0 12.0 116.55 MB

Seq66: Seq24-based live MIDI looper/editor. v. 0.99.12 2024-01-13. NSM support; Linux/Windows/FreeBSD; PDF user manual. Help access to tutorial and PDF. Beta code in portfix branch.

Home Page: https://ahlstromcj.github.io/

License: Other

Makefile 9.55% Shell 8.33% C++ 68.70% QMake 0.35% M4 2.34% sed 0.03% C 6.36% NSIS 0.28% Batchfile 0.34% AGS Script 0.42% CSS 1.01% HTML 1.96% Vim Script 0.33% Nix 0.01%
midi sequencer live-play seq24 sequencer64 kepler34 seq66

seq66's Introduction

README for Seq66 0.99.12 2024-01-13

Seq66 MIDI sequencer/live-looper with a hardware-sampler grid interface; pattern banks, triggers, and playlists for song management; scale and chord aware piano-roll; song layout for creative composition; control/status via MIDI automation for live performance. Mute-groups enable/disable sets of patterns. Supports the Non/New Session Manager; can also run headless. Works in a space as small as 450x340 pixels (if window decoration removed). It does not support audio samples, just MIDI.

Seq66 A major refactoring of Sequencer64/Kepler34/Seq24 with modern C++ and new features. Linux and Windows users can build this application from source code. See the extensive INSTALL file. Includes a comprehensive PDF user-manual.

Support sites (still in progress):

*   https://ahlstromcj.github.io/
*   https://github.com/ahlstromcj/ahlstromcj.github.io/wiki

The release now includes an installer for the 64-bit Windows version of Seq66. Also included is initial work on getting Seq66 to build and run in FreeBSD using the Clang compiler.

Alt text

Major Features

User interface

*   Qt 5 (cross-platform).  Loop-button gird. Qt style-sheet support.
*   Drag-and-drop a MIDI file onto the main grid to load it.
*   Tabs and external windows for patterns, sets, mute-groups, song
    layout, event-editing, play-lists, and session information.
*   Low-frequency oscillator (LFO) to modify continuous controller
    and velocity values.
*   A "fixer" for expansion/compression/alignment of note patterns.
*   Colorable pattern slots; the color palette can be saved and modified.
*   Horizontal and vertical zoom in the pattern and song editors.
*   Extremely resizable.
*   A headless/daemon version can be built.

Configuration files

*   Supports configuration files: '.rc', '.usr', '.ctrl', '.mutes',
    '.playlist', '.drums' (note-mapping), '.palette', and Qt '.qss'.
*   Separates MIDI control and mute-group setting into their own files.
*   Unified keystroke and MIDI controls in the '.ctrl' file; defines MIDI
    controls for automation/display of Seq66 status in grid controllers
    (e.g. LaunchPad).  Sample '.ctrl' files provided for Launchpad Mini.

Non/New Session Manager

*   Support for NSM/New Session Manager, RaySession, Agordejo....
*   Handles starting, stopping, hiding, and session saving.
*   Displays details about the session.

Multiple Builds

*   ALSA/JACK: `qseq66` using an rtmidi-based library
*   Command-line/headless: `seq66cli`
*   PortMidi: `qpseq66`
*   Windows: `qpseq66.exe`

More Features

*   Supports configurable PPQN from 32 to 19200 (default is 192).
*   Transposable triggers to re-use patterns more comprehensively.
*   Song import/export from/to stock MIDI (SMF 0 or 1).
*   Highly configurable MIDI-based metronome.
*   Improved non-U.S. keyboard support.
*   Many demonstration and test MIDI files.
*   See the **NEWS** file or **RELNOTES**.

Internal

*   More consistent use of modern C++, auto, and lambda functions.
*   Additional performer callbacks to reduce polling.
*   A ton of clean-up and refactoring.

Seq66 uses a Qt 5 user-interface based on Kepler34 and the Seq66 rtmidi (Linux) and portmidi (Windows) engines. MIDI devices are detected, inaccessible devices are ignored, with playback (e.g. to the Windows wavetable synth). It is built easily via GNU Autotools, Qt Creator or qmake, using MingW. See the INSTALL file for build-from-source instructions for Linux or Windows, and using a conventional source tarball.

Recent Changes

As per Issue #123 "Would it be possible to have NEWS structured like
a changelog", the recent changes now appear at the top of the NEWS file.
Also see RELNOTES.

// vim: sw=4 ts=4 wm=2 et ft=markdown

seq66's People

Contributors

ahlstromcj avatar houston4444 avatar unidenifieduser avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

seq66's Issues

Pattern text readability on bright backgrounds

The default color for new patters is yellow - text being silver on this background is practically impossible to read.

image

I thin ka simple solution would be to draw the text in pure white, having a pure black rectangle underneath, drawn with 75% opacity against the tile background color

image

This will ensure the text is readable even on pure white background.
Same goes for the MIDI data drawn, but maybe let's tackle one thing at a time.

seq66/sequencer64 choice

I think I need some guidance about the differences between the two current implementations to chose which one I shall try building and start using.

I had been using seq24 a long time ago and was away from music making and also Linux for a while... now I want to get back into it, and am looking for using this great software, but the existence of two updated versions in parallel confuses me a bit on which to chose.

I think I understand seq66 has an added looper feature, which I assume means it can directly record/play audio files.
I am not sure if I need that feature, so I'd be interested to understand am I better of to try sequencer64 when I dont need audio looping?
Or am I generally better off using seq66 because it has an improved UI or something else while having the same midi features as sequencer64 and it might become the only version supported sometime?

Thanks in advance, and sorry if the answer is already written in some obvious place that I failed to see - I skimmed through readmes and docs and couldn't answer the questions myself, as both programs seem to be in active development, and I thought I ask before starting building the software (i dont find binaries for the seq66 version that is mentioned in the "about" text , so I'd like to build the latest tag).

White text on Yellow is unreadable

Hey!

I've recently updated Seq66 and I want to do some live music with it on my next livestream.

On my system (Manajro KDE, using Breeze-dark theme) the default pattern look is Yellow BG and White text - this is quite unreadable.

Is it possible to somehow make Yellow BG use black text instead?

Thanks!

Crash when recording note

  1. run qseq66 in gdb
  2. connect external midi device, set it as input for seq66
  3. "New pattern"
  4. "Edit pattern in window"
  5. make "MIDI record" active
  6. press key on external midi device
  7. new window pops up (pattern as in main window, see screenshot below)
  8. crash

image

gdb says:

Thread 1 "qseq66" received signal SIGSEGV, Segmentation fault.
0x00007ffff7a8cc6c in QWidgetItem::isEmpty() const () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
(gdb) bt
#0  0x00007ffff7a8cc6c in QWidgetItem::isEmpty() const () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#1  0x00007ffff7a8da9e in QWidgetItemV2::minimumSize() const () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#2  0x00007ffff7a85f55 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#3  0x00007ffff7a864c9 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#4  0x00007ffff7a86f91 in QGridLayout::minimumSize() const () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#5  0x00007ffff7a85f55 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#6  0x00007ffff7a87317 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#7  0x00007ffff7a880e7 in QGridLayout::setGeometry(QRect const&) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#8  0x00007ffff7a89618 in QLayoutPrivate::doResize(QSize const&) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#9  0x00007ffff7a8a72f in QLayout::activate() () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007ffff7aabcd7 in QWidgetPrivate::setVisible(bool) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#11 0x00007ffff72be551 in seq66::qslivegrid::create_one_button (this=0x55555593cc20, seqno=0) at qslivegrid.cpp:425
#12 0x00007ffff72bdcf2 in seq66::qslivegrid::create_loop_buttons (this=0x55555593cc20) at qslivegrid.cpp:283
#13 0x00007ffff72be733 in seq66::qslivegrid::paintEvent (this=0x55555593cc20) at qslivegrid.cpp:452
#14 0x00007ffff7aac2b6 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#15 0x00007ffff7b59d52 in QFrame::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007ffff7a69a66 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#17 0x00007ffff7a730f0 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#18 0x00007ffff763c93a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#19 0x00007ffff7aa4f4a in QWidgetPrivate::sendPaintEvent(QRegion const&) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007ffff7aa5799 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00007ffff7aa6423 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007ffff7aa54a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007ffff7aa6423 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#24 0x00007ffff7aa54a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007ffff7aa6423 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007ffff7aa6306 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#27 0x00007ffff7aa54a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#28 0x00007ffff7aa6423 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#29 0x00007ffff7aa54a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#30 0x00007ffff7aa6423 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#31 0x00007ffff7aa54a4 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#32 0x00007ffff7a7bbfc in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#33 0x00007ffff7a7bdc1 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#34 0x00007ffff7a94385 in QWidgetPrivate::syncBackingStore() () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#35 0x00007ffff7aaccac in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#36 0x00007ffff7bc1148 in QMainWindow::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#37 0x00007ffff7a69a66 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#38 0x00007ffff7a730f0 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#39 0x00007ffff763c93a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#40 0x00007ffff763f5b8 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#41 0x00007ffff7694f67 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#42 0x00007ffff5c41fbd in g_main_context_dispatch () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#43 0x00007ffff5c42240 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#44 0x00007ffff5c422e3 in g_main_context_iteration () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#45 0x00007ffff7694565 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#46 0x00007ffff763b4db in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#47 0x00007ffff7643246 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#48 0x00007ffff72e8619 in seq66::qt5nsmanager::run (this=0x7fffffffd820) at qt5nsmanager.cpp:146
#49 0x00005555555566ea in main (argc=1, argv=0x7fffffffd9b8) at seq66qt5.cpp:107

The window that appears is a little odd to me, but I'm not sure if that's the issue. I'd be happy to debug this more.

Song editor scrolling?

The ability to use the mousewheel to scroll up and down (and, with shift held down, left and right) would be handy. Thanks for all your work! :)

JACK Metadata MIDNAM support?

An implementation of the basic concept of LV2 MIDNAM has been around for a while. More recently there has been discussion on #lad, and, now JACK 2 has metadata implemented, Carla has started offering that MIDNAM information as metadata on the midi-in port for a connecting sequencer to use.

Failed to find matching components of a complete QT installation

Configure procedure fails with:

checking for Qt... yes:
    QT_CXXFLAGS=-pipe -O2 -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_PRINTSUPPORT_LIB -DQT_QMLTEST_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CONCURRENT_LIB -DQT_DBUS_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_TESTLIB_LIB -DQT_SQL_LIB -DQT_XML_LIB -DQT_CORE_LIB -DQT_TESTCASE_BUILDDIR="/tmp" -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtOpenGL -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -isystem /usr/include/x86_64-linux-gnu/qt5/QtQuickTest -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtConcurrent -isystem /usr/include/x86_64-linux-gnu/qt5/QtDBus -isystem /usr/include/x86_64-linux-gnu/qt5/QtQml -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtTest -isystem /usr/include/x86_64-linux-gnu/qt5/QtSql -isystem /usr/include/x86_64-linux-gnu/qt5/QtXml -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -isystem /usr/include/libdrm -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ 
    QT_DIR=/usr/lib/x86_64-linux-gnu
    QT_LIBS=-lQt5OpenGL -lQt5PrintSupport -lQt5QuickTest -lQt5Widgets -lQt5Gui -lQt5Concurrent -lQt5DBus -lQt5Qml -lQt5Network -lQt5Test -lQt5Sql -lQt5Xml -lQt5Core -lGL -lpthread  
    QT_MOC=/usr/bin/moc
    QT_RCC=/usr/bin/rcc
    QT_UIC=/usr/bin/uic
    QT_LRELEASE=/usr/bin/lrelease
    QT_LUPDATE=/usr/bin/lupdate
checking correct functioning of Qt installation... failure
configure: error: Failed to find matching components of a complete
                  Qt installation. Try using more options,
                  see ./configure --help.

Check dependencies

$ apt list libasound2-dev libjack-jackd2-dev liblash-compat-dev libpng-dev libatk-adaptor libgail-common automake autoconf g++ autoconf-archive make libtool qt5-default qtbase5-dev qtbase5-dev-tools qtdeclarative5-dev-tools qtdeclarative5-dev qtchooser qt5-qmake 
Listing... Done
autoconf/bionic,bionic,now 2.69-11 all [installed,automatic]
autoconf-archive/bionic,bionic,now 20170928-2 all [installed]
automake/bionic,bionic,now 1:1.15.1-3ubuntu2 all [installed]
g++/bionic-updates,bionic-security,now 4:7.4.0-1ubuntu2.3 amd64 [installed]
libasound2-dev/bionic-updates,now 1.1.3-5ubuntu0.5 amd64 [installed]
libatk-adaptor/bionic,now 2.26.2-1 amd64 [installed]
libgail-common/bionic,now 2.24.32-1ubuntu1 i386 [installed]
libjack-jackd2-dev/bionic,now 1.9.12~dfsg-2 amd64 [installed]
liblash-compat-dev/bionic,bionic 1+dfsg0-5.1 all
libpng-dev/bionic-updates,bionic-security,now 1.6.34-1ubuntu0.18.04.2 amd64 [installed]
libtool/bionic,bionic,now 2.4.6-2 all [installed]
make/bionic,now 4.1-9.1ubuntu1 amd64 [installed]
qt5-default/bionic-updates,bionic-security,now 5.9.5+dfsg-0ubuntu2.5 amd64 [installed]
qt5-qmake/bionic-updates,bionic-security,now 5.9.5+dfsg-0ubuntu2.5 amd64 [installed,automatic]
qtbase5-dev/bionic-updates,bionic-security,now 5.9.5+dfsg-0ubuntu2.5 amd64 [installed,automatic]
qtbase5-dev-tools/bionic-updates,bionic-security,now 5.9.5+dfsg-0ubuntu2.5 amd64 [installed,automatic]
qtchooser/bionic,now 64-ga1b6736-5 amd64 [installed]
qtdeclarative5-dev/bionic-updates,now 5.9.5-0ubuntu1.1 amd64 [installed]
qtdeclarative5-dev-tools/bionic-updates,now 5.9.5-0ubuntu1.1 amd64 [installed]

Linux Mint 19.3

Problems with Qt during compilation

Hi!

I'm trying to build Seq66 on Manjaro Linux (KDE edition) and I'm running into this problem:

checking for Qt... yes:
    QT_CXXFLAGS=-pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -I/usr/include/qt -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ 
    QT_DIR=/usr/lib
    QT_LIBS=/usr/lib/libQt5Widgets.so /usr/lib/libQt5Gui.so /usr/lib/libQt5Core.so -lGL -lpthread  
    QT_MOC=/usr/bin/moc
    QT_RCC=/usr/bin/rcc
    QT_UIC=/usr/bin/uic
    QT_LRELEASE=/usr/bin/lrelease
    QT_LUPDATE=/usr/bin/lupdate
checking correct functioning of Qt installation... failure
configure: error: Failed to find matching components of a complete
                  Qt installation. Try using more options,
                  see ./configure --help.

What can I do?

Wrong links in about dialog

In the file seq_qt5/forms/qsabout.ui in line 61 and 100 there is a wrong link location. When right clicking on the first link (copy link location) you get an email address from a guy called oli.
This needs to be changed, it may be a relict from somewhen.
Also it would be fine if you could directly click on the link with the left mouse button, as usual.

Mute Group does not toggle

Not sure if I have missed some configuration but I have the following problem:

I have configured into the .ctrl file the following in order to toggle the first mute group using a midi controller. It send a Control Change message (176 decimal or 0xb0 hex) with the CC number 27. When I press the pad 27 on my midi controller it unmute all the patterns configured in the first mute group but when I press the pad one more time it does not mute the patterns. I have configured the mute group using the mute group tab and include all patterns of the first row.

Also I have noticed that when I activate a mute group I'm not able to activate patters that don't belong to the activated mute group. It is normal?

My objetive is to emulate the "scene" function that some sequencers have (like Ableton Live). That function activate / unactivate an entire row just using one single button. So, if there is another way to emulate let me know it please.

Captura de pantalla de 2020-09-19 15-57-50
Captura de pantalla de 2020-09-19 15-59-19

Arm Build - Pattern editor doesnt open

Hi there . First and most important , thanks a lot for the effor required to maintain this project alive .
Ive recently discovered seq24 and the seq-quels. Im very inspired and hopefull with seq66.

Ive built it using the described methods on my raspberry pi . It all seems to be pretty alright, but when clicking on an empty pattern , I cant get the midi editor to display . Also the edit tab is empty no matter what .
I attach a log of the terminal and some screenshots .
Ive built it running on a raspberry pi 3B+ with Patchbox OS

Im not very experienced in such complex projects but Im here to give you a hand as I can where needed .

I dream with the possibility of an easy midi looping environment that can run from terminal for performance time :-)

imagen
imagen
seq66Patchboxlog.txt

JackClient::Execute error name = seq66_transport

Hi gang!

I have a sequencer64 install that works great, but I'm taking a shot at getting Seq66 working. The biggest problem now is that the Jack client registration seems to not work. It registers the ports in QJackCtl, however I cannot connect anything to the MIDI outputs, QJackCtl reports that

ERROR: Cannot connect ports owned by inactive clients: "seq66" is not active

and when starting ./qseq66 -t -v I get

SuspendRefNum error
JackClient::Execute error name = seq66_transport
[[JACK shutdown. JACK sync disabled.]]

As I said, when launching sequencer64 it works just fine, so there seems to be something wrong with this checkout. Cloned the repo an hour ago and built according to instructions in INSTALL.

change key map

HI,
I'm french so I'm using an azerty keyboard. I edited seq66.ctrl to change key map for my keyboard but key map is overwritten back to qwerty on app close. I created a seq66azerty.ctrl file, same thing happens.
Did I miss something?

thanks.

MIDI Input window doesn't handle large port counts

In my studio setup I've got about 16 physical midi ports connected to the system, which appear twice when a2j is running. Currently the MIDI input window attempts to fit all the present ports in the one fixed-sized canvas area, regardless of how many there are, resulting in an unreadable mess as it tries to squeeze 32 checkboxes on top of each other. It seems like this should have scrolling added to allow for setups with these larger port counts.

Also, before I modified my midi driver to remove some unused virtual ports from one of my interfaces, I noticed that it seemed like output ports after number 32 weren't working, they could be selected in the drop-down but wouldn't output. Unfortunately I can't confirm this now because I've changed my setup around, but it might be worth looking into.

"Record live sequence changes" functionality

First off, thanks for being so responsive with these issues/suggestions, it's really great!

Currently the "record live sequence changes" only adds patterns into the song timeline as whole loops, starting at the last pattern loop and ending at the next, and ignoring queueing completely (queueing a pattern just adds it to the song immediately). It seems to me that a live-oriented sequencer like Seq66 should have the ability to record a live performance as accurately as possible, so that a user can simply hit the record enable and do their live performance, knowing that can then go back and replay it exactly (if they want to do a recording session for example, or perform the same track while focussing entirely on knob tweaking etc.)

The song timeline already supports arbitrary start/end points for pattern "chunks", so it seems like this should already be possible. Thoughts?

Unreliable MIDI playback

I've tried doing some work with qseq66, but I had to go back to qseq64, as Sequencer66 would play only ~70% of the notes I put in. It seems like there's a random chance of a note not playing at all. For the first 2 seconds it plays well, and then it starts dropping notes.

Can anyone reproduce this issue?

I'm running qseq66 0.93.0 master 2021-04-17 (latest git from AUR) on Manajro Linux.

Connect midi devices by name

Currently midi devices are mapped by bus number. This is a problem when devices are added and removed, which happens a lot for me. Why not storing and connecting midi devices by name instead?

This could even be backwards-compatible: when the configuration file has a bus number, use that, if it is a string, connect by name.

JACK-midi self-connections

Hi there.

Why seq66 is self-connecting with every jack-midi port it founds, and is this really wanted ?
I like the way seq66 is providing inputs and outputs for everything.
But it could be a bit confusing in a large session with many elements, especially in a patchbay.

A possible solution could be to provide a midi output tab, just like the midi input one, and let users choose which ports they want to be created and auto-connected.

Managing pattern colors with a pallette

I've finally managed to install Seq66 on Manjaro (from AUR) and I would like to use it for my next monthly livestream (tomorrow).
So I'm gonna report some issues as I'm testing it and preparing :)

Currently the colors available for patterns are quite a mess.

The "dark colors" are not really darker, but are less saturated instead.
I think assigning colors would be way better done with a retractable pallet panel (i imagine it above the transport controls, but below the set grid), where the user can drag'n' drop the color to assign it.

The colors could be stored as pallet reference and changing the palette would change the colors visible.
The default palette could have a bunch of colors, but it'd be good if users can delete and add more colors if need be.

A system-provided color picker dialog could be used for colors allowing for Hue/Saturation/Value manipulation.

NSM not working here

Don't know if it suppose to work already, but starting qseq66 in NSM, make a change, save session, close session, open session.

Doesn't work here. Just a empty qseq66

Build issue in Linux

Using Debian Buster

after running

libtoolize
automake --add-missing
./configure --enable-release --enable-rtmidi

had this error

configure: creating ./config.status
config.status: error: cannot find input file: `Makefile.in'

resolved by the following...

aclocal
autoconf
libtoolize
automake --add-missing
./configure --enable-release --enable-rtmidi

README doesn't describe seq66

The README intro currently starts from a "this is a seq24/sequencer64 reboot" perspective, but does not actually explain what that format is. Maybe something like;

Seq66 is a MIDI sequencer and live looper with a hardware sampler-like grid pattern interface, MIDI automation for live performance, with sets and playlists for song management and a scale/chord aware piano-roll interface and song editor for creative composition. Based on the classic Seq24, Seq66 is a refactoring of the Qt version of Sequencer64 / Kepler34 with modern C++. Supports NSM (New Session Manager) on Linux, can also be run headless.

Arch Linux PKGBUILD file for seq66

I adapted a script from Christopher Arndt for to build seq66 on Arch Linux as a package. Since I'm not a package maintainer I just provide it here, so that it may be included in the build/install documentation or maybe an already active AUR package maintainer would like to take it and make it it "official". ;-)

# Adapted from a script of Christopher Arndt <aur -at- chrisarndt -dot- de>

_pkgname=seq66
pkgname="${_pkgname}-git"
pkgver=0.90.6.r230.2a73c11
pkgrel=1
pkgdesc="A live-looping sequencer with an Qt graphical interface (git version)"
arch=('i686' 'x86_64')
url="https://github.com/ahlstromcj/seq66"
license=('GPL2')
depends=('alsa-lib' 'jack' 'qt5-base')
makedepends=('git')
groups=('pro-audio')
provides=("${_pkgname}" "${_pkgname}=${pkgver//.r*/}")
conflicts=("${_pkgname}")
source=("${_pkgname}::git+https://github.com/ahlstromcj/${_pkgname}.git")
md5sums=('SKIP')

pkgver() {
  cd "${srcdir}/${_pkgname}"
  echo "$(git describe).r$(git rev-list --count HEAD).$(git rev-parse --short HEAD)"
}

build() {
  cd "${srcdir}/${_pkgname}"
  ./bootstrap
  ./configure --prefix=/usr --enable-rtmidi
  make
}

package() {
  cd "${srcdir}/${_pkgname}"
  make DESTDIR="${pkgdir}/" install
}

Unable to unmute loops after group learn

HI,
I found an issue with group learn. Loops learnt as muted in a mute group are mute blocked, pressing key or click on it has no effect. How to reproduce:

  • open seq66
  • open new project
  • create loop 0, draw random notes then close editor
  • do the same for loops 1 and 2
  • unmute loops 0 and 1
  • press learn key and assign a key, close success popup window
  • unmute loop 2
  • press play
  • press mute key you assigned : the 3 loops are muted (I expected here loop 2 muted)
  • press mute key again : loops 0 and 1 are armed, this is the correct state I saved and expected last step
  • press loop 2 key or click on it : loop stay muted
  • press stop : I can now unmute/mute loop 2 but if I press play the loop is automatically muted and blocked on start

I tried with several loops, all loops learnt as muted do the same

Vertical scroll Pattern Editor window binding defaults

Open loop Pattern Editor window. On mouse wheel scroll event

Expected:
Piano-roll and notes sheet scrolls vertically

Actual:
No visual effect

In Edit tab mouse wheel works as expected.

Seq66 ver. 0.90.1 from source

Build features:
C++ version 201402
Native JACK/ALSA (rtmidi) on
Event editor on
Vector for event list on
Follow progress bar on
Highlight edit pattern on
JACK session on
JACK support on
LASH support OBSOLETE, REMOVED
MIDI vector (vs list) on
Seq32 chord generator on
Seq32 LFO window on
Seq32 menu buttons on
Seq32 transpose on
BPM Tap button on
Solid piano-roll grid on
Optional pattern coloring on
Song performerance recording on
Box song selection on
Pause support on
Save time-sig/tempo on
Debug code on
64-bit support enabled

Options are enabled/disabled via the configure script,
libseq66/include/seq66_features.hpp, or the build-specific
seq66-config.h file in include or in include/qt/portmidi

Crash when closing Set Window

OS: Manjaro-Linux 5.7.9-1-MANJARO x86_64
Version: seq66-git 0.90.3.r181.70e9302-1 (master)

When opening the "Set" window and not closing it with the close button, but from the window manager's upper right close button, the program crashes.

NSM: save session

save session, should be renamed to just 'save' I think. I should just save the application, not the total NSM session. I assume it just saves seq66, but then the naming is somewhat confusing.

Play patterns from different sets at the same time ?

Hi,

Is it possible to play patterns from different sets at the same time ?

When I switch the active set from set 1 to set 2 (via the "Set No." control or the buttons in the "Set Master" window), all armed patterns from set 1 are muted.

I wanted each set to be a different song, and to be able to mix patterns from song N with patterns from song N+1 to progressively and seamlessly transition from one song to the other, a bit like in a DJ mix. Is that possible ? How ?

Thanks in advance

Configure fails

./configure --enable-release --enable-rtmidi
configure: WARNING: unrecognized options: --enable-release
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
/bin/bash: /home/debian/develop/seq66/aux-files/missing: No such file or directory
configure: WARNING: 'missing' script is too old or missing
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gcc-8... no
checking for gcc-7... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... gcc3
checking for g++-8... no
checking for g++-7... no
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking whether ln -s works... yes
checking whether to build with mingw32 for a Windows host... checking major version... 0
checking minor version... 90
checking patchlevel... 0
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @file support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for ANSI C header files... (cached) yes
checking getopt.h usability... yes
checking getopt.h presence... yes
checking for getopt.h... yes
checking for string.h... (cached) yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking stdarg.h usability... yes
checking stdarg.h presence... yes
checking for stdarg.h... yes
checking stdio.h usability... yes
checking stdio.h presence... yes
checking for stdio.h... yes
checking stddef.h usability... yes
checking stddef.h presence... yes
checking for stddef.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for limits.h... (cached) yes
checking ctype.h usability... yes
checking ctype.h presence... yes
checking for ctype.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking time.h usability... yes
checking time.h presence... yes
checking for time.h... yes
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking for sys/stat.h... (cached) yes
checking sys/sysctl.h usability... yes
checking sys/sysctl.h presence... yes
checking for sys/sysctl.h... yes
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking for unistd.h... (cached) yes
checking for an ANSI C-conforming const... yes
checking for doxygen... doxygen
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for jack >= 0.90.0... yes
checking jack/session.h usability... yes
checking jack/session.h presence... yes
checking for jack/session.h... yes
JACK session support enabled.
JACK support enabled.
configure: LASH support disabled.
checking for liblo... yes
sessions/nsm library build enabled.
checking for ALSA CFLAGS...
checking for ALSA LDFLAGS... -lasound -lm -ldl -lpthread
checking for libasound headers version >= 0.9.0... found.
checking for snd_ctl_open in -lasound... yes
rtmidi engine build enabled.
checking for ALSA CFLAGS...
checking for ALSA LDFLAGS... -lasound -lm -ldl -lpthread -lasound -lm -ldl -lpthread
checking for libasound headers version >= 0.9.0... found.
checking for snd_ctl_open in -lasound... (cached) yes
checking for X... libraries , headers
checking for gethostbyname... yes
checking for connect... yes
checking for remove... yes
checking for shmat... yes
checking for IceConnectionNumber in -lICE... yes
checking for Qt... yes:
QT_CXXFLAGS=-pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++
QT_DIR=/usr/lib/x86_64-linux-gnu
QT_LIBS=/usr/lib/x86_64-linux-gnu/libQt5Widgets.so /usr/lib/x86_64-linux-gnu/libQt5Gui.so /usr/lib/x86_64-linux-gnu/libQt5Core.so -lGL -lpthread
QT_MOC=/usr/bin/moc
QT_RCC=/usr/bin/rcc
QT_UIC=/usr/bin/uic
QT_LRELEASE=/usr/bin/lrelease
QT_LUPDATE=/usr/bin/lupdate
checking correct functioning of Qt installation... success
qt user-interface build enabled.
configure: PortMidi build disabled.
checking whether to enable gcov coverage tests... no
checking whether to enable gprof profiling... no
checking whether to enable gdb debugging... no
configure: Normal pthreads support
checking Running normal PTHREAD test... checking whether gcc is Clang... no
checking whether pthreads work with -pthread... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking whether more special flags are required for pthreads... no
checking for PTHREAD_PRIO_INHERIT... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: error: cannot find input file: `Makefile.in'

make install doesn't install files

This PKGBUILD completes without error, but it also doesn't actually install any files to the pkgdir to get compressed and archived;

_pkgname=seq66
pkgname="${_pkgname}-git"
pkgver=0.90.4.r186.f4f1619
pkgrel=1
pkgdesc="A live-looping sequencer with an interface similar to hardware sequencers"
arch=('i686' 'x86_64')
url="https://github.com/ahlstromcj/seq66"
license=('GPL2')
depends=('jack' 'qt5-base' 'gambas3-gb-qt5-opengl')
makedepends=('git')
groups=('pro-audio')
provides=("${_pkgname}" "${_pkgname}=${pkgver//.r*/}")
conflicts=("${_pkgname}")
source=("${_pkgname}::git+https://github.com/ahlstromcj/${_pkgname}.git#branch=optimizing")
md5sums=('SKIP')

pkgver() {
  cd "${srcdir}/${_pkgname}"

  local ver=$(tail -n 1 VERSION)
  # replace alpha chars with a dot
  echo "$ver.r$(git rev-list --count HEAD).$(git rev-parse --short HEAD)"
}

build() {
  cd "${srcdir}/${_pkgname}"
  qmake -makefile -recursive "CONFIG += rtmidi" seq66.pro
  make
}

package() {
  cd "${srcdir}/${_pkgname}"
  make DESTDIR="${pkgdir}/" install
}

Edit: here's the output when running;

...
==> Starting package()...
cd libseq66/ && ( test -e Makefile || /usr/bin/qmake -o Makefile /home/milk/state/pkgs/mine/seq66-git/src/seq66/libseq66/libseq66.pro 'CONFIG += rtmidi' ) && make -f Makefile install
make[1]: Entering directory '/home/milk/state/pkgs/mine/seq66-git/src/seq66/libseq66'
make[1]: Nothing to be done for 'install'.
make[1]: Leaving directory '/home/milk/state/pkgs/mine/seq66-git/src/seq66/libseq66'
cd libsessions/ && ( test -e Makefile || /usr/bin/qmake -o Makefile /home/milk/state/pkgs/mine/seq66-git/src/seq66/libsessions/libsessions.pro 'CONFIG += rtmidi' ) && make -f Makefile install
make[1]: Entering directory '/home/milk/state/pkgs/mine/seq66-git/src/seq66/libsessions'
make[1]: Nothing to be done for 'install'.
make[1]: Leaving directory '/home/milk/state/pkgs/mine/seq66-git/src/seq66/libsessions'
cd seq_rtmidi/ && ( test -e Makefile || /usr/bin/qmake -o Makefile /home/milk/state/pkgs/mine/seq66-git/src/seq66/seq_rtmidi/seq_rtmidi.pro 'CONFIG += rtmidi' ) && make -f Makefile install
make[1]: Entering directory '/home/milk/state/pkgs/mine/seq66-git/src/seq66/seq_rtmidi'
make[1]: Nothing to be done for 'install'.
make[1]: Leaving directory '/home/milk/state/pkgs/mine/seq66-git/src/seq66/seq_rtmidi'
cd seq_qt5/ && ( test -e Makefile || /usr/bin/qmake -o Makefile /home/milk/state/pkgs/mine/seq66-git/src/seq66/seq_qt5/seq_qt5.pro 'CONFIG += rtmidi' ) && make -f Makefile install
make[1]: Entering directory '/home/milk/state/pkgs/mine/seq66-git/src/seq66/seq_qt5'
make[1]: Nothing to be done for 'install'.
make[1]: Leaving directory '/home/milk/state/pkgs/mine/seq66-git/src/seq66/seq_qt5'
cd Seq66qt5/ && ( test -e Makefile || /usr/bin/qmake -o Makefile /home/milk/state/pkgs/mine/seq66-git/src/seq66/Seq66qt5/Seq66qt5.pro 'CONFIG += rtmidi' ) && make -f Makefile install
make[1]: Entering directory '/home/milk/state/pkgs/mine/seq66-git/src/seq66/Seq66qt5'
make[1]: Nothing to be done for 'install'.
make[1]: Leaving directory '/home/milk/state/pkgs/mine/seq66-git/src/seq66/Seq66qt5'
==> Tidying install...
...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.