brummer10 / mamba Goto Github PK
View Code? Open in Web Editor NEWVirtual Midi keyboard and Midi Live Looper for Jack Audio Connection Kit
License: BSD Zero Clause License
Virtual Midi keyboard and Midi Live Looper for Jack Audio Connection Kit
License: BSD Zero Clause License
Here is the error I've got:
XSynth.cpp: In member function 'void xsynth::XSynth::print_soundfont()':
XSynth.cpp:102:5: error: 'fluid_sfont_iteration_start' was not declared in this scope; did you mean 'fluid_synth_tuning_iteration_start'?
102 | fluid_sfont_iteration_start(sfont);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
| fluid_synth_tuning_iteration_start
XSynth.cpp:104:21: error: 'fluid_sfont_iteration_next' was not declared in this scope; did you mean 'fluid_synth_tuning_iteration_next'?
104 | while((preset = fluid_sfont_iteration_next(sfont)) != NULL) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| fluid_synth_tuning_iteration_next
XSynth.cpp:106:45: error: 'fluid_preset_get_banknum' was not declared in this scope; did you mean 'fluid_event_get_bank'?
106 | snprintf(inst, 100, "%03d %03d %s", fluid_preset_get_banknum(preset) + offset,
| ^~~~~~~~~~~~~~~~~~~~~~~~
| fluid_event_get_bank
XSynth.cpp:107:29: error: 'fluid_preset_get_num' was not declared in this scope; did you mean 'fluid_player_get_bpm'?
107 | fluid_preset_get_num(preset),fluid_preset_get_name(preset));
| ^~~~~~~~~~~~~~~~~~~~
| fluid_player_get_bpm
XSynth.cpp:107:58: error: 'fluid_preset_get_name' was not declared in this scope; did you mean 'fluid_player_get_bpm'?
107 | fluid_preset_get_num(preset),fluid_preset_get_name(preset));
| ^~~~~~~~~~~~~~~~~~~~~
| fluid_player_get_bpm
XSynth.cpp: In member function 'int xsynth::XSynth::get_instrument_for_channel(int)':
XSynth.cpp:143:41: error: 'fluid_preset_get_banknum' was not declared in this scope; did you mean 'fluid_event_get_bank'?
143 | snprintf(inst, 100, "%03d %03d %s", fluid_preset_get_banknum(preset) + offset,
| ^~~~~~~~~~~~~~~~~~~~~~~~
| fluid_event_get_bank
XSynth.cpp:144:25: error: 'fluid_preset_get_num' was not declared in this scope; did you mean 'fluid_player_get_bpm'?
144 | fluid_preset_get_num(preset),fluid_preset_get_name(preset));
| ^~~~~~~~~~~~~~~~~~~~
| fluid_player_get_bpm
XSynth.cpp:144:54: error: 'fluid_preset_get_name' was not declared in this scope; did you mean 'fluid_player_get_bpm'?
144 | fluid_preset_get_num(preset),fluid_preset_get_name(preset));
| ^~~~~~~~~~~~~~~~~~~~~
| fluid_player_get_bpm
On Fedora 32, fluidsynth 1.1.11 is installed.
Hello,
I tried mamba binary today on Devuan Daedalus.
I installed libsmf0 (1.3-4) and ran the binary. Got this error message:
Segmentation fault
Without any further indication.
Any suggestions as to how troubleshoot this issue?
When there are two instances of Mamba running in a session, you don't know which is which. client_id/jack_id isn't displayed in the audio connections.
Hi, thank you for Mamba! I just tried to build git HEAD on Fedora 38 x86_64 and the build fails with:
XAlsa.cpp: In member function 'void xalsa::XAlsa::xalsa_get_ports(std::vector<std::__cxx11::basic_string >, std::vector<std::__cxx11::basic_string >)':
XAlsa.cpp:157:34: error: no matching function for call to 'std::vector<std::__cxx11::basic_string >::push_back(char [256])'
157 | iports->push_back(port);
| ~~~~~~~~~~~~~~~~~^~~~~~
Any idea how to solve this error?
Just a quick wild idea. Make Mamba as LV2 plugin, which you can load in Ingen (with embedded GUI)
Build fails:
c++: warning: optimization flag '-fstrength-reduce' is not supported [-Wignored-optimization-argument]
c++: warning: optimization flag '-fschedule-insns' is not supported [-Wignored-optimization-argument]
In file included from MidiKeyBoard.cpp:22:
In file included from ./MidiKeyBoard.h:55:
In file included from /usr/ports/audio/mamba/work/Mamba-2.6/libxputty/xputty/header/xwidgets.h:40:
In file included from /usr/ports/audio/mamba/work/Mamba-2.6/libxputty/xputty/header/widgets/xbutton.h:26:
In file included from /usr/ports/audio/mamba/work/Mamba-2.6/libxputty/xputty/header/xputty.h:200:
In file included from /usr/ports/audio/mamba/work/Mamba-2.6/libxputty/xputty/header/xwidget.h:34:
/usr/ports/audio/mamba/work/Mamba-2.6/libxputty/xputty/header/xwidget-platform.h:84:1: error: unknown type name 'Display'
84 | Display *os_open_display(char *display_name);
| ^
/usr/ports/audio/mamba/work/Mamba-2.6/libxputty/xputty/header/xwidget-platform.h:91:23: error: unknown type name 'Display'
91 | void os_close_display(Display *dpy);
| ^
/usr/ports/audio/mamba/work/Mamba-2.6/libxputty/xputty/header/xwidget-platform.h:101:1: error: unknown type name 'Window'
101 | Window os_get_root_window(Xputty *main, int flag);
| ^
/usr/ports/audio/mamba/work/Mamba-2.6/libxputty/xputty/header/xwidget-platform.h:119:39: error: unknown type name 'Window'
119 | void os_translate_coords(Widget_t *w, Window from_window, Window to_window,
| ^
/usr/ports/audio/mamba/work/Mamba-2.6/libxputty/xputty/header/xwidget-platform.h:119:59: error: unknown type name 'Window'
119 | void os_translate_coords(Widget_t *w, Window from_window, Window to_window,
| ^
/usr/ports/audio/mamba/work/Mamba-2.6/libxputty/xputty/header/xwidget-platform.h:147:21: error: unknown type name 'Display'
147 | void os_move_window(Display *dpy, Widget_t *w, int x, int y);
| ^
/usr/ports/audio/mamba/work/Mamba-2.6/libxputty/xputty/header/xwidget-platform.h:156:23: error: unknown type name 'Display'
Version: 2.6
FreeBSD 14.0
Hi,
I've found that Mamba has the cool feature to capture keypress being unfocused. But to toggle that option you have to use mouse.
What if to add some hotkey for switch on/off "Grab keyboard"?
I suppose that "on" will work while Mamba is focused only, and "off" when it's not in front too.
https://sevish.com/scaleworkshop/ allow to export custom scales.
By using the menu New -> "Subharmonic series segments" you can test an example of micro-tonale scale as used in Arabian, Balkan Indian and Turkish musics.
Scala (.scl files) is probably a great reference in micro-tonal music research softwares, but I don't know much more about all those formats.
Sorry, but mamba hangs when trying to rm in non-session-manager. It gets killed, but not removed it seems (at session close for instance).
edit: mamba latest git version
When I close mamba from it's own gui, while running in non-session-manager, it ... closes/stops. But I think it would be better if it would hide in that case when under nsm and let the user use the nsm gui to stop it.
When trying to load sf file, you need to use your mouse and your mouse only. Would be nice if I could enter the path with my computer keyboard.
Mamba saves and restore GUI state in NSM when saving a session. This is according to the original Non-Session-Manager (NSM) api.
I didn't fully made my mind up yet about what it is best behavior with regard to show/hide gui in NSM, somehow, it should be simple stupid and consequent. But now Mamba is behaving differently then most other applications.
NSM forks api now hides at launch. This is how plugins do it I think. A standalone application is no plugin though, normally when you start a standalone application, it shows up. That's what people expect.
It might not be bad though, to hide guis by default when opening a session. The default could then still be to show at new client launch. Like I said, I'm undecided at the moment here.
Anyway, for this particular behavior of Mamba, it might be a good thing if users can configure how they want Mamba to behave: save GUI state between session, or show or hide when opening a session.
would be a great feature to have, particularly for experimenting with different keyboard layouts for alternative tunings and such without having to remap it every time
On my laptop on librazik3, mamba displays a GUI after at least 7-8 seconds, I think it is very long for this kind of software.
On my desktop on Ubuntu18.04, GUI is displayed in the two first seconds, what is largely acceptable.
There is a little performance difference between the two hardwares, but I can't think this explains the difference.
Note: the stderr messages is written only when GUI appears.
Samplerate 48000Hz
Buffersize is 256 samples
jack running with realtime priority
Recently updated from Mamba 2.3 to 2.5 and noticed the file ~/.configMamba.conf
being created, I suspect a /
is missing somewhere and it should be ~/.config/Mamba.conf
.
Hi, using Mamba 2.2 on Fedora 33 / GNOME 3.38. I have key repeat enabled for typing purposes.
When I hold a key in Mamba, it repeats (repeatedly triggering the note).
In comparison, in other virtual MIDI keyboards like jack-keyboard, trackers, and other music software, it does not repeat. It behaves like a piano key (hold = sustain).
Is it possible for Mamba to also ignore key repeat and behave like a piano key?
Hi. Sorry to re-engage the issue counter ;)
Mamba always crashes with a segfault when it is started from RaySession or New Session Manager.
if I start from external (RS or NSM open, with a session loaded) this way:
NSM_URL=osc.udp://my_machine:16187/ mamba
result is :
NSM: Successfully registered. NSM says: Well hello, stranger. Welcome to the party.Erreur de segmentation
"Erreur de segmentation" means segfault in french.
System: Librazik 3
Mamba version: 2.1
Hello,
I am trying to compile mamba on fedora 34 beta with gcc-11 and I met the following error message:
/usr/include/smf.h:217:1: note: 'extern "C"' linkage started here
217 | extern "C" {
| ^~~~~~~~~~
In file included from /usr/include/glib-2.0/glib/gatomic.h:31,
from /usr/include/glib-2.0/glib/gthread.h:32,
from /usr/include/glib-2.0/glib/gasyncqueue.h:32,
from /usr/include/glib-2.0/glib.h:32,
from /usr/include/smf.h:221,
from Mamba.h:22,
from Mamba.cpp:22:
/usr/include/c++/11/type_traits:1250:3: error: template with C linkage
1250 | template<typename _Tp>
| ^~~~~~~~
In file included from Mamba.h:22,
from Mamba.cpp:22:
Build fails:
c++: warning: optimization flag '-fstrength-reduce' is not supported [-Wignored-optimization-argument]
c++: warning: optimization flag '-fschedule-insns' is not supported [-Wignored-optimization-argument]
In file included from MidiKeyBoard.cpp:22:
./MidiKeyBoard.h:55:10: fatal error: 'xwidgets.h' file not found
55 | #include "xwidgets.h"
| ^~~~~~~~~~~~
1 error generated.
This file is present, just not found:
$ find . -name xwidgets.h
./work/Mamba-2.6/libxputty/xputty/header/xwidgets.h
Version: 2.6
FreeBSD 14.0
You can easily switch channel, bank etc. in Mamba, but for mapping different octave you need to go to the menu, so you need 3 clicks to change it (if you know where to do it). Would be nice if that would be the same as for channel, bank etc.
that would be amazing :D
Hi,
I downloaded the prebuilt binary and installed all the dependencies. But when I try run mamba
I get an error message. Mamba seeks the library libfluidsynth.so.2
but in Pop!_OS 22.04 I have the version 3: libfluidsynth.so.3
.
How to resolve this inconvenience?
$ gcc -v
Es werden eingebaute Spezifikationen verwendet.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.1/lto-wrapper
Ziel: x86_64-pc-linux-gnu
Konfiguriert mit: /build/gcc/src/gcc/configure --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror
Thread-Modell: posix
Unterstützte LTO-Kompressionsalgorithmen: zlib zstd
gcc-Version 12.2.1 20230201 (GCC)
$ gdb src/build/mamba
GNU gdb (GDB) 13.1
[...]
]Reading symbols from src/build/mamba...
(gdb) run
Starting program: /home/chris/work/archlinux-proaudio/packages/mamba/src/Mamba_2.4/src/build/mamba
This GDB supports auto-downloading debuginfo from the following URLs:
<https://debuginfod.archlinux.org>
Enable debuginfod for this session? (y or [n]) y
Debuginfod has been enabled.
To make this setting permanent, add 'set debuginfod enabled on' to .gdbinit.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7ffff60d46c0 (LWP 5623)]
[New Thread 0x7ffff58d36c0 (LWP 5624)]
[New Thread 0x7ffff57246c0 (LWP 5625)]
Samplerate 48000Hz
[New Thread 0x7ffff56916c0 (LWP 5626)]
Buffersize is 256 samples
jack running with realtime priority
Thread 1 "mamba" received signal SIGSEGV, Segmentation fault.
0x00007ffff74a55de in pthread_setschedparam () from /usr/lib/libc.so.6
(gdb) bt
#0 0x00007ffff74a55de in pthread_setschedparam () at /usr/lib/libc.so.6
#1 0x00005555555bbb5c in xalsa::XAlsa::xalsa_set_priority(int) (this=0x7fffffffba50, priority=75) at XAlsa.cpp:131
#2 0x000055555557de2d in operator()(int) const (__closure=0x7fffffffc680, p=75) at MidiKeyBoard.cpp:3465
#3 0x0000555555580ec4 in std::__invoke_impl<void, main(int, char**)::<lambda(int)>&, int>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/12.2.1/bits/invoke.h:61
#4 0x0000555555580303 in std::__invoke_r<void, main(int, char**)::<lambda(int)>&, int>(struct {...} &) (__fn=...) at /usr/include/c++/12.2.1/bits/invoke.h:111
#5 0x000055555557f643 in std::_Function_handler<void(int), main(int, char**)::<lambda(int)> >::_M_invoke(const std::_Any_data &, int &&) (__functor=..., __args#0=@0x7fffffffb574: 75)
at /usr/include/c++/12.2.1/bits/std_function.h:290
#6 0x00005555555c1ddc in std::function<void (int)>::operator()(int) const (this=0x7fffffffc680, __args#0=75) at /usr/include/c++/12.2.1/bits/std_function.h:591
#7 0x00005555555beba2 in xjack::XJack::init_jack() (this=0x7fffffffc620) at XJack.cpp:175
#8 0x000055555557e26c in main(int, char**) (argc=1, argv=0x7fffffffccc8) at MidiKeyBoard.cpp:3477
It'd be cool to have an option to set an arbitrary isomorphic key mapping
like for example -1 semitones going up vertically and 2 going right horizontally on the (typing) keyboard (Bosanquet-Wilson Layout)
here's what it would feel like to use in action with the example given, the values can also be changed under "Isomorphic key mapping"
Under NSM, the used keyboard map (azerty, qwerty...) seems to be saved in the NSM path.
It's quite annoying because user has to setup the keyboard each time (s)he adds Mamba to the Session.
It's not a big problem in RaySession because user can easily set Mamba client as template and open its template instead of the default one, but we can't do that in new-session-manager.
I think that the keyboard map should be stored only in .config . It takes more sense, almost users rarely change their keyboard map, and if you share your session with a stranger, this stranger would be happy to keep his own keyboard map.
Is it possible to make it automatically grab keyboard on startup with a command line argument/?
Following on from brummer10/Fluida.lv2#1
Carla bridges LV2 MIDNAM to JACK port property metadata.
(Once the other blocking issue is fixed in Carla)
Idea: Make a 'minimal mode' for Mamba. Where the goal is to make Mamba take as less screenspace as possible, but still being nice to use.
This is useful when you want to use Mamba with Ingen, AMS and those kind of synths.
See also: #28 (comment)
Thanks for the great program!
Regarding custom key mapping - there is one mistake and one wish.
There is no way to specify the "Enter" key.
The program is perfect for modeling chromatic keyboards (for example a button accordion), but duplication of keys is typical for them, that is, I need the ability to assign several different keys to the same note. Unfortunately, there is no such possibility in any virtual midi keyboard I know.
https://en.wikipedia.org/wiki/Chromatic_button_accordion
Thank you!
Example use case:
I want to control a hardware keyboard with it, but also route its MIDI out in to Mamba to show what I'm playing on screen. But without a MIDI loop ;)
Hi @brummer10 .
It'd be great if mamba could be i18n-ised.
I'd be willing to provide a French translation.
Hi @trebmuh
Related to the issue you've reported on IRC, I checked your log http://paste.alacon.org/46731 and it looks to me as if Mamba indicate you've pressed 'ctrl +q' which quit the application.
It seems as if Mamba indicate the wrong key state and sym.
To ensure the correct keysym will be fetched, I use now the identifiers from keysymdef.h for the accel keys as well.
Also I've add a printout when 'ctrl +q' will be indicated.
Please try the latest commit and let me know if it works correct now, or at least, when not, if you get a printout when the application exits unexpected.
It will be useful to have a way to reset knobs to initial value.
Being able to just load a directory of MIDI files so as to loop though them sequentially and back again to the start after (or randomly, etc.) for a bit of variety (beyond just one file) whilst testing.
Following #13 , I've build it and so far so good, it seems to work like a charm.
A few possible improvements here to get it perfect!
1. There are some places where the space allocated is too small to handle the French localised strings, such as:
Is there some way from your (coding) side to allow for more space and/or automatic spacing please?
2. One untranslated strings (File -> Load) and one (UTF-8 ?) issue:
3. Clicking the Mapping -> Keymap Editor segfaults when the GUI is in French but displays the Editor if launched in English (LANG=C mamba
). No message from the terminal.
That's my current findings.
Getting this currently:
...
cp libxputty.a ../libxputty/
make[2]: Leaving directory '/home/milk/.cache/yay/mamba-git/src/mamba/libxputty/Build'
make[1]: Leaving directory '/home/milk/.cache/yay/mamba-git/src/mamba/libxputty'
make[1]: Entering directory '/home/milk/.cache/yay/mamba-git/src/mamba/src'
g++ -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -O2 -D_FORTIFY_SOURCE=2 -Wall MidiKeyBoard.cpp Mamba.cpp XJack.cpp NsmHandler.cpp xkeyboard.c -L. ../libxputty/libxputty/libxputty.a -o mamba -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -Wl,-z,noexecstack -I./ -I../libxputty/libxputty/include/ `pkg-config --cflags --libs jack cairo x11 sigc++-2.0 liblo smf` -lm -pthread
MidiKeyBoard.cpp: In member function ‘void midikeyboard::XKeyBoard::get_port_entrys(Widget_t*, jack_port_t*, JackPortFlags)’:
MidiKeyBoard.cpp:745:35: error: ‘menu_add_check_entry’ was not declared in this scope; did you mean ‘menu_add_check_item’?
745 | Widget_t *entry = menu_add_check_entry(parent,port_list[i]);
| ^~~~~~~~~~~~~~~~~~~~
| menu_add_check_item
make[1]: *** [Makefile:97: Mamba] Error 1
make[1]: Leaving directory '/home/milk/.cache/yay/mamba-git/src/mamba/src'
make: *** [Makefile:26: src] Error 2
==> ERROR: A failure occurred in build().
Hi !
The provided Mamba.png icon is 24x24 pixels only.
That is quite ugly when it is shown with higher size, like it can be the case in the main desktop menu, in RaySession or Agordejo.
However, the application icon (when Mamba is running) is fine, so I suppose it uses a vector image even if I can't found any .svg file.
Maybe Mamba could provide a .svg icon directly to desktop, and everything would we ok.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.