Giter Club home page Giter Club logo

sysexxer-ng's Introduction

sysexxer-ng

A universal tool to exchange MIDI system-exclusive data.

It's a rewrite from scratch of sysexxer.

Build Status

Documentation page (in French): http://linuxmao.org/Sysexxer-NG

Building

Debian Strech

Build dependencies are: cmake, gettext, libasound2-dev, libfltk1.3-dev, and libjack-jackd2-dev or libjack-dev

To launch the build, you can use:

git clone --recursive https://github.com/linuxmao-org/sysexxer-ng.git
mkdir sysexxer-ng/build
cd sysexxer-ng/build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
cmake --build .

sysexxer-ng's People

Contributors

jpcima avatar trebmuh avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

noisecode3

sysexxer-ng's Issues

ideas

  1. I see no point in sending or reviving the sysex message to the program itself.
  2. think there should be gnu --help -h -v flags.
  3. be able to set interface and ports from terminal and also a "send timidly" flag for something like a session manager script would be nice. Its simple terminal stuff but it will works. (maybe real session management too )

here's the crazy part and it's a maybe
4. add more then one port for out and be able to load more then one file. more send buttons.
5. add midi in port for normal MIDI keys/MIDICC to activate the sends in real time (is it possible? latency/cpu )

its just my ideas if you all dont like it or think its unnecessary you can close this.
I would like to do some of it myself, I think it's fun and I like to do something more objective than audio dsp right now.

edit: oh I see you have filename as argument and it remembers the configuration, okej

Doesn't build on fltk 1.1

Let's see if we can make the software compatible.
This was the build output:

$ cmake ..
-- The C compiler identification is GNU 6.3.0
-- The CXX compiler identification is GNU 6.3.0
-- Check for working C compiler: /home/rgareus/bin/colorgcc/cc
-- Check for working C compiler: /home/rgareus/bin/colorgcc/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /home/rgareus/bin/colorgcc/c++
-- Check for working CXX compiler: /home/rgareus/bin/colorgcc/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib/x86_64-linux-gnu/libX11.so
-- Found FLTK: fltk  
-- Found Intl: /usr/include  
-- Found Gettext: /usr/bin/msgmerge (found version "0.19.8.1") 
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29") 
-- Checking for module 'alsa'
--   Found alsa, version 1.1.3
-- Checking for module 'jack'
--   Found jack, version 1.9.11
-- Boost version: 1.62.0
-- Found the following Boost libraries:
--   filesystem
--   system
-- Found Curses: /usr/lib/x86_64-linux-gnu/libcurses.so  
-- Checking for module 'rtmidi'
--   No package 'rtmidi' found
-- rtmidi is missing, NOT building program fmidi-play.
-- Performing Test fmidi_HAVE_FTS
-- Performing Test fmidi_HAVE_FTS - Success
-- Configuring done
-- Generating done
-- Build files have been written to: /home/rgareus/src/sysexxer-ng/build
rgareus@soyuz:~/src/sysexxer-ng/build$ make
Scanning dependencies of target RtMidi
[  3%] Building CXX object CMakeFiles/RtMidi.dir/thirdparty/rtmidi/RtMidi.cpp.o
/home/rgareus/src/sysexxer-ng/thirdparty/rtmidi/RtMidi.cpp: In member function ‘virtual void MidiInJack::setPortName(const string&)’:
/home/rgareus/src/sysexxer-ng/thirdparty/rtmidi/RtMidi.cpp:3117:3: warning: ‘int jack_port_set_name(jack_port_t*, const char*)’ is deprecated [-Wdeprecated-declarations]
   jack_port_set_name( data->port, portName.c_str() );
   ^~~~~~~~~~~~~~~~~~
In file included from /home/rgareus/src/sysexxer-ng/thirdparty/rtmidi/RtMidi.cpp:2882:0:
/usr/include/jack/jack.h:899:5: note: declared here
 int jack_port_set_name (jack_port_t *port, const char *port_name) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
     ^~~~~~~~~~~~~~~~~~
