Kara-Moon Forum

Developers & Technology => Musical MIDI Accompaniment (MMA) => Topic started by: noseka1 on February 12, 2012, 08:33:09 PM



Title: First release: LinuxBand 12.02 Beta
Post by: noseka1 on February 12, 2012, 08:33:09 PM
Hi all,

just to introduce myself. I'm a developer mainly in C++ and Java on Linux platform. In my free time I like to play jazz guitar. To accompany my improvisation practicing I has been using MIDI files generated by MMA. To facilitate writing of MMA files and playing them back I created LinuxBand. I hope you'll enjoy it.

Ales

LinuxBand is a GUI front-end for MMA (Musical MIDI Accompaniment). Type in the chords, choose the groove and LinuxBand will play a musical accompaniment for you.
It’s an open source alternative to Band-in-a-Box featuring:

Easy to use graphical interface
Open and well-documented data format
Output to JACK Midi to facilitate co-operation with other audio applications

Home page: http://linuxband.org/
Project page: https://github.com/noseka1/linuxband


Title: Re: First release: LinuxBand 12.02 Beta
Post by: bvdp on February 12, 2012, 08:57:47 PM
Okay, this is completely out of the blue! I'll have to look at it later. Looks like a very cool project.

Guess, this will be similar to lemma (I ask having not tried it out yet)?


Title: Re: First release: LinuxBand 12.02 Beta
Post by: bvdp on February 12, 2012, 09:11:58 PM
I think I've been away from C for too long :)

I did a clean ./configure but make really complains:

bob$ make
cc -o target/linuxband-player  -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include   -pthread -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include    -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include   -I.   -lglib-2.0   -pthread -lgthread-2.0 -lrt -lglib-2.0   -ljack   -lsmf -lm -lglib-2.0   src/main/c/linuxband-player.c src/main/c/midi.c src/main/c/remote_control.c
/tmp/ccjGvEFC.o: In function `warning_async':
linuxband-player.c:(.text+0x110): undefined reference to `g_log'
/tmp/ccjGvEFC.o: In function `warn_from_jack_thread_context':
linuxband-player.c:(.text+0x130): undefined reference to `g_idle_add'
/tmp/ccjGvEFC.o: In function `nframes_to_ms':
linuxband-player.c:(.text+0x145): undefined reference to `jack_get_sample_rate'
/tmp/ccjGvEFC.o: In function `ms_to_nframes':
   <and lots more>

I suspect I'm missing yet-another-dev-library.




Title: Re: First release: LinuxBand 12.02 Beta
Post by: noseka1 on February 12, 2012, 09:47:42 PM
After successful ./configure the compilation should not fail. I'll have to fix it.

However, your compilation line seems very similar to my:
cc -o target/linuxband-player  -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include   -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include    -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include   -I.   -lglib-2.0   -pthread -lgthread-2.0 -lrt -lglib-2.0   -ljack -lpthread -lrt   -lsmf -lm -lglib-2.0   src/main/c/linuxband-player.c src/main/c/midi.c src/main/c/remote_control.c

And the required symbols are in those libraries:
nm -D /lib/libglib-2.0.so.0 | grep g_log
000000000004dc40 T g_log

As I see i386-linux-gnu directories in your output. Can't it be that for some reason you compile for 32-bit arch but try to link against 64-bit libs, or the other way round?


Title: Re: First release: LinuxBand 12.02 Beta
Post by: bvdp on February 12, 2012, 10:08:33 PM
I don't have any 64 bit stuff on the machine.

This is Ubuntu 11.10.

I think I have the needed "dev" packages. If not, it should be found in the configure.

Isn't g_log a macro? So it should be defined in a header file? Could that be missing?

But, if I look for the g_log you are using:

[03:07 PM /usr/include/glib-2.0] bob$ grep -ir g_log_set_default_handle *
glib/gmessages.h:GLogFunc        g_log_set_default_handler (GLogFunc      log_func,

So, that one (and I assume the others) are there.

Let me log in/out and try again.


Title: Re: First release: LinuxBand 12.02 Beta
Post by: bvdp on February 12, 2012, 10:17:29 PM
Okay, I' lost :)

I double checked the dep list:

apt-get install libjack-dev
apt-get install libsmf-dev
apt-get install python-gtk2
apt-get install python-gtksourceview2

All were okay, except that the first line deleted my existing libjack2 stuff and installed libjack1.

No differences in the compile. Next?


Title: Re: First release: LinuxBand 12.02 Beta
Post by: noseka1 on February 12, 2012, 10:33:34 PM
Now, let's check that your linker is linking against correct libraries. On my machine -lglib-2.0 would cause linking the /lib/libglib-2.0.so.0.2800.8 library file because the symbolic link /lib/libglib-2.0.so.0 points to it.

So I replace all occurences of -lglib-2.0 with /lib/libglib-2.0.so.0.2800.8 and try the resulting compilation command:

cc -o target/linuxband-player  -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include   -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include    -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include   -I.  /lib/libglib-2.0.so.0.2800.8   -pthread -lgthread-2.0 -lrt /lib/libglib-2.0.so.0.2800.8   -ljack -lpthread -lrt   -lsmf -lm /lib/libglib-2.0.so.0.2800.8   src/main/c/linuxband-player.c src/main/c/midi.c src/main/c/remote_control.c

This way, the linuxband-player.c:(.text+0x110): undefined reference to `g_log' error should disappear because the symbol is there as checked using grep before.


