Coder Social home page Coder Social logo

pimidi's People

Contributors

bbregeault avatar dsokoloski avatar jordantmonson avatar mganss avatar pierz avatar ravelox 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  avatar  avatar  avatar

pimidi's Issues

alsa.output_device

Hello,

i have a Midisport 2x2 USB Midi Interface with 2 Midi Outs HW:1,0,0 & hw:1,0,1
Is it possible to send the signal to both outputs?

Midi Not Receiving

Hi Dave! Thank you again for creating this program. I am trying to get the midi messages to receive on the windows side and my audio software is not receiving any notes, though I see the MIDI Device (RTPMIDI). In RTPMIDI It sees my raspberry pi with 0-1ms lag. Seems to be setup correctly. Perhaps I am not using the correct ports?

Like you have in one of your youtube videos, the port I typed in on RTPMIDI is 5006.
On the raspberry pi ravelox config file I put:

network.bind_address=2.0.0.5
network.control.port=5004
network.data.port=5005
network.local.port=5006
network.socket_interval=5000
network.max_connections=4
service.name=propsav_midi
run_as_daemon=no
daemon.pid_file=raveloxmidi.pid
logging.enabled=yes
logging.log_file=raveloxmidi.log
logging.log_level=normal
security.check=no
readonly=no
inbound_midi=/home/pi/Desktop/raveloxmidi/src/raveloxmidi.inbound
file_mode=0777

2.0.0.1 is the IP of the windows computer and 2.0.0.5 is the IP of the raspberry pi. Please advise as soon as you are available, thank you so much. Stressing out here, haha.

Ravelox on Windows, Midi Loopback

Hi there!

Is it possible to run the python code for PiMIDI on a Windows Computer and send the MIDI to a program running on the same computer? Would this require a MIDI LoopBack? Some localhost settings?

Please advise. Thank you very much for your work on this.

sending lots of messages quickly - SIGABRT

Im sending quite a lot of messages quickly, and after a while i get memory corrupt on the free() and aborts (see stack below)

this is on experimental branch

(gdb) run
Starting program: /home/patch/projects/3rdparty/pimidi/raveloxmidi/src/raveloxmidi -dN -c ./tau.conf
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
network.control.port = 5004
network.data.port = 5005
network.local.port = 5006
network.socket_timeout = 30
network.max_connections = 8
service.name = raveloxmidi
service.ipv4 = yes
service.ipv6 = no
run_as_daemon = no
daemon.pid_file = raveloxmidi.pid
logging.enabled = yes
logging.log_level = normal
security.check = yes
readonly = no
inbound_midi = /dev/sequencer
file_mode = 0640
discover.timeout = 5
sync.interval = 10
network.read.blocksize = 2048
alsa.input_buffer_size = 4096
config.file = ./tau.conf
alsa.input_device = hw:3,0,0
network.bind_address = 0.0.0.0
[New Thread 0x7648c3f0 (LWP 3727)]
[New Thread 0x75a8b3f0 (LWP 3728)]
free(): invalid pointer

Thread 1 "raveloxmidi" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50	../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x76d28230 in __GI_abort () at abort.c:79
#2  0x76d7851c in __libc_message (action=action@entry=do_abort, fmt=<optimized out>) at ../sysdeps/posix/libc_fatal.c:181
#3  0x76d7f044 in malloc_printerr (str=<optimized out>) at malloc.c:5341
#4  0x76d80d50 in _int_free (av=0x75100010, p=0x75100f50, have_lock=<optimized out>) at malloc.c:4165
#5  0x00017e60 in net_applemidi_cmd_destroy (command=0x7efff450, command@entry=0x7efff448) at net_applemidi.c:213
#6  0x00015a80 in net_socket_read (fd=fd@entry=3) at net_socket.c:323
#7  0x00016394 in net_socket_fd_loop () at net_socket.c:500
#8  0x000122b8 in main (argc=<optimized out>, argv=<optimized out>) at raveloxmidi.c:118
(gdb) 

ALSA Integration

I'm trying to integrate ALSA.
Following the instruction i get this from amidi -l

IO  hw:1,0,0  electribe2 sampler MIDI 1
IO  hw:2,0,0  Blofeld MIDI 1
IO  hw:3,0,0  ZOOM MS Series MIDI 1
IO  hw:4,0    Virtual Raw MIDI (16 subdevices)
IO  hw:4,1    Virtual Raw MIDI (16 subdevices)
IO  hw:4,2    Virtual Raw MIDI (16 subdevices)
IO  hw:4,3    Virtual Raw MIDI (16 subdevices)

so i append
alsa.output_device = hw:4,0 in config file.

when i run sudo raveloxmidi -Nd -c config i get:

network.bind_address = 0.0.0.0
network.control.port = 5004
network.data.port = 5005
network.local.port = 5006
network.socket_timeout = 30
network.max_connections = 8
service.name = raveloxmidi
run_as_daemon = no
daemon.pid_file = raveloxmidi.pid
logging.enabled = yes
logging.log_file = (null)
logging.log_level = debug
security.check = yes
readonly = no
inbound_midi = /dev/sequencer
file_mode = 0640
config.file = raveconf
alsa.output_device = hw:4,0
[1538948499]    INFO: raveloxmidi (0.5.2)
[1538948499]    INFO: Adding service 'raveloxmidi._apple-midi._udp'
[1538948499]    DEBUG: net_socket_loop_init: pipe0=10 pipe1=11
[1538948500]    INFO: Service 'raveloxmidi' successfully established.

Can't find this log information

[1534193901]	DEBUG: raveloxmidi_alsa_init: ret=0 Success
[1534193901]	DEBUG: rawmidi: handle="hw:1,0,0" hw_id="VirMidi" hw_driver_name="Virtual Raw MIDI" flags=7 card=1 device=0
[1534193901]	DEBUG: rawmidi: handle="hw:1,0,0" hw_id="VirMidi" hw_driver_name="Virtual Raw MIDI" flags=7 card=1 device=0

What am I doing wrong?

Inbound MIDI

Hello,

Firstly, I LOVE your project. I have been playing around with it a lot with several Raspberry Pis here at work and it is very useful for music creation.

I am wondering if you could lend a hand in setting up inbound midi messages to pimidi from an external source? I have got outbound working great, though I would like to handle inbound and I can't find where these messages are stored or how they are handled.

Are they saved in a list to a text file? Is there a function I can use to interpret them? If not I can just check the size of the file and if it grows in size, handle the last message in the file.

Thank you so much. My email is [email protected]

modprobe snd-virmidi

I am pretty sure I have raveloxmidi properly installed. How can I tell? How do I start it?

When I run modprobe snd-virmidiI get an error modprobe: ERROR: could not insert 'modprobe snd-virmidi': Operation not permitted.

When I run ./raveloxmidi -N -d I get a bunch of data but when I run sudo amidi -l only my hardware interface is listed.
I want to send inbound_midi to my hardware interface. Is this possible?

Using 2 input devices / 2 sockets at the same time