/home/rgareus/src/sysexxer-ng/thirdparty/rtmidi/RtMidi.cpp:3117:52: warning: ‘int jack_port_set_name(jack_port_t*, const char*)’ is deprecated [-Wdeprecated-declarations]
   jack_port_set_name( data->port, portName.c_str() );
                                                    ^
In file included from /home/rgareus/src/sysexxer-ng/thirdparty/rtmidi/RtMidi.cpp:2882:0:
/usr/include/jack/jack.h:899:5: note: declared here
 int jack_port_set_name (jack_port_t *port, const char *port_name) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
     ^~~~~~~~~~~~~~~~~~
/home/rgareus/src/sysexxer-ng/thirdparty/rtmidi/RtMidi.cpp: In member function ‘virtual void MidiOutJack::setPortName(const string&)’:
/home/rgareus/src/sysexxer-ng/thirdparty/rtmidi/RtMidi.cpp:3342:3: warning: ‘int jack_port_set_name(jack_port_t*, const char*)’ is deprecated [-Wdeprecated-declarations]
   jack_port_set_name( data->port, portName.c_str() );
   ^~~~~~~~~~~~~~~~~~
In file included from /home/rgareus/src/sysexxer-ng/thirdparty/rtmidi/RtMidi.cpp:2882:0:
/usr/include/jack/jack.h:899:5: note: declared here
 int jack_port_set_name (jack_port_t *port, const char *port_name) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
     ^~~~~~~~~~~~~~~~~~
/home/rgareus/src/sysexxer-ng/thirdparty/rtmidi/RtMidi.cpp:3342:52: warning: ‘int jack_port_set_name(jack_port_t*, const char*)’ is deprecated [-Wdeprecated-declarations]
   jack_port_set_name( data->port, portName.c_str() );
                                                    ^
In file included from /home/rgareus/src/sysexxer-ng/thirdparty/rtmidi/RtMidi.cpp:2882:0:
/usr/include/jack/jack.h:899:5: note: declared here
 int jack_port_set_name (jack_port_t *port, const char *port_name) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;
     ^~~~~~~~~~~~~~~~~~
[  7%] Linking CXX static library libRtMidi.a
[  7%] Built target RtMidi
Scanning dependencies of target ring_buffer
[ 11%] Building CXX object CMakeFiles/ring_buffer.dir/thirdparty/ring_buffer/ring_buffer.cpp.o
[ 14%] Linking CXX static library libring_buffer.a
[ 14%] Built target ring_buffer
Scanning dependencies of target fmidi
[ 18%] Building CXX object thirdparty/fmidi/CMakeFiles/fmidi.dir/sources/fmidi/u_memstream.cc.o
[ 22%] Building CXX object thirdparty/fmidi/CMakeFiles/fmidi.dir/sources/fmidi/u_stdio.cc.o
[ 25%] Building CXX object thirdparty/fmidi/CMakeFiles/fmidi.dir/sources/fmidi/file/read_smf.cc.o
[ 29%] Building CXX object thirdparty/fmidi/CMakeFiles/fmidi.dir/sources/fmidi/file/write_smf.cc.o
[ 33%] Building CXX object thirdparty/fmidi/CMakeFiles/fmidi.dir/sources/fmidi/file/read_xmi.cc.o
[ 37%] Building CXX object thirdparty/fmidi/CMakeFiles/fmidi.dir/sources/fmidi/file/identify.cc.o
[ 40%] Building CXX object thirdparty/fmidi/CMakeFiles/fmidi.dir/sources/fmidi/fmidi_internal.cc.o
[ 44%] Building CXX object thirdparty/fmidi/CMakeFiles/fmidi.dir/sources/fmidi/fmidi_seq.cc.o
[ 48%] Building CXX object thirdparty/fmidi/CMakeFiles/fmidi.dir/sources/fmidi/fmidi_util.cc.o
[ 51%] Linking CXX static library libfmidi.a
[ 51%] Built target fmidi
Scanning dependencies of target simpleini
[ 55%] Building CXX object CMakeFiles/simpleini.dir/thirdparty/simpleini/ConvertUTF.cpp.o
[ 59%] Linking CXX static library libsimpleini.a
[ 59%] Built target simpleini
Scanning dependencies of target sysexxer-ng
[ 62%] Building CXX object CMakeFiles/sysexxer-ng.dir/sources/main.cc.o
/home/rgareus/src/sysexxer-ng/sources/main.cc: In function ‘int main(int, char**)’:
/home/rgareus/src/sysexxer-ng/sources/main.cc:57:29: error: no matching function for call to ‘Fl_RGB_Image::Fl_RGB_Image(Fl_Pixmap*)’
     Fl_RGB_Image image(&icon);
                             ^