Title: Re: First release: LinuxBand 12.02 Beta
Post by: bvdp on February 12, 2012, 11:30:35 PM
I needed to change your example cc line to:

cc -o target/linuxband-player -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/lib/glib-2.0/include -I. /lib/i386-linux-gnu/libglib-2.0.so.0 -pthread -lgthread-2.0 -lrt /lib/i386-linux-gnu/libglib-2.0.so.0 -ljack -lpthread -lrt -lsmf -lm /lib/i386-linux-gnu/libglib-2.0.so.0 src/main/c/linuxband-player.c src/main/c/midi.c src/main/c/remote_control.c

But, that gives the same errors as before :)

Code:
/tmp/ccGhZH7T.o: In function `warning_async':
linuxband-player.c:(.text+0x110): undefined reference to `g_log'
/tmp/ccGhZH7T.o: In function `warn_from_jack_thread_context':
linuxband-player.c:(.text+0x130): undefined reference to `g_idle_add'
/tmp/ccGhZH7T.o: In function `nframes_to_ms':
linuxband-player.c:(.text+0x145): undefined reference to `jack_get_sample_rate'
/tmp/ccGhZH7T.o: In function `ms_to_nframes':
linuxband-player.c:(.text+0x1da): undefined reference to `jack_get_sample_rate'
/tmp/ccGhZH7T.o: In function `send_all_sound_off':
linuxband-player.c:(.text+0x2a3): undefined reference to `jack_midi_event_reserve'
/tmp/ccGhZH7T.o: In function `process_midi_output':
linuxband-player.c:(.text+0x331): undefined reference to `jack_port_get_buffer'
linuxband-player.c:(.text+0x36c): undefined reference to `jack_midi_clear_buffer'
linuxband-player.c:(.text+0x430): undefined reference to `jack_transport_query'
linuxband-player.c:(.text+0x499): undefined reference to `jack_transport_query'
linuxband-player.c:(.text+0x4b1): undefined reference to `jack_last_frame_time'
linuxband-player.c:(.text+0x511): undefined reference to `jack_last_frame_time'
linuxband-player.c:(.text+0x569): undefined reference to `smf_peek_next_event'
linuxband-player.c:(.text+0x594): undefined reference to `smf_event_is_metadata'
linuxband-player.c:(.text+0x5aa): undefined reference to `smf_event_decode'
linuxband-player.c:(.text+0x5df): undefined reference to `g_log'
linuxband-player.c:(.text+0x623): undefined reference to `g_log'
linuxband-player.c:(.text+0x65c): undefined reference to `smf_get_next_event'
linuxband-player.c:(.text+0x751): undefined reference to `smf_get_next_event'
linuxband-player.c:(.text+0x7aa): undefined reference to `jack_midi_event_reserve'
linuxband-player.c:(.text+0x824): undefined reference to `jack_midi_event_reserve'
/tmp/ccGhZH7T.o: In function `sync_callback':
linuxband-player.c:(.text+0x99f): undefined reference to `g_log'
linuxband-player.c:(.text+0xa17): undefined reference to `g_log'
/tmp/ccGhZH7T.o: In function `timebase_callback':
linuxband-player.c:(.text+0xa6e): undefined reference to `smf_peek_next_event'
linuxband-player.c:(.text+0xa92): undefined reference to `smf_get_tempo_by_pulses'
/tmp/ccGhZH7T.o: In function `connect_to_input_port':
linuxband-player.c:(.text+0xd9c): undefined reference to `jack_port_disconnect'
linuxband-player.c:(.text+0xdc1): undefined reference to `g_log'
linuxband-player.c:(.text+0xdd8): undefined reference to `jack_port_name'
linuxband-player.c:(.text+0xdf1): undefined reference to `jack_connect'
linuxband-player.c:(.text+0xe1d): undefined reference to `g_log'
linuxband-player.c:(.text+0xe47): undefined reference to `g_log'
/tmp/ccGhZH7T.o: In function `init_jack':
linuxband-player.c:(.text+0xe7b): undefined reference to `jack_client_open'
linuxband-player.c:(.text+0xea5): undefined reference to `g_log'
linuxband-player.c:(.text+0xece): undefined reference to `jack_set_process_callback'
linuxband-player.c:(.text+0xef3): undefined reference to `g_log'
linuxband-player.c:(.text+0xf25): undefined reference to `jack_set_sync_callback'
linuxband-player.c:(.text+0xf4a): undefined reference to `g_log'
linuxband-player.c:(.text+0xf73): undefined reference to `jack_on_shutdown'
linuxband-player.c:(.text+0x103f): undefined reference to `jack_port_register'
linuxband-player.c:(.text+0x107a): undefined reference to `g_log'
linuxband-player.c:(.text+0x10af): undefined reference to `jack_activate'
linuxband-player.c:(.text+0x10cf): undefined reference to `g_log'
/tmp/ccGhZH7T.o: In function `show_version':
linuxband-player.c:(.text+0x1175): undefined reference to `smf_get_version'
/tmp/ccGhZH7T.o: In function `main':
linuxband-player.c:(.text+0x1203): undefined reference to `g_thread_init'
linuxband-player.c:(.text+0x1217): undefined reference to `g_log_set_default_handler'
linuxband-player.c:(.text+0x12c2): undefined reference to `g_log'
linuxband-player.c:(.text+0x1362): undefined reference to `g_log'
linuxband-player.c:(.text+0x1389): undefined reference to `smf_load'
linuxband-player.c:(.text+0x13bd): undefined reference to `g_log'
linuxband-player.c:(.text+0x13df): undefined reference to `smf_decode'
linuxband-player.c:(.text+0x13ff): undefined reference to `g_log'
linuxband-player.c:(.text+0x1436): undefined reference to `g_log'
linuxband-player.c:(.text+0x145c): undefined reference to `g_timeout_add'
linuxband-player.c:(.text+0x14b0): undefined reference to `g_log'
linuxband-player.c:(.text+0x14e3): undefined reference to `jack_transport_locate'
linuxband-player.c:(.text+0x14f0): undefined reference to `jack_transport_start'
linuxband-player.c:(.text+0x1506): undefined reference to `jack_frame_time'
linuxband-player.c:(.text+0x1535): undefined reference to `g_main_loop_new'
linuxband-player.c:(.text+0x153d): undefined reference to `g_main_loop_run'
/tmp/cciKwDoK.o: In function `show_track':
midi.c:(.text+0x1c7): undefined reference to `g_log'
midi.c:(.text+0x1db): undefined reference to `smf_event_decode'
midi.c:(.text+0x205): undefined reference to `g_log'
midi.c:(.text+0x21b): undefined reference to `smf_track_get_event_by_number'
/tmp/cciKwDoK.o: In function `show_smf':
midi.c:(.text+0x237): undefined reference to `smf_decode'
midi.c:(.text+0x257): undefined reference to `g_log'
midi.c:(.text+0x281): undefined reference to `smf_get_track_by_number'
/tmp/cciKwDoK.o: In function `find_song_end':
midi.c:(.text+0x2ad): undefined reference to `smf_event_is_metadata'
midi.c:(.text+0x2bc): undefined reference to `smf_event_decode'
midi.c:(.text+0x2f0): undefined reference to `smf_get_next_event'
/tmp/cciKwDoK.o: In function `find_bar_end':
midi.c:(.text+0x34c): undefined reference to `smf_event_is_metadata'
midi.c:(.text+0x35b): undefined reference to `smf_event_decode'
midi.c:(.text+0x39e): undefined reference to `smf_get_next_event'
/tmp/cciKwDoK.o: In function `find_bar_num':
midi.c:(.text+0x3fa): undefined reference to `smf_event_is_metadata'
midi.c:(.text+0x409): undefined reference to `smf_event_decode'
midi.c:(.text+0x452): undefined reference to `smf_get_next_event'
/tmp/cciKwDoK.o: In function `find_bar_num_seconds':
midi.c:(.text+0x49e): undefined reference to `smf_rewind'
/tmp/cciKwDoK.o: In function `get_bar_offsets':
midi.c:(.text+0x4cc): undefined reference to `smf_rewind'
/tmp/cciKwDoK.o: In function `copy_event':
midi.c:(.text+0x534): undefined reference to `smf_event_new_from_pointer'
/tmp/cciKwDoK.o: In function `copy_events':
midi.c:(.text+0x54f): undefined reference to `smf_seek_to_pulses'
midi.c:(.text+0x5a0): undefined reference to `smf_get_track_by_number'
midi.c:(.text+0x5ce): undefined reference to `smf_track_add_event_pulses'
midi.c:(.text+0x5d9): undefined reference to `smf_get_next_event'
/tmp/cciKwDoK.o: In function `create_marker':
midi.c:(.text+0x629): undefined reference to `smf_event_new'
/tmp/cciKwDoK.o: In function `create_empty_smf':
midi.c:(.text+0x6aa): undefined reference to `smf_new'
midi.c:(.text+0x6c2): undefined reference to `smf_set_ppqn'
midi.c:(.text+0x703): undefined reference to `smf_set_format'
midi.c:(.text+0x73e): undefined reference to `smf_track_new'
midi.c:(.text+0x753): undefined reference to `smf_add_track'
/tmp/cciKwDoK.o: In function `copy_smf_bars':
midi.c:(.text+0x7c9): undefined reference to `smf_rewind'
midi.c:(.text+0x7dc): undefined reference to `smf_get_track_by_number'
midi.c:(.text+0x7f2): undefined reference to `smf_get_track_by_number'
midi.c:(.text+0x854): undefined reference to `smf_event_decode'
midi.c:(.text+0x888): undefined reference to `smf_track_add_event_pulses'
midi.c:(.text+0x893): undefined reference to `smf_track_get_next_event'
midi.c:(.text+0x944): undefined reference to `smf_track_add_event_pulses'
/tmp/cciKwDoK.o: In function `loop_smf':
midi.c:(.text+0x95b): undefined reference to `smf_rewind'
midi.c:(.text+0x99f): undefined reference to `smf_rewind'
midi.c:(.text+0xa50): undefined reference to `smf_get_track_by_number'
midi.c:(.text+0xaa5): undefined reference to `smf_track_add_event_pulses'
/tmp/cciKwDoK.o: In function `load_smf_data':
midi.c:(.text+0xac3): undefined reference to `smf_load_from_memory'
midi.c:(.text+0xae8): undefined reference to `g_log'
midi.c:(.text+0xaf5): undefined reference to `smf_decode'
midi.c:(.text+0xb15): undefined reference to `g_log'
/tmp/ccZtLD3A.o: In function `open_pipes':
remote_control.c:(.text+0xda): undefined reference to `g_log'
remote_control.c:(.text+0xf8): undefined reference to `g_log'
remote_control.c:(.text+0x14a): undefined reference to `g_log'
remote_control.c:(.text+0x19c): undefined reference to `g_log'
/tmp/ccZtLD3A.o:remote_control.c:(.text+0x1c1): more undefined references to `g_log' follow
/tmp/ccZtLD3A.o: In function `loop_song':
remote_control.c:(.text+0x334): undefined reference to `smf_peek_next_event'
remote_control.c:(.text+0x385): undefined reference to `g_log'
remote_control.c:(.text+0x3a0): undefined reference to `smf_seek_to_pulses'
remote_control.c:(.text+0x3d8): undefined reference to `smf_peek_next_event'
/tmp/ccZtLD3A.o: In function `check_event':
remote_control.c:(.text+0x445): undefined reference to `g_log'
/tmp/ccZtLD3A.o: In function `partial_seek':
remote_control.c:(.text+0x480): undefined reference to `smf_peek_next_event'
remote_control.c:(.text+0x4aa): undefined reference to `smf_rewind'
remote_control.c:(.text+0x4b5): undefined reference to `smf_peek_next_event'
remote_control.c:(.text+0x4fb): undefined reference to `g_log'
remote_control.c:(.text+0x51c): undefined reference to `smf_get_next_event'
remote_control.c:(.text+0x554): undefined reference to `smf_peek_next_event'
remote_control.c:(.text+0x59a): undefined reference to `g_log'
remote_control.c:(.text+0x5dc): undefined reference to `g_log'
/tmp/ccZtLD3A.o: In function `loop_seek':
remote_control.c:(.text+0x633): undefined reference to `g_log'
/tmp/ccZtLD3A.o: In function `free_smf':
remote_control.c:(.text+0x6ea): undefined reference to `smf_delete'
/tmp/ccZtLD3A.o: In function `start_playback':
remote_control.c:(.text+0x729): undefined reference to `g_log'
remote_control.c:(.text+0x73f): undefined reference to `jack_transport_start'
remote_control.c:(.text+0x74e): undefined reference to `jack_frame_time'
/tmp/ccZtLD3A.o: In function `command_load':
remote_control.c:(.text+0x7b9): undefined reference to `g_log'
remote_control.c:(.text+0x81d): undefined reference to `g_log'
remote_control.c:(.text+0x842): undefined reference to `g_log'
remote_control.c:(.text+0x858): undefined reference to `smf_delete'
/tmp/ccZtLD3A.o: In function `command_stop':
remote_control.c:(.text+0x8a9): undefined reference to `jack_transport_stop'
/tmp/ccZtLD3A.o: In function `command_play':
remote_control.c:(.text+0x928): undefined reference to `smf_rewind'
remote_control.c:(.text+0x96b): undefined reference to `jack_transport_locate'
/tmp/ccZtLD3A.o: In function `command_play_from_bar':
remote_control.c:(.text+0x9d8): undefined reference to `g_log'
remote_control.c:(.text+0xa34): undefined reference to `smf_rewind'
remote_control.c:(.text+0xa6c): undefined reference to `g_log'
remote_control.c:(.text+0xaab): undefined reference to `jack_transport_locate'
remote_control.c:(.text+0xabf): undefined reference to `smf_seek_to_seconds'
/tmp/ccZtLD3A.o: In function `command_play_bars':
remote_control.c:(.text+0xbe0): undefined reference to `smf_rewind'
remote_control.c:(.text+0xc23): undefined reference to `jack_transport_locate'
/tmp/ccZtLD3A.o: In function `command_pause':
remote_control.c:(.text+0xc72): undefined reference to `jack_transport_stop'
remote_control.c:(.text+0xc9d): undefined reference to `jack_transport_start'
/tmp/ccZtLD3A.o: In function `command_intro_length':
remote_control.c:(.text+0xd21): undefined reference to `g_log'
/tmp/ccZtLD3A.o: In function `command_finish':
remote_control.c:(.text+0xd47): undefined reference to `jack_client_close'
/tmp/ccZtLD3A.o: In function `jack_shutdown':
remote_control.c:(.text+0xd75): undefined reference to `g_log'
/tmp/ccZtLD3A.o: In function `remote_control_loop':
remote_control.c:(.text+0xdd6): undefined reference to `g_log'
remote_control.c:(.text+0xe02): undefined reference to `g_log'
remote_control.c:(.text+0xe28): undefined reference to `g_log'
remote_control.c:(.text+0xe54): undefined reference to `g_log'
/tmp/ccZtLD3A.o:remote_control.c:(.text+0xe80): more undefined references to `g_log' follow
collect2: ld returned 1 exit status