Hello,

thank you for creating this awesome tool, I really like it.
I recently got a Launchkey 61 MK2 which works as 2 MIDI devices.
One for "InControl" Mode and the other for regular MIDI.
The problem I am facing now is, that I can't use the same address twice and from your documentation I can't see a way to get it to work with two MIDI devices in one instance.

Is there already a way to handle that and I missed it?
Is there a way to let it use the same address (but different ports ofc) again?

Thank you again for your work.

Segfault on Arch Linux

Hi, this segfaults as soon as I run it.
Here's a backtrace (hope I did this right, I've never done one before =)

Starting program: /usr/local/bin/raveloxmidi
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff723532a in strlen () from /usr/lib/libc.so.6
(gdb) backtrace
#0  0x00007ffff723532a in strlen () from /usr/lib/libc.so.6
#1  0x00007ffff723505e in strdup () from /usr/lib/libc.so.6
#2  0x0000000000406601 in logging_init () at logging.c:149
#3  0x0000000000401b7e in main (argc=<optimized out>, argv=<optimized out>)
    at raveloxmidi.c:51
(gdb)
#0  0x00007ffff723532a in strlen () from /usr/lib/libc.so.6
#1  0x00007ffff723505e in strdup () from /usr/lib/libc.so.6
#2  0x0000000000406601 in logging_init () at logging.c:149
#3  0x0000000000401b7e in main (argc=<optimized out>, argv=<optimized out>)
    at raveloxmidi.c:51
(gdb) l
41
42  static int running_as_daemon=0;
43
44  int main(int argc, char *argv[])
45  {
46      dns_service_desc_t service_desc;
47      int ret = 0;
48
49      config_init( argc, argv);
50
(gdb)

Looks like it may be Avahi / mDNS related? I have avahi and nss-mdns installed

Potential threading issue during shutdown

Repro: Compile with -fsanitize=thread (works only on x86 I believe), start raveloxmidi (ALSA input and output configured) and run python/send_quit.py. Output:

[1577626719]    [tid=139689132979072]   NORMAL: Shutdown request received on local socket
==================
WARNING: ThreadSanitizer: data race (pid=4629)
  Read of size 4 at 0x5597b133d3f8 by thread T2:
    #0 net_socket_alsa_listener /home/mganss/pimidi/raveloxmidi/src/net_socket.c:622 (raveloxmidi+0xae4b)
    #1 <null> <null> (libtsan.so.0+0x296ad)

  Previous write of size 4 at 0x5597b133d3f8 by main thread (mutexes: write M39):
    #0 set_shutdown_lock /home/mganss/pimidi/raveloxmidi/src/net_socket.c:448 (raveloxmidi+0xac05)
    #1 net_socket_read /home/mganss/pimidi/raveloxmidi/src/net_socket.c:352 (raveloxmidi+0xac05)
    #2 net_socket_fd_loop /home/mganss/pimidi/raveloxmidi/src/net_socket.c:508 (raveloxmidi+0xb817)
    #3 main /home/mganss/pimidi/raveloxmidi/src/raveloxmidi.c:118 (raveloxmidi+0x3aae)

  Location is global 'net_socket_shutdown' of size 4 at 0x5597b133d3f8 (raveloxmidi+0x00000021f3f8)

  Mutex M39 (0x5597b133d320) created at:
    #0 pthread_mutex_init <null> (libtsan.so.0+0x2c5ad)
    #1 net_socket_loop_init /home/mganss/pimidi/raveloxmidi/src/net_socket.c:465 (raveloxmidi+0xaeff)
    #2 main /home/mganss/pimidi/raveloxmidi/src/raveloxmidi.c:104 (raveloxmidi+0x3a1e)

  Thread T2 (tid=4633, running) created by main thread at:
    #0 pthread_create <null> (libtsan.so.0+0x2bcee)
    #1 net_socket_alsa_loop /home/mganss/pimidi/raveloxmidi/src/net_socket.c:633 (raveloxmidi+0xb56d)
    #2 main /home/mganss/pimidi/raveloxmidi/src/raveloxmidi.c:116 (raveloxmidi+0x3aa9)

SUMMARY: ThreadSanitizer: data race /home/mganss/pimidi/raveloxmidi/src/net_socket.c:622 in net_socket_alsa_listener
==================
[1577626745]    [tid=139688985487104]   DEBUG: net_socket_alsa_listener: Thread stopped
==================
WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=4629)
  Cycle in lock order graph: M24 (0x7b0c00000930) => M33 (0x7b0c00000c60) => M24

  Mutex M33 acquired here while holding mutex M24 in main thread:
    #0 pthread_mutex_lock <null> (libtsan.so.0+0x3fadb)
    #1 <null> <null> (libdbus-1.so.3+0x1082f)
    #2 main /home/mganss/pimidi/raveloxmidi/src/raveloxmidi.c:98 (raveloxmidi+0x3a15)

    Hint: use TSAN_OPTIONS=second_deadlock_stack=1 to get more informative warning message

  Mutex M24 acquired here while holding mutex M33 in main thread:
    #0 pthread_mutex_lock <null> (libtsan.so.0+0x3fadb)
    #1 <null> <null> (libdbus-1.so.3+0x2892c)
    #2 dns_service_publisher_stop /home/mganss/pimidi/raveloxmidi/src/dns_service_publisher.c:283 (raveloxmidi+0x46af)
    #3 main /home/mganss/pimidi/raveloxmidi/src/raveloxmidi.c:126 (raveloxmidi+0x3a56)

SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) (/usr/lib/x86_64-linux-gnu/libtsan.so.0+0x3fadb) in __interceptor_pthread_mutex_lock
==================

Bug: Connection with mobile devices

Im using NetMidi with Ravelox bug having issues

If I use NetMidi to request a connection with Ravelox Midi NetMidi will show the connect for 20 seconds then the connect will disappear. When I check the debug log in Ravelox there is no records of the connection at all. NOTE: if I have Ravelox to start the request to NetMidi it works fine.

This happens with all mobile apps supporting rtpmidi. Ravelox can request the connect and it will work but if the mobile apps request the connect it will not work.

I have attached debug file and video
iphone debug file.txt

video here:
https://youtu.be/NkkQ5DG1Cpw

connection problem

screenshot 2018-12-08 09 34 04

cpi@raspberrypi:~/midi/pimidi/raveloxmidi $ cat src/conf 
alsa.output_device = hw:1,0,0
alsa.input_device = hw:1,1,0
network.bind_address=0.0.0.0

raveloxmidi shows no specific output when i try to connect

