Giter VIP home page Giter VIP logo

mamba's Issues

Mamba 1.5 fails to build on fedora 32

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.

mamba binary segmentation fault

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?

Mamba fails to build on Fedora 38

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?

[Idea] Mamba as LV2

Just a quick wild idea. Make Mamba as LV2 plugin, which you can load in Ingen (with embedded GUI)

libxputty/xputty/header/xwidget-platform.h:84:1: error: unknown type name 'Display'

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

[FR] Grab keyboard hotkey

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.

Support microtonal scales

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.

[discuss] mamba saves GUI state in NSM

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.

ability to save and load custom keymaps

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

mamba is veryyy long to start on librazik3

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

Ignore key repeat

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?

Segfault when Mamba is started under NSM or RaySession

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

Compilation problem with gcc-11

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:

fatal error: 'xwidgets.h' file not found

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

[feature request] Easier/faster adjustment octave mapping

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.

I can't solve libfluidsynth dependency on Pop!_OS 22.04

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?

mamba 2.4 segfaults on Manjaro when it connects to JACK

$ 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

ability to set isomorphic key mapping

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"

keyboard map saved in NSM file, should it not be .config ?

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.

Grab keyboard on startup

Is it possible to make it automatically grab keyboard on startup with a command line argument/?

Make a minimal mode

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)

Custom key mapping for chromatic keyboards (for example a button accordion)

Thanks for the great program!

Regarding custom key mapping - there is one mistake and one wish.

  1. There is no way to specify the "Enter" key.

  2. 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!

mamba browsing limit ?

mamba-browser-limit

I don't know/understand why, but when I'm trying to load a SF, it looks like my /usr/share/ folder doesn't display things after the "./marco/ subfolder". Might that be a limitation because of the great number of /usr/share/ 's subfolders?

Edit: Mamba 1.4

This is the same with LANG=C mamba:

mamba-browsing-limit-en

fetch wrong key state

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.

MIDI file playlist?

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.

i18n issues (French l10n)

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:

mamba-trans-1
mamba-trans-3

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:

mamba-trans-2


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.

MidiKeyBoard.cpp:745:35: error: ‘menu_add_check_entry’ was not declared in this scope;

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().

Icon has a too light icon resolution

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.

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.