ravelox / pimidi Goto Github PK
View Code? Open in Web Editor NEWRaspberry Pi RTP MIDI
Raspberry Pi RTP MIDI
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?
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.
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.
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)
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?
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]
I am pretty sure I have raveloxmidi properly installed. How can I tell? How do I start it?
When I run modprobe snd-virmidi
I 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?
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.
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
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
==================
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
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.
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!
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
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.
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.
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.
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?
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
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.
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!
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
.
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?
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.
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
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
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
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?
Is there a way to integrate this with ALSA MIDI? I'd love to use this as a MIDI interface within Supercollider.
Edit: It looks like this would be an ideal case for ALSA RawMIDI: http://www.alsa-project.org/~tiwai/writing-an-alsa-driver/ch09.html
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.
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...
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?
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?
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 ?
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.
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?
ERROR: Unable to write pid to raveloxmidi.pid: Read-only file system
Please provide work around...
Thanks in advance
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
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
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
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 ) );
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.
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?
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
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
Below is what I have tested so far after installing Raveloxmidi.
Raveloxmidi -Nd
So that MacBook Pro can see “Raveloxmidi” in Audio MIDI Setup./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.aconnect -io
To see if MIDI keyboard is registered in the list, which it did.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
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.
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
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
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!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.