pi@raspberrypi:~/midi/pimidi/raveloxmidi $ sudo /home/pi/midi/pimidi/raveloxmidi/src/raveloxmidi -d -N -c src/conf
network.bind_address = 0.0.0.0
network.control.port = 5004
network.data.port = 5005
network.local.port = 5006
network.socket_timeout = 30
network.max_connections = 8
service.name = raveloxmidi
run_as_daemon = no
daemon.pid_file = raveloxmidi.pid
logging.enabled = yes
logging.log_file = (null)
logging.log_level = debug
security.check = yes
readonly = no
inbound_midi = /dev/sequencer
file_mode = 0640
alsa.input_buffer_size = 4096
config.file = src/conf
alsa.output_device = hw:1,0,0
alsa.input_device = hw:1,1,0
[1544258362]	INFO: raveloxmidi (0.5.4)
[1544258362]	DEBUG: raveloxmidi_alsa_init input: device=hw:1,1,0 ret=0 Success
[1544258362]	DEBUG: rawmidi: handle="hw:1,1,0" hw_id="VirMidi" hw_driver_name="Virtual Raw MIDI" subdevice_name="" flags=7 card=1 device=1
[1544258362]	DEBUG: 	available_min=1, buffer_size=4096, active_sensing=1
[1544258362]	DEBUG: raveloxmidi_alsa_init output: device=hw:1,0,0 ret=0 Success
[1544258362]	DEBUG: rawmidi: handle="hw:1,0,0" hw_id="VirMidi" hw_driver_name="Virtual Raw MIDI" subdevice_name="" flags=7 card=1 device=0
[1544258362]	DEBUG: 	available_min=1, buffer_size=4096, active_sensing=1
[1544258362]	INFO: Adding service 'raveloxmidi._apple-midi._udp'
[1544258362]	DEBUG: net_socket_loop_init: pipe0=12 pipe1=13
[1544258362]	DEBUG: net_socket_alsa_listener: Thread started
[1544258362]	DEBUG: raveloxmidi_alsa_init: poll_descriptor[12]=4
[1544258363]	INFO: Service 'raveloxmidi' successfully established.

Does this work on x86 / non-arm linux?

I have been searching for a long time for a native linux solution for rtpMidi (to send/receive from iOS), and this is the most promising thing I have come across that doesn't use Java

Can this work as an rtpMidi <--> alsa converter on non-arm linux?
If so, how might someone go about using your code? =D

I'm making adistro geared at user friendly live performance and am interested if I could use this

Thanks!

use all memory then crashes once first midi message is sent

Hi,

im attempting to run raveloxmidi on a rPI3 connecting to a mac (10.14.5) over wifi
a very simple setup.. built from GitHub

alsa.input_device = hw:2,0,0
network.bind_address = 0.0.0.0
logging.enabled = yes
logging.log_level = normal

sudo raveloxmidi -N -d -c /etc/raveloxmidi.conf

it starts ok on the rPI, reporting

network.control.port = 5004
network.data.port = 5005
network.local.port = 5006
network.socket_timeout = 30
network.max_connections = 8
service.name = raveloxmidi
service.ipv4 = yes
service.ipv6 = no
run_as_daemon = no
daemon.pid_file = raveloxmidi.pid
logging.enabled = yes
logging.log_level = normal
security.check = yes
readonly = no
inbound_midi = /dev/sequencer
file_mode = 0640
discover.timeout = 5
sync.interval = 10
network.read.blocksize = 2048
alsa.input_buffer_size = 4096
config.file = /etc/raveloxmidi.conf
alsa.input_device = hw:2,0,0
network.bind_address = 0.0.0.0

and the mac sees it, and then I can connect...

viewing with 'top' on rPI, all looks good,
but as soon as i touch a key on the midi controller

the cpu % rises to 100%, and memory then rises to 100% and ravelosmidi is killed by out of memory reaper, and I can see below in dmesg

thoughts?

[  379.645199] raveloxmidi invoked oom-killer: gfp_mask=0x6080c0(GFP_KERNEL|__GFP_ZERO), nodemask=(null), order=0, oom_score_adj=0
[  379.645208] raveloxmidi cpuset=/ mems_allowed=0
[  379.645225] CPU: 2 PID: 1462 Comm: raveloxmidi Tainted: G         C        4.19.27-v7+ #1206
[  379.645228] Hardware name: BCM2835
[  379.645251] [<80111ea8>] (unwind_backtrace) from [<8010d430>] (show_stack+0x20/0x24)
[  379.645263] [<8010d430>] (show_stack) from [<8080cdc0>] (dump_stack+0xd4/0x118)
[  379.645275] [<8080cdc0>] (dump_stack) from [<8023a9dc>] (dump_header+0x80/0x250)
[  379.645285] [<8023a9dc>] (dump_header) from [<80239d54>] (oom_kill_process+0x358/0x3a8)
[  379.645293] [<80239d54>] (oom_kill_process) from [<8023a684>] (out_of_memory+0x134/0x36c)
[  379.645303] [<8023a684>] (out_of_memory) from [<80240adc>] (__alloc_pages_nodemask+0x1024/0x1178)
[  379.645314] [<80240adc>] (__alloc_pages_nodemask) from [<8026f8d8>] (__pte_alloc+0x34/0x1b4)
[  379.645323] [<8026f8d8>] (__pte_alloc) from [<802739f8>] (handle_mm_fault+0xce4/0xd68)
[  379.645334] [<802739f8>] (handle_mm_fault) from [<8082a9a8>] (do_page_fault+0x330/0x3a4)
[  379.645343] [<8082a9a8>] (do_page_fault) from [<8082aad8>] (do_translation_fault+0xbc/0xc0)
[  379.645351] [<8082aad8>] (do_translation_fault) from [<801165dc>] (do_DataAbort+0x58/0xf4)
[  379.645360] [<801165dc>] (do_DataAbort) from [<80101ca4>] (__dabt_usr+0x44/0x60)
[  379.645364] Exception stack(0x9d085fb0 to 0x9d085ff8)
[  379.645369] 5fa0:                                     69a00000 347ff018 00000000 35201008
[  379.645375] 5fc0: 00000001 347feff8 00000000 00000000 75600fac 7613ac1c 00000006 01e30f00
[  379.645381] 5fe0: 34800000 7613aba0 000000ac 000175e4 20000010 ffffffff
[  379.645384] Mem-Info:
[  379.645396] active_anon:219476 inactive_anon:2524 isolated_anon:0
                active_file:81 inactive_file:95 isolated_file:0
                unevictable:0 dirty:0 writeback:0 unstable:0
                slab_reclaimable:3384 slab_unreclaimable:2828
                mapped:367 shmem:2650 pagetables:662 bounce:0
                free:5141 free_pcp:0 free_cma:1634