Is there a logging lib that I might be missing?


Title: Re: First release: LinuxBand 12.02 Beta
Post by: Oren on February 13, 2012, 03:44:40 AM
You guys amaze me! :o
(finally Bob has someone who can hold his/her own in the MMA sandbox - other than Alexis) :;


Title: Re: First release: LinuxBand 12.02 Beta
Post by: noseka1 on February 13, 2012, 08:33:04 AM
Finally, here is the fix for the compilation problem. Apply the attached patch and make again:
patch < Makefile.in.diff.txt
make


Title: Re: First release: LinuxBand 12.02 Beta
Post by: bvdp on February 13, 2012, 04:43:27 PM
That fixed it ... reminds me why I don't miss programming in C :)

But, there seems to be a problem with linuxband finding my lib, etc. I have a link /usr/local/share/mma which points to my main mma tree and mma in /usr/local/bin.

Yes, I did a make install on linuxband.

The last few lines it prints to the terminal might help:

Traceback (most recent call last):
  File "/usr/local/share/linuxband/linuxband/midi/mma2smf.py", line 38, in check_mma_syntax
    mma = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
  File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1239, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory
09:39:46 ERROR export_midi_callback Failed to compile MMA file. Fix the errors and try the export again.

I suspect a path issue?



Title: Re: First release: LinuxBand 12.02 Beta
Post by: alexis on February 13, 2012, 06:23:14 PM
Quote
(finally Bob has someone who can hold his/her own in the MMA sandbox - other than Alexis) :;
:D ;D