In file included from /usr/include/FL/Fl_Menu_Item.H:32:0,
                 from /usr/include/FL/Fl_Menu_.H:34,
                 from /usr/include/FL/Fl_Choice.H:31,
                 from /home/rgareus/src/sysexxer-ng/sources/window.h:15,
                 from /home/rgareus/src/sysexxer-ng/sources/main.cc:6:
/usr/include/FL/Fl_Image.H:94:3: note: candidate: Fl_RGB_Image::Fl_RGB_Image(const uchar*, int, int, int, int)
   Fl_RGB_Image(const uchar *bits, int W, int H, int D=3, int LD=0) :
   ^~~~~~~~~~~~
/usr/include/FL/Fl_Image.H:94:3: note:   candidate expects 5 arguments, 1 provided
/home/rgareus/src/sysexxer-ng/sources/main.cc:58:5: error: ‘default_icon’ is not a member of ‘Fl_Window’
     Fl_Window::default_icon(&image);
     ^~~~~~~~~
CMakeFiles/sysexxer-ng.dir/build.make:62: recipe for target 'CMakeFiles/sysexxer-ng.dir/sources/main.cc.o' failed
make[2]: *** [CMakeFiles/sysexxer-ng.dir/sources/main.cc.o] Error 1
CMakeFiles/Makefile2:144: recipe for target 'CMakeFiles/sysexxer-ng.dir/all' failed
make[1]: *** [CMakeFiles/sysexxer-ng.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

cannot build

trying to build from a Linux Mint with Jack, i get:

--   Found jack, version 1.9.20
CMake Error at CMakeLists.txt:57 (add_subdirectory):
  The source directory

    /media/menno/datae/temp6/sysexxer-ng-master/thirdparty/fmidi

  does not contain a CMakeLists.txt file.


-- Configuring incomplete, errors occurred!

And, indeed, i do not see a CMakeLists.txt file.
Am i doingsomething wrong?

Please do not translate JACK port names, use pretty-name JACK metadatas !

Hello !
I just saw at Houston4444/RaySession#112 (comment) that this program translate the JACK port names. The problem is that session managers (or simple shell scripts) will memorize JACK connections with their port names. Translate port names means that sessions shared between strangers are broken.
Instead you can use JACK pretty-name metadata https://jackaudio.org/metadata/ .

I also wonder why the two MIDI ports aren't in the same group.

Sortie Sysexxer:Sortie MIDI Sysexxer
Entrée Sysexxer:Entrée MIDI Sysexxer

and not simply:

Sysexxer:midi out
Sysexxer:midi in

Cheers
Mathieu

Version 1.0

🇺🇸 Release the first stable version of Sysexxer-NG.

🇫🇷 Livrer la première version stable de Sysexxer-NG.

Transmit custom messages

(23:55:23) at0m: jpcima: can it sollicit dumps, too? ie. many devices have some sysex command that makes them dump
(23:57:07) at0m: reading the docs at http://linuxmao.org/Sysexxer-NG now, seems it cannot. doesn't matter much, long as it can save the .syx
(23:57:34) jpcima: there isn't protocol knowledge about any particular device right now
(23:58:00) jpcima: but I thought we can put together a kind of database
(23:58:28) at0m: yea that would be lot of work, to collect all that into a database. however, given the option, i would find out for my devices..
(23:59:31) at0m: i don't expect you or anyone else to research 1000s of devices sysex dump request codes
(07/01/2019 00:00:19) jpcima: request me a particular device, and I will add it
(00:00:41) at0m: but sending a sollicitation sysex code could be implemented as a trigger, combining that with saving the sysex could be nice
(00:01:10) at0m: then let the users enter their own sollicitation strings

Best GUI-Based GNU/Linux SysEx Sender and Receiver

I spent a few days trying to figure out what is the best free and open source GUI based program for GNU/Linux that can send and receive SysEx dumps with my Behringer RD-8. Sysexxer-NG is the best! Bravo!

missing file

I've clone the repo then I've done: git submodule update --init

It seems libfmt-dev is required, but after I've added it, during compilation I got:

[ 22%] Building CXX object thirdparty/fmidi/CMakeFiles/fmidi.dir/sources/fmidi/file/read_smf.cc.o
In file included from /temp/github/sysexxer-ng/thirdparty/fmidi/sources/fmidi/file/read_smf.cc:11:0:
/usr/include/fmt/format.h:4007:11: fatal error: format.cc: No such file or directory

include "format.cc"

       ^~~~~~~~~~~

compilation terminated.

Does not compile - utility.cc.o Archlinux

Fail to compile on Archlinux

/sysexxer-ng/sources/utility.cc:8:44: erreur: le type retourné « std::string » {aka « class std::__cxx11::basic_string »} est incomplet
8 | std::string astrprintf(const char fmt, ...)
| ^
/sysexxer-ng/sources/utility.cc:8:13: erreur: rend ambigüe la nouvelle déclaration de « void astrprintf(const char
, ...) »
8 | std::string astrprintf(const char fmt, ...)
| ^~~~~~~~~~
Dans le fichier inclus depuis /sysexxer-ng/sources/utility.cc:6:
/sysexxer-ng/sources/utility.h:22:13: note: ancienne déclaration « std::string astrprintf(const char
, ...) »
22 | std::string astrprintf(const char fmt, ...);
| ^~~~~~~~~~
sysexxer-ng/sources/utility.cc: Dans la fonction « void astrprintf(const char
, ...) »:
/sysexxer-ng/sources/utility.cc:12:17: erreur: la variable « std::string string » a un initialiseur mais a un type incomplet
12 | std::string string = vastrprintf(fmt, ap);
| ^~~~~~
/sysexxer-ng/sources/utility.cc:12:45: erreur: utilisation invalide du type incomplet « std::string » {aka « class std::__cxx11::basic_string »}
12 | std::string string = vastrprintf(fmt, ap);
| ^
Dans le fichier inclus depuis /usr/include/c++/10.1.0/iosfwd:39,
depuis /usr/include/c++/10.1.0/memory:74,
depuis /home/cyril/AUR/sysexxer-ng/sources/utility.h:6,
depuis /home/cyril/AUR/sysexxer-ng/sources/utility.cc:6:
/usr/include/c++/10.1.0/bits/stringfwd.h:74:11: note: déclaration de « std::string » {aka « class std::__cxx11::basic_string »}
74 | class basic_string;
| ^~~~~~~~~~~~
/sysexxer-ng/sources/utility.cc: Au niveau global:
/sysexxer-ng/sources/utility.cc:17:52: erreur: le type retourné « std::string » {aka « class std::__cxx11::basic_string »} est incomplet
17 | std::string vastrprintf(const char fmt, va_list ap)
| ^
/sysexxer-ng/sources/utility.cc:17:13: erreur: rend ambigüe la nouvelle déclaration de « void vastrprintf(const char
, __va_list_tag*) »
17 | std::string vastrprintf(const char fmt, va_list ap)
| ^~~~~~~~~~~
Dans le fichier inclus depuis /sysexxer-ng/sources/utility.cc:6:
/sysexxer-ng/sources/utility.h:23:13: note: ancienne déclaration « std::string vastrprintf(const char
, __va_list_tag*) »
23 | std::string vastrprintf(const char *fmt, va_list ap);
| ^~~~~~~~~~~
make[2]: *** [CMakeFiles/sysexxer-ng.dir/build.make:174 : CMakeFiles/sysexxer-ng.dir/sources/utility.cc.o] Erreur 1
make[1]: *** [CMakeFiles/Makefile2:268 : CMakeFiles/sysexxer-ng.dir/all] Erreur 2
make: *** [Makefile:150 : all] Erreur 2

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.