[  379.645405] Node 0 active_anon:877904kB inactive_anon:10096kB active_file:324kB inactive_file:380kB unevictable:0kB isolated(anon):0kB isolated(file):0kB mapped:1468kB dirty:0kB writeback:0kB shmem:10600kB writeback_tmp:0kB unstable:0kB all_unreclaimable? no
[  379.645417] Normal free:20564kB min:16384kB low:20480kB high:24576kB active_anon:877904kB inactive_anon:10096kB active_file:324kB inactive_file:380kB unevictable:0kB writepending:0kB present:970752kB managed:948300kB mlocked:0kB kernel_stack:952kB pagetables:2648kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:6536kB
[  379.645420] lowmem_reserve[]: 0 0
[  379.645429] Normal: 259*4kB (UMEC) 128*8kB (UME) 125*16kB (UMEC) 60*32kB (UMEC) 21*64kB (UMEC) 12*128kB (UEC) 4*256kB (U) 3*512kB (UE) 1*1024kB (E) 2*2048kB (MC) 1*4096kB (C) = 20636kB
[  379.645487] 2813 total pagecache pages
[  379.645491] 0 pages in swap cache
[  379.645494] Swap cache stats: add 0, delete 0, find 0/0
[  379.645497] Free swap  = 0kB
[  379.645500] Total swap = 0kB
[  379.645503] 242688 pages RAM
[  379.645505] 0 pages HighMem/MovableOnly
[  379.645508] 5613 pages reserved
[  379.645511] 2048 pages cma reserved
[  379.645513] Tasks state (memory values in pages):
[  379.645516] [  pid  ]   uid  tgid total_vm      rss pgtables_bytes swapents oom_score_adj name
[  379.645538] [    115]     0   115     3196      358    18432        0             0 systemd-journal
[  379.645544] [    137]     0   137     3646      205    12288        0         -1000 systemd-udevd
[  379.645554] [    277]   100   277     4320       99    20480        0             0 systemd-timesyn
[  379.645560] [    326]     0   326     5937      117    18432        0             0 rsyslogd
[  379.645567] [    330]     0   330     1425       54    16384        0             0 cron
[  379.645573] [    337]   105   337     1623      122    12288        0          -900 dbus-daemon
[  379.645579] [    359]     0   359    23284      565    53248        0             0 NetworkManager
[  379.645586] [    360]     0   360     1845      104    14336        0             0 systemd-logind
[  379.645591] [    361]   108   361     1601       77    16384        0             0 avahi-daemon
[  379.645598] [    370]   108   370     1601       77    12288        0             0 avahi-daemon
[  379.645604] [    394]     0   394     1150       31    14336        0             0 agetty
[  379.645610] [    409]     0   409     2552      132    16384        0         -1000 sshd
[  379.645616] [    415]     0   415     2419      120    14336        0             0 wpa_supplicant
[  379.645622] [    429]     0   429      524       34     8192        0             0 hciattach
[  379.645628] [    438]     0   438     1818       73    14336        0             0 bluetoothd
[  379.645634] [    449]     0   449     1661      181    16384        0             0 dhclient
[  379.645640] [    582]     0   582     2882      186    20480        0             0 sshd
[  379.645647] [    588]  1000   588     2414      166    18432        0             0 systemd
[  379.645653] [    591]  1000   591     2802      283    16384        0             0 (sd-pam)
[  379.645659] [    598]  1000   598     2915      182    20480        0             0 sshd
[  379.645665] [    601]  1000   601     1663      366    16384        0             0 bash
[  379.645671] [   1456]     0  1456     1908       93    16384        0             0 sudo
[  379.645677] [   1460]     0  1460   221370   215130   882688        0             0 raveloxmidi
[  379.645683] [   1464]     0  1464     2882      186    18432        0             0 sshd
[  379.645689] [   1475]  1000  1475     2882      191    18432        0             0 sshd
[  379.645696] [   1478]  1000  1478     1653      351    12288        0             0 bash
[  379.645702] [   1498]  1000  1498     2133      140    16384        0             0 top
[  379.645706] Out of memory: Kill process 1460 (raveloxmidi) score 908 or sacrifice child
[  379.645735] Killed process 1460 (raveloxmidi) total-vm:885480kB, anon-rss:860520kB, file-rss:0kB, shmem-rss:0kB
[  379.754512] oom_reaper: reaped process 1460 (raveloxmidi), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB

add ipv6 tip to the README.md

You should add the following text from https://github.com/ravelox/pimidi/tree/v0.5.5 to the file https://github.com/ravelox/pimidi/blob/master/README.md

I think it's an important note and people might miss it if it's not in the main README.md.

If you are finding that the client connecting to raveloxmidi is reporting issues trying to connect to an IPv6 address and you do NOT have IPv6 networking, you need to edit /etc/avahi/avahi-daemon.conf and set:

use-ipv6=no
publish-aaaa-on-ipv4=no

Obviously, if you want to use IPv6, both those options should be set to yes
You will need to restart Avahi for those changes to be picked up.

libasound2-dev required for building on ubuntu

If you want to build on Ubuntu 18.04.3 LTS, then in order for pimidi to work with alsa, you will also need:

sudo apt install libasound2-dev

Perhaps this could be added to the README.
Thank you for pimidi.

Connection Bug

I notice if we use the Configuration option remote.connect then we run the script it will only stay connected to the remote computer for about 10 or 20 seconds. On the remote client it will tell me that its been connected with 0ms latanecy. It will pass midi messages but will disconnect within 10 to 20 seconds.

raveloxmidi running at 100% CPU

Hi,

I’m running raveloxmidi v0.5.0. First of all, thanks for the great work!

All works very well, except that the raveloxmidi process is constantly consuming 100% of a single CPU core.

This happens with the default configuration, running it like this:

sudo raveloxmidi -N -d

(Removing the debug flag doesn’t reduce the CPU usage)

The system is a Raspberry Pi 3 running Raspbian Stretch.

When I’m running the process as a systemd service, the unit gets killed every few minutes with the following message:

Sep 09 16:20:40 led-pi systemd[1]: Starting raveloxmidi...
Sep 09 16:20:40 led-pi systemd[1]: Started raveloxmidi.
Sep 09 16:20:40 led-pi raveloxmidi[3690]: network.bind_address = 0.0.0.0
Sep 09 16:20:40 led-pi raveloxmidi[3690]: network.control.port = 5004
Sep 09 16:20:40 led-pi raveloxmidi[3690]: network.data.port = 5005
Sep 09 16:20:40 led-pi raveloxmidi[3690]: network.local.port = 5006
Sep 09 16:20:40 led-pi raveloxmidi[3690]: network.socket_interval = 5000
Sep 09 16:20:40 led-pi raveloxmidi[3690]: network.max_connections = 8
Sep 09 16:20:40 led-pi raveloxmidi[3690]: service.name = led-pi
Sep 09 16:20:40 led-pi raveloxmidi[3690]: run_as_daemon = yes
Sep 09 16:20:40 led-pi raveloxmidi[3690]: daemon.pid_file = raveloxmidi.pid
Sep 09 16:20:40 led-pi raveloxmidi[3690]: logging.enabled = yes
Sep 09 16:20:40 led-pi raveloxmidi[3690]: logging.log_file = (null)
Sep 09 16:20:40 led-pi raveloxmidi[3690]: logging.log_level = debug
Sep 09 16:20:40 led-pi raveloxmidi[3690]: security.check = yes
Sep 09 16:20:40 led-pi raveloxmidi[3690]: readonly = no
Sep 09 16:20:40 led-pi raveloxmidi[3690]: inbound_midi = /dev/sequencer
Sep 09 16:20:40 led-pi raveloxmidi[3690]: file_mode = 0640
Sep 09 16:20:40 led-pi raveloxmidi[3690]: alsa.input_buffer_size = 4096
Sep 09 16:20:40 led-pi raveloxmidi[3690]: config.file = /etc/raveloxmidi.conf
Sep 09 16:20:40 led-pi raveloxmidi[3690]: alsa.output_device = hw:0,0,0
Sep 09 16:20:40 led-pi raveloxmidi[3690]:  =
Sep 09 16:20:40 led-pi raveloxmidi[3690]: [1536502840]        INFO: raveloxmidi (0.5.0)
Sep 09 16:20:40 led-pi raveloxmidi[3690]: [1536502840]        DEBUG: raveloxmidi_alsa_init output: device=hw:0,0,0 ret=0 Success
Sep 09 16:20:40 led-pi raveloxmidi[3690]: [1536502840]        INFO: net_socket_loop_shutdown: signal=15 action=shutdown
Sep 09 16:20:40 led-pi raveloxmidi[3690]: [1536502840]        INFO: Adding service 'led-pi._apple-midi._udp'
Sep 09 16:20:41 led-pi raveloxmidi[3690]: [1536502841]        INFO: Service 'led-pi' successfully established.
Sep 09 16:22:10 led-pi systemd[1]: raveloxmidi.service: State 'stop-sigterm' timed out. Killing.
Sep 09 16:22:10 led-pi systemd[1]: raveloxmidi.service: Killing process 3695 (raveloxmidi) with signal SIGKILL.
Sep 09 16:22:10 led-pi systemd[1]: raveloxmidi.service: Unit entered failed state.
Sep 09 16:22:10 led-pi systemd[1]: raveloxmidi.service: Failed with result 'timeout'.
Sep 09 16:22:11 led-pi systemd[1]: raveloxmidi.service: Service hold-off time over, scheduling restart.

Any idea how to resolve this?

Question / Segfault (core dumped) on Ubuntu 18.04

Hello

Thank you for this tool. I have a question, is there also a possibility to connect with ravelox-pimidi to rtpMIDI from Tobias Erichsen. Because the other direction it works if i let pimidi run as server on my ubuntu and initiate the connection from rtpMIDI from my Windows.

I've drawn a Diagram, and i'm quite sure your tool isnt meant to work that way, but it does https://0x8.ch/music/remote/Domain-Model-0.0.1.svg

but it would really great to have eg. a variable in the config file like

network.connect_to = 192.168.123.123

and the second thing was that it crashes then and when (Segfault)

with kind regards
Marc

build fails because of missing -pthread linking flag

I had the following issue when building :

gcc  -g -O2   -o raveloxmidi  raveloxmidi-raveloxmidi.o raveloxmidi-dns_service_publisher.o raveloxmidi-cmd_end_handler.o raveloxmidi-cmd_inv_handler.o raveloxmidi-cmd_sync_handler.o raveloxmidi-cmd_feedback_handler.o raveloxmidi-midi_journal.o raveloxmidi-chapter_p.o raveloxmidi-chapter_n.o raveloxmidi-chapter_c.o raveloxmidi-net_socket.o raveloxmidi-net_response.o raveloxmidi-midi_note.o raveloxmidi-midi_control.o raveloxmidi-midi_program.o raveloxmidi-midi_payload.o raveloxmidi-midi_command.o raveloxmidi-net_applemidi.o raveloxmidi-net_connection.o raveloxmidi-rtp_packet.o raveloxmidi-raveloxmidi_config.o raveloxmidi-daemon.o raveloxmidi-logging.o raveloxmidi-utils.o raveloxmidi-raveloxmidi_alsa.o -lavahi-common -lavahi-client -lasound 

/usr/bin/ld: raveloxmidi-net_socket.o: référence au symbole non défini «pthread_join@@GLIBC_2.4»
//lib/arm-linux-gnueabihf/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:286 : la recette pour la cible « raveloxmidi » a échouée

It seems that -pthread is missing from the gcc call.
Looking into the Makefile tell me that PTHREAD_CFLAGS is set to -pthread while PTHREAD_LIBS is blank.

Adding -pthread flag to the end of the gcc call fix the issue.
So I guess something is badly detected, but I can't find where.

I'm on Raspbian scretch lite, fresh install of 2018.11.13 release.

build raveloxmidi ubuntu

hello,
This is exactly what I need, thanks a lot for sharing this!
I am trying to build it in ubuntu instead of raspberry, would you like to help me a little bit with this?
Thanks in advance!

Data race accessing context sequence

It's not easy to repro this one, but here's a data race reported by AddressSanitizer:

==================
WARNING: ThreadSanitizer: data race (pid=4707)
  Write of size 4 at 0x7b140000a470 by thread T2:
    #0 net_ctx_increment_seq /home/mganss/pimidi/raveloxmidi/src/net_connection.c:419 (raveloxmidi+0x10a4f)
    #1 net_distribute_midi /home/mganss/pimidi/raveloxmidi/src/net_distribute.c:157 (raveloxmidi+0x15e80)
    #2 net_socket_read /home/mganss/pimidi/raveloxmidi/src/net_socket.c:360 (raveloxmidi+0xa3dc)
    #3 net_socket_alsa_listener /home/mganss/pimidi/raveloxmidi/src/net_socket.c:620 (raveloxmidi+0xae7b)
    #4 <null> <null> (libtsan.so.0+0x296ad)

  Previous read of size 4 at 0x7b140000a470 by main thread:
    #0 applemidi_feedback_responder /home/mganss/pimidi/raveloxmidi/src/applemidi_feedback.c:66 (raveloxmidi+0x594b)
    #1 net_socket_read /home/mganss/pimidi/raveloxmidi/src/net_socket.c:315 (raveloxmidi+0xad46)
    #2 net_socket_fd_loop /home/mganss/pimidi/raveloxmidi/src/net_socket.c:508 (raveloxmidi+0xb817)
    #3 main /home/mganss/pimidi/raveloxmidi/src/raveloxmidi.c:118 (raveloxmidi+0x3aae)

  Location is heap block of size 72 at 0x7b140000a460 allocated by main thread:
    #0 calloc <null> (libtsan.so.0+0x2afc3)
    #1 net_ctx_create /home/mganss/pimidi/raveloxmidi/src/net_connection.c:153 (raveloxmidi+0xfece)
    #2 net_ctx_register /home/mganss/pimidi/raveloxmidi/src/net_connection.c:305 (raveloxmidi+0x104d4)
    #3 applemidi_inv_responder /home/mganss/pimidi/raveloxmidi/src/applemidi_inv.c:68 (raveloxmidi+0x540c)
    #4 net_socket_read /home/mganss/pimidi/raveloxmidi/src/net_socket.c:300 (raveloxmidi+0xada5)
    #5 net_socket_fd_loop /home/mganss/pimidi/raveloxmidi/src/net_socket.c:508 (raveloxmidi+0xb817)
    #6 main /home/mganss/pimidi/raveloxmidi/src/raveloxmidi.c:118 (raveloxmidi+0x3aae)

  Thread T2 (tid=4710, running) created by main thread at:
    #0 pthread_create <null> (libtsan.so.0+0x2bcee)
    #1 net_socket_alsa_loop /home/mganss/pimidi/raveloxmidi/src/net_socket.c:633 (raveloxmidi+0xb56d)
    #2 main /home/mganss/pimidi/raveloxmidi/src/raveloxmidi.c:116 (raveloxmidi+0x3aa9)

SUMMARY: ThreadSanitizer: data race /home/mganss/pimidi/raveloxmidi/src/net_connection.c:419 in net_ctx_increment_seq
==================

The line numbers might be off because this was running on my development branch. applemidi_feedback.c:66 is this:

if( feedback->rtp_seq[1] >= ctx->seq )
{
	logging_printf( LOGGING_DEBUG, "applemidi_feedback_responder: Resetting journal\n" );
	net_ctx_journal_reset(ctx);
}

I'm not sure if this is the right way to go, but I think it could be fixed by pushing the test into net_ctx_journal_reset and inside a lock there plus adding a lock around the access to ctx->seq in net_ctx_increment_seq.

Failure to get socket

Here is what I get when I run raveloxmidi (on Rasberry Pi)

[1554059858] ERROR: net_socket_init: Invalid address family [(null)][0]
[1554059858] ERROR: Unable to create sockets

avahi-daemon is running

any ideas?

Custom Configuration File - Bind Address Problems

Hi there!

I'm trying to set up raveloxmidi on a new system using a custom config file. I tried specifying the file location with -c but it isn't working right. What is the proper syntax to use -N -d and -c?

Another attempt I've tried is just editing the raveloxmidi_config.c file to change the settings and they aren't reflecting when I run the code for some reason.

Thank you so much for developing this! It's very useful.

Problem - Windows connection: no MIDI note..

Hi Dave,
how are you?

I'm using ravelox midi with rtpMIDI.
I created an Ubuntu virtual machine to test it.

When I start raveloxmidi, the connection is successfully created, and I see the new port "raveloxmidi". I can connect "raveloxmidi" to my local session.

The problem occurs when I start the python script (note on / note off - udp_client.py), it runs OSX, but Windows does not come anything ...

What could be the problem?

Thank you very much for helping!
Alessio

[1460437250]    DEBUG:  Used=1
[1460437250]    DEBUG:  ssrc=8dbd2ad8
[1460437250]    DEBUG:  send_ssrc=00704a57
[1460437250]    DEBUG:  initiator=3320978e
[1460437250]    DEBUG:  seq=00006397 (00025495)
[1460437250]    DEBUG:  host=192.168.0.2:5004 )
[1460437250]    DEBUG: Journal has data: YES
[1460437250]    DEBUG: Journal (Header: bitfield=02 totchan=1 seq=6396)
[1460437250]    DEBUG: Header Size = 4
[1460437250]    DEBUG: Channel #7 (Header: S=0 H=0 len=0 bitfield=08)
[1460437250]    DEBUG: Chapter N(header): B=1 len=0 low=7 high=7
[1460437250]    DEBUG: NOTE: S=0 num=60 Y=0 velocity=127
[1460437250]    DEBUG: NOTE: S=0 num=60 Y=0 velocity=127
[1460437250]    DEBUG: NOTE: S=0 num=60 Y=0 velocity=127
[1460437250]    DEBUG: NOTE: S=0 num=60 Y=0 velocity=127
[1460437250]    DEBUG: Offbits[7]=08
[1460437250]    DEBUG: Sent 77 bytes to 192.168.0.2:5005

Add MidiClock Support

As I first saw this, I though man this is exactly what I need but then, I saw that you don't support MidiClock.
So if you could add a support for MidiClock would be super cool ;)

Anyway pretty cool project and I'm definitely looking forward to see it grow.

Greets Jacko

pimidi from pi to pi possible?

Hey Dave,
thank you very much for your work on pimidi!
I tested raveloxmidi with a pi being connected to Ableton Live via the mac osx midi network studio (on Ethernet). This worked.
But for my project I would like to connect two Raspberry Pis via Ethernet for midi communication. Is there any way I could achieve this using raveloxmidi?
In the midi network studio on mac osx we have the gui to create a midi network session and connect to participants (-> the raveloxmidi instance). But how would I instantiate such a session on a raspberry pi and connect to the other raspberry pi?

I couldn't find an email address of yours, so I just created a new issue to contact you. If you prefer to communicate another way, please let me know. My email address is [email protected].
Hope to hear from you, with best regards
Jakob

Make fails

I'm newbie in linux development.

When ill tryied to build pimdi on fresh raspbian, iv'e got error:

pi@raspberrypi:~ $ cd pimidi
pi@raspberrypi:~/pimidi $ cd raveloxmidi
pi@raspberrypi:~/pimidi/raveloxmidi $ cd src
pi@raspberrypi:~/pimidi/raveloxmidi/src $ make
make: *** Nie podano obiektów i nie znaleziono makefile. Stop. [translation from Polish: objects was not given and makefile was not found]
pi@raspberrypi:~/pimidi/raveloxmidi/src $ ^C
pi@raspberrypi:~/pimidi/raveloxmidi/src $

Could you provide all needed prerequisites and step by step procedure for build and run your package?

Disconnection happen too often

while my Pi is still connected to the network, I got this pop up from the Audio and Midi Settings :

image

And it doesn't work anymore until I manually reconnect it.

How to debug this disconnection to fix it ? (my network setup might be involved)

rtpMIDI Device Name Changed

Hi Dave,

I changed the name of the computer which rtpMIDI runs on and now it fails to receive MIDI Messages from the Raspberry Pi. I can see in rtpMIDI it has a Participant named networkmidi @ 0ms lag though inside of my midi software it is not receiving messages. Have you seen this before?

Thank you.

Infinite loop in the arg parsing of raveloxmidi_config.c

My knowledge of command line linux programming is limited, but a few fprintf's and commenting out the while(1) loop in config_init() leads me to believe that that while loop gets stuck in an infinite loop under normal operation. For my own purposes, I just uncommented the config statements that I wanted and the program progresses properly.

Wish I could provide the actual solution though...

Possible to build as a dynamic library?