I could compile your program (I run Ubuntu 10.10  - 64 bits). Looks good!

A few points, though:
  • It looks very much like Lemma => http://welltemperedstudio.wordpress.com/code/lemma/ (http://welltemperedstudio.wordpress.com/code/lemma/).
  • I think the name (LinuxBand) and the choice of Jackd makes it to restrictive. It should run on Windows, too.
  • I'd appreciate Alsa or/and Pulse Audio support. Beginners can't easily setup Jackd.
  • We definitively need a graphical groove editor. It would make MMA less daunting for newbies (Yes Bob, I know: with a UI, one can't exploit all the power of MMA. However,...). To be considered for next versions.

Thanks.

Alexis


Title: Re: First release: LinuxBand 12.02 Beta
Post by: bvdp on February 13, 2012, 06:57:55 PM
You guys amaze me! :o
(finally Bob has someone who can hold his/her own in the MMA sandbox - other than Alexis) :;

I've always been of the opinion that my time is best spent in worrying about the parser and the file creation bits of mma. And it is trivial (yeah, right) to add a gui front end to the program. So, I really do welcome programs like linuxband!

Let's get more people using mma ... which, I keep hoping, will lead to better libraries and better sounding backing tracks.



Title: Re: First release: LinuxBand 12.02 Beta
Post by: bvdp on February 13, 2012, 06:59:03 PM

  • We definitively need a graphical groove editor. It would make MMA less daunting for newbies (Yes Bob, I know: with a UI, one can't exploit all the power of MMA. However,...). To be considered for next versions.


Ahh, but you forget that there has always been a GUI for mma. It's called emacs :)


Title: Re: First release: LinuxBand 12.02 Beta
Post by: noseka1 on February 13, 2012, 08:33:03 PM
You can set path to MMA in View/Settings (or Preferences). Default is /usr/bin/mma.


Title: Re: First release: LinuxBand 12.02 Beta
Post by: bvdp on February 13, 2012, 09:00:57 PM
Okay, a few little things:

1. The preferences is not working as it should. Clicking, for example, on <groove dir> brings up a short list of directories, but I cannot step though a selected dir. I'm only able to select a top level entry.

2. I can edit the .linuxband/linuxband.rc file and change the paths there.

3. I think there is a concept problem with swingmode. You're not the first to have this problem ... but the way you are using it (just like in lemma) it has no effect. The loading of a groove restores the previous setting. Doing it after a groove is loaded doesn't help either since the sequences are already parsed. For a user, the only time swingmode has an effect is when you have something like: Swingmode On ... some solo notes .... I think this is covered in the docs, but I'll re-read them before the next release.

4. Not sure how you are doing the "follow the bouncing ball" thing to highlight the chord changes. But, I might be able to help at this end by writing data to follow into the meta track of the midi.

5. With jack running I get no sounds playing a midi track. Player issue? Jack not setup right? I don't know since I normally don't run jack.

...........

If I send more time on this I'm sure I can help more.

It's a great concept and should help folk who, unlike me, don't love the command line :) Look forward to the next version!

Best,


Title: Re: First release: LinuxBand 12.02 Beta
Post by: noseka1 on February 13, 2012, 09:49:15 PM
A few points, though:
  • It looks very much like Lemma => http://welltemperedstudio.wordpress.com/code/lemma/ (http://welltemperedstudio.wordpress.com/code/lemma/).
  • I think the name (LinuxBand) and the choice of Jackd makes it to restrictive. It should run on Windows, too.
  • I'd appreciate Alsa or/and Pulse Audio support. Beginners can't easily setup Jackd.
  • We definitively need a graphical groove editor. It would make MMA less daunting for newbies (Yes Bob, I know: with a UI, one can't exploit all the power of MMA. However,...). To be considered for next versions.

Thank you for your comments.

I chose the name LinuxBand to promote my favourite OS and to indicate that LinuxBand is targeted on the Linux platform.

Yes, Alsa support would make it easier for beginners to enter. Also groove editor would be nice to have. Patches are welcome.


Title: Re: First release: LinuxBand 12.02 Beta
Post by: noseka1 on February 13, 2012, 10:04:33 PM
1. The preferences is not working as it should. Clicking, for example, on <groove dir> brings up a short list of directories, but I cannot step though a selected dir. I'm only able to select a top level entry.

2. I can edit the .linuxband/linuxband.rc file and change the paths there.

3. I think there is a concept problem with swingmode. You're not the first to have this problem ... but the way you are using it (just like in lemma) it has no effect. The loading of a groove restores the previous setting. Doing it after a groove is loaded doesn't help either since the sequences are already parsed. For a user, the only time swingmode has an effect is when you have something like: Swingmode On ... some solo notes .... I think this is covered in the docs, but I'll re-read them before the next release.

4. Not sure how you are doing the "follow the bouncing ball" thing to highlight the chord changes. But, I might be able to help at this end by writing data to follow into the meta track of the midi.

5. With jack running I get no sounds playing a midi track. Player issue? Jack not setup right? I don't know since I normally don't run jack.


Thank you for testing!

1. The last item in the list is "Other ..." Here you can step through dirs. This is a standard GTK dialog. I find it not too well done.

3. Well, I set that Swingmode by intuition. I should really look at the documentation.

4. That's the way I do it.

5. I cannot describe configuring Jack in two sentences, but there enough examples on the web.


Title: Re: First release: LinuxBand 12.02 Beta
Post by: bvdp on February 13, 2012, 10:23:41 PM
[
1. The last item in the list is "Other ..." Here you can step through dirs. This is a standard GTK dialog. I find it not too well done.


Yeah, did that :) Didn't work either :)