I would like to interface your code to a Java application (a PI sample player interfaced to an old set of Hammond Organ pedals. I want to be able to send out midi via rtp/WIFI as pedals are pressed. To do this, I can write a Java JNI interface to a C/C++ dynamic library. Receive midi would also be useful of course. Your code does all of this so I just need it to exist as a library instead of a daemon.

Is there an easy way to configure the build process to do this? If not, could you give me some pointers to where I could educate myself?

inbound midi

Hello Dave,

I have successfully installed raveloxmidi and have the raspberry pi sending midi notes and receiving on the Mac. One problem I have is that I tried specifying different locations but the inbound midi would never be logged, I am receiving the error:

[1540446274] WARNING: net_socket_setup: Unable to open "/home/pi/pishare/m.txt" : No such file or directory

My goal is to receive the midi messages (Program change and CC) being sent from mac and 'forward' them to the control external guitar effects processor via a usb midi cable.

Can you shed some lights on how can I achieve this?

Let me see if I undestood. (PiMidi -> ipad)

Can I run Pimidi in my raspberry PI 3 as a rtpMidi server (like I do in windows with RTPmidi program) and control things in amplitube or other guitar amp simulator that uses apple core midi features ?

Receive midi message from mac to pi

I have installed the script and tested it. So far I have been able to connect to the mac. I like to know once connected is there any way for the mac to send a midi message to your program.

basically I have connected to the mac. now the mac is sending midi messages however pimidi is not receiving the messages.

BUG (remote.control_use) Issue #47 is back with version 0.8.99

Having issues with using remote.control_use feature. I noticed that there was a new version of the software after doing the following

git clone -b experimental https://github.com/ravelox/pimidi.git

It downloads version 0.8.99.

It looks like remote.control_use feature is not recognized. If I click on the download like directly from github page then it downloads the working version. Is there something I am doing wrong or has that feature not been implemented yet for the new version?
issue 47

rtpmidi packages input on raveloxmidi problems

Hello Dave,
I open a new ticket to ask you information.

I have tried to send a MIDI note from a controller (from a remote IP in wifi network) to raveloxmidi, to read the data back (for example from a sequencer).
On raveloxmidi logs I read: Dates (0x80) on socket (1) from (192.168.0.4:5008)

I added some debugging prints within raveloxmidi.

If I die a normal MIDI note (running the python script), I get:
DEBUG: Midi Packet: aa
DEBUG: Midi Packet: 96
DEBUG: Midi Packet: 3c
DEBUG: Midi Packet: 7f

While if I get a midi note to an external controller, I get:
DEBUG: Midi Packet: 80
DEBUG: Midi Packet: 61
DEBUG: Midi Packet: 2a
DEBUG: Midi Packet: 82

We seem incorrect data ..

According to you, we can integrate ravelox midi adding this feature?
You may give us directions?

Thank you so much!
Alessio

cc data?

One thing I wasn't sure about from the readme is, can ravelox send cc data as well as note data? I don't see why it wouldn't but just wanted to check

Sysex file crashes ravelox

Hi,

as a test, I tried to send a sysex file to ravelox, which emits a segmentation fault. I just compiled a fresh ravelox binary from this repository.

The sysex file I've used is from here: http://host.mtnsys.com:81/faq-fcb/ExampleSysexFiles.htm named Beh Firmware Blank Sysex.syx. I've used Midi-OX to send it to my local rtpMIDI port.

The last few lines prior the segmentation fault are:

[1523114573]	DEBUG: midi_payload_to_commands: current_len=5
hexdump(0x55f2e8aa400d , 4)

00 .	00 .	00 .	f0 .	
-- end hexdump
[1523114573]	INFO: MIDI command( num=253,delta=0,command="End SysEx")
[1523114573]	DEBUG: midi_payload_to_commands: current_len=4
hexdump(0x55f2e8aa400e , 3)

00 .	00 .	f0 .	
-- end hexdump
[1523114573]	INFO: MIDI command( num=254,delta=0,command="End SysEx")
[1523114573]	DEBUG: midi_payload_to_commands: current_len=3
hexdump(0x55f2e8aa400f , 2)

00 .	f0 .	
-- end hexdump
[1523114573]	INFO: MIDI command( num=255,delta=0,command="End SysEx")
[1523114573]	DEBUG: midi_payload_to_commands: current_len=2
hexdump(0x55f2e8aa4010 , 1)

f0 .	
-- end hexdump
[1523114573]	INFO: MIDI command( num=256,delta=0,command="System Exclusive")
[1]    26445 segmentation fault  /usr/local/bin/raveloxmidi -N -d

Error logging on byte received

stdout is polluted with:
...
[1547993924] ERROR: net_ctx_send: send_address size=28
[1547993924] ERROR: net_ctx_send: send_address size=28
[1547993925] ERROR: net_ctx_send: send_address size=28
[1547993925] ERROR: net_ctx_send: send_address size=28
[1547993925] ERROR: net_ctx_send: send_address size=28
...

It seems that function "net_ctx_send" always logs this error when the function is called.
See raveloxmidi/src/net_connection. line 321:

logging_printf(LOGGING_ERROR, "net_ctx_send: send_address size=%d\n", sizeof( send_address ) );

Multiple instances of raveloxmidi

Hello Dave, do you think you can start two instances of raveloxmidi on two different ports?
In this way, for example, you could control the sequencer and also a plugin.

Thank you so much for your help.

Segmentation fault when receiving MIDI Clock messages

Hi,

raveloxmidi 0.5.1 is crashing when I feed it with MIDI clock messages:

Start message:

[1537615222]	DEBUG: net_socket_read: inbound MIDI received
[1537615222]	DEBUG: rtp_packet_dump: v=2,p=0,x=0,cc=0,m=0,pt=97,seq=5351,timestamp=0x02cec3e0,ssrc=0x6343568b,payload_length=2,payload=0x16278b8
[1537615222]	DEBUG: MIDI Payload(B=0,J=0,Z=0,P=0,payload_length=1)
[1537615222]	DEBUG: midi_payload_to_commands: payload->header->len=1
hexdump(0x1634960 , 1)

fa .
-- end hexdump
[1537615222]	DEBUG: midi_payload_to_commands: current_len=1
hexdump(0x1634960 , 1)

fa .
-- end hexdump
[1537615222]	DEBUG: MIDI Command: status=0xFA,description="Start"
[1537615222]	DEBUG: 	channel_message:channel=0xa message=0xf
[1537615222]	DEBUG: 	system_message: message=0xfa
[1537615222]	DEBUG: 	delta=0, data_len=0
[1537615222]	DEBUG: net_socket_read: feedback write(bytes=12,socket=5,host=10.0.2.105,port=5005)
[1537615222]	DEBUG: net_socket_read: output_enabled
[1537615222]	DEBUG: net_socket_read: inbound MIDI write(bytes=1)
[1537615222]	DEBUG: raveloxmidi_alsa_write: bytes_written=1
[1537615222]	DEBUG: FREENULL: description="midi_payload:payload->buffer",ptr=0x1634960
[1537615222]	DEBUG: FREENULL: description="midi_payload:payload->header",ptr=0x16279b0
[1537615222]	DEBUG: FREENULL: description="midi_payload",ptr=0x16279c0
Segmentation fault

Timing Clock message:

[1537615397]	DEBUG: net_socket_read: inbound MIDI received
[1537615397]	DEBUG: rtp_packet_dump: v=2,p=0,x=0,cc=0,m=0,pt=97,seq=7096,timestamp=0x02e98524,ssrc=0x6343568b,payload_length=2,payload=0xc808b8
[1537615397]	DEBUG: MIDI Payload(B=0,J=0,Z=0,P=0,payload_length=1)
[1537615397]	DEBUG: midi_payload_to_commands: payload->header->len=1
hexdump(0xc80110 , 1)

f8 .
-- end hexdump
[1537615397]	DEBUG: midi_payload_to_commands: current_len=1
hexdump(0xc80110 , 1)

f8 .
-- end hexdump
[1537615397]	DEBUG: MIDI Command: status=0xF8,description="Timing Clock"
[1537615397]	DEBUG: 	channel_message:channel=0x8 message=0xf
[1537615397]	DEBUG: 	system_message: message=0xf8
[1537615397]	DEBUG: 	delta=0, data_len=0
[1537615397]	DEBUG: net_socket_read: feedback write(bytes=12,socket=5,host=10.0.2.105,port=5005)
[1537615397]	DEBUG: net_socket_read: output_enabled
[1537615397]	DEBUG: net_socket_read: inbound MIDI write(bytes=1)
[1537615397]	DEBUG: raveloxmidi_alsa_write: bytes_written=1
[1537615397]	DEBUG: FREENULL: description="midi_payload:payload->buffer",ptr=0xc80110
[1537615397]	DEBUG: FREENULL: description="midi_payload:payload->header",ptr=0xc803f0
[1537615397]	DEBUG: FREENULL: description="midi_payload",ptr=0xc80100
Segmentation fault

My configuration:

service.name = led-pi
alsa.output_device = hw:0,0,0
logging.log_level = debug

Command line:

sudo raveloxmidi -N -d -c /etc/raveloxmidi.conf

Being able to receiving MIDI clock information would be very useful for me. Is this maybe an easy fix?

Still having issues with not responding to the connection request

Hey ravelox

I'm still getting those having issues with not responding to the connection request when trying to connect.

I did follow these instructions, but still no luck

You need to edit /etc/avahi/avahi-daemon.conf and set:

use-ipv6= no
publish-aaaa-on-ipv4= no

Here is my debug files :

network.control.port = 5004
network.data.port = 5005
network.local.port = 5006
network.socket_timeout = 30
network.max_connections = 8
service.name = raveloxmidi
service.ipv4 = yes
service.ipv6 = no
run_as_daemon = no
daemon.pid_file = raveloxmidi.pid
logging.enabled = yes
logging.log_level = debug
security.check = yes
readonly = no
inbound_midi = /dev/sequencer
file_mode = 0640
discover.timeout = 5
sync.interval = 10
network.read.blocksize = 2048
alsa.input_buffer_size = 4096
[1559928915] [tid=1996437504] INFO: raveloxmidi (0.7.99)
[1559928915] [tid=1996437504] DEBUG: net_socket_init: network.bind_address=[(null)], family=0
[1559928915] [tid=1996437504] ERROR: net_socket_init: Invalid address family [(null)][0]
[1559928915] [tid=1996437504] ERROR: Unable to create sockets
[1559928915] [tid=1996437504] DEBUG: config_teardown config_items=0x185f028 count=21

Not sure if this is beacause of Raspi internal MIDI routing/wiring

Hi Dave,

First of all, your work looks very promising.

I have successfully installed Raveloxmidi as per Readme.md and successfully tested the communication between Raspi and Apple MIDI network in MacBook Pro including ./note_send.py . Everything is looking good except for ,I assume, communication between Hareware MIDI input signal and Raveloxmidi. Raveloxmidi is failed to receive Note on/off event from MIDI keyboard so it can’t broadcast MIDI event to other computer in the network.

Here is my setup

  1. MIDI Keyboard (OP-1) is connected to RPi Moel B+
  2. MacBook Pro shares the same WiFi network with RPi

Below is what I have tested so far after installing Raveloxmidi.

  1. I ran Raveloxmidi -Nd So that MacBook Pro can see “Raveloxmidi” in Audio MIDI Setup
  2. I successfully established connection between MacBook Pro and Raveloxmidi, the log in RPi’s terminal also confirms MBP IP address.
  3. I sent MIDI signal using ./note_send.py and ./send_100.py From RPi to Logic Pro X in MBP. Logic Pro X nicely returns the sound of middle C. It was also able to record MIDI C note from the test scripts.
  4. In RPi, I checked aconnect -io To see if MIDI keyboard is registered in the list, which it did.
  5. In RPi, i ran aseqdump -p 20:0 To see if RPi can pick up any MIDI event such as note on/ff on a particular pitch which it did absolutely precisely.

Still I can’t forward the MIDI signal picked up by RPi from Hardware MIDI Keyboard to MBP. So I assume that MIDI wiring in RPi can’t find Raveloxmidi as the final destination. Have you encounter this before? Any suggestion is welcomed. Thanks

Very nice work by the way.
Krichkorn

midi ports not exposed or I dont know how

Hi,

I got raveloxmidi up and running, made a config file and now I can connect to the rtpMIDI session running on my windows laptop. (in the terminal output, after starting the program, it just waits on a blank line, there's no feedback messages to see the connection is made from the linux side)

But while on windows, from my daw the session is selectable as midi device, on linux this does not happen. I've checked in daw applications and in jack connection manager cadence with claudia, there's not raveloxmidi device or port to be found anywhere.

Am I missing something? A user manual containing some use case examples would be very welcome for this.

Cannot read sent data to raspberry pi

Hi Dave! Thank you for the software.
I am trying to send midi packets from a PC to the raspberry pi, the opposite way in which you planned your drum kit. I want to read the midi note arriving to the raspberry and then flash some lights with the GPIO pins.
The issue is that altought I succesfully built and executed raveloxmidi, I cannot read the port in which packets arrive.

I tried the following python script:

Import socket
Import struct

host='localhost'
port=5006

s=socket.socket(socket.AF_INET, socket_DGRAM)
s.connect((host,port))
print(s.recv(1024))
s.close

Nothing happens after s.recv.... it seems no data is read!
Can you help me with this please?

Thank you Dave
Cheers, Tom

Inbound Midi File Type

Hello Dave,

Thank you again for creating this amazing software for us! I am trying to interpret the inbound midi file. I have it saving to midi_inbound.txt on our Raspberry Pi Desktop. When I try opening the file in a text editor, it shows Question Marks inside of Diamond icons. When I try reading it with python, it shows the following:

Traceback (most recent call last):
File "Desktop/display_handler.py", line 733, in
print(str(f.read()))
File "/usr/lib/python3.5/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 0: invalid start byte

problems with pcduino

Hello,

I am trying to build and run raveloxmidi on a pcduino2 board with ubuntu 12.04. When I try to run raveloxmidi I am getting the following errors:
[1422088320] ERROR: Failed to create client: Daemon not running
[1422088320] ERROR: Unable to create publish thread
*** glibc detected *** ./raveloxmidi: double free or corruption (fasttop): 0x016c8890 ***

Can anyone help me?
Thanks in advance!

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.