Title: midi_file_player.py + multiprocessing · Issue #99 · spatialaudio/jackclient-python · GitHub
Open Graph Title: midi_file_player.py + multiprocessing · Issue #99 · spatialaudio/jackclient-python
X Title: midi_file_player.py + multiprocessing · Issue #99 · spatialaudio/jackclient-python
Description: Hi, I'm trying to modify this example in order to make it compatible with multiprocessing. Mainly I had to rename some global variables: #!/usr/bin/env python3 import sys import threading import jack from mido import MidiFile from multip...
Open Graph Description: Hi, I'm trying to modify this example in order to make it compatible with multiprocessing. Mainly I had to rename some global variables: #!/usr/bin/env python3 import sys import threading import ja...
X Description: Hi, I'm trying to modify this example in order to make it compatible with multiprocessing. Mainly I had to rename some global variables: #!/usr/bin/env python3 import sys import threading impor...
Opengraph URL: https://github.com/spatialaudio/jackclient-python/issues/99
X: @github
Domain: patch-diff.githubusercontent.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"midi_file_player.py + multiprocessing","articleBody":"Hi,\r\nI'm trying to modify [this](https://github.com/spatialaudio/jackclient-python/blob/master/examples/midi_file_player.py) example in order to make it compatible with [multiprocessing](https://docs.python.org/3/library/multiprocessing.html).\r\n\r\nMainly I had to rename some global variables:\r\n\r\n```\r\n#!/usr/bin/env python3\r\n\r\nimport sys\r\nimport threading\r\n\r\nimport jack\r\nfrom mido import MidiFile\r\nfrom multiprocessing import Process\r\n\r\nmidi_file = '../Musica/Mozart/k265/Zwölf-Variationen.midi'\r\n\r\ntry:\r\n mid = iter(MidiFile(midi_file))\r\nexcept Exception as e:\r\n sys.exit(type(e).__name__ + ' while loading MIDI: ' + str(e))\r\n\r\nclient = jack.Client('Luces')\r\nmidi_port = client.midi_outports.register('output')\r\nmidi_event = threading.Event()\r\nmidi_msg = next(mid)\r\nmidi_fs = None # sampling rate\r\nmidi_offset = 0\r\n\r\n@client.set_process_callback\r\ndef process(frames):\r\n global midi_offset\r\n global midi_msg\r\n midi_port.clear_buffer()\r\n while True:\r\n if midi_offset \u003e= frames:\r\n midi_offset -= frames\r\n return # We'll take care of this in the next block ...\r\n # Note: This may raise an exception:\r\n midi_port.write_midi_event(midi_offset, midi_msg.bytes())\r\n try:\r\n midi_msg = next(mid)\r\n except StopIteration:\r\n midi_event.set()\r\n raise jack.CallbackExit\r\n midi_offset += round(midi_msg.time * midi_fs)\r\n\r\n@client.set_samplerate_callback\r\ndef samplerate(samplerate):\r\n global midi_fs\r\n midi_fs = samplerate\r\n\r\n@client.set_shutdown_callback\r\ndef shutdown(status, reason):\r\n print('JACK shutdown:', reason, status)\r\n midi_event.set()\r\n\r\ndef run_midi():\r\n with client:\r\n print('Playing', repr(midi_file), '... press Ctrl+C to stop')\r\n try:\r\n midi_event.wait()\r\n except KeyboardInterrupt:\r\n print('\\nInterrupted by user')\r\n\r\nif __name__ == \"__main__\":\r\n processes = [Process(target=run_midi)]\r\n for p in processes:\r\n p.start()\r\n for p in processes:\r\n p.join()\r\n```\r\n\r\nNow I get this error at the end of the execution:\r\n\r\n```\r\nPlaying '../Musica/Mozart/k265/Zwölf-Variationen.midi' ... press Ctrl+C to stop\r\nCannot read socket fd = 5 err = Success\r\nCheckRes error\r\nJackSocketClientChannel read fail\r\nJACK shutdown: JACK server has been closed \u003cjack.Status 0x21: failure, server_error\u003e\r\n```\r\n\r\nHow can I fix it?\r\n\r\nThank you!\r\n\r\nCarlo","author":{"url":"https://github.com/Stemby","@type":"Person","name":"Stemby"},"datePublished":"2020-11-07T05:01:06.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":7},"url":"https://github.com/99/jackclient-python/issues/99"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:efcd1401-9e36-e5da-5f5c-41c39aede006 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | BD0E:3B0786:15F632E:1CF4AA4:69770A77 |
| html-safe-nonce | 77ed1b33f7217a7a05299be10d120b04a81171a630b077a1c4410d687de8180d |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCRDBFOjNCMDc4NjoxNUY2MzJFOjFDRjRBQTQ6Njk3NzBBNzciLCJ2aXNpdG9yX2lkIjoiODYxMjk5MDQ4MDcyNTUxMDc3NSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 80202293ae0a8063450795b7f551186edb70d7c0d2ad2230de57f83829f92739 |
| hovercard-subject-tag | issue:738173096 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/spatialaudio/jackclient-python/99/issue_layout |
| twitter:image | https://opengraph.githubassets.com/ff1458919fc6756912cc620b64a0464f5ca8ea38ca09fc91397961d82c1a51ef/spatialaudio/jackclient-python/issues/99 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/ff1458919fc6756912cc620b64a0464f5ca8ea38ca09fc91397961d82c1a51ef/spatialaudio/jackclient-python/issues/99 |
| og:image:alt | Hi, I'm trying to modify this example in order to make it compatible with multiprocessing. Mainly I had to rename some global variables: #!/usr/bin/env python3 import sys import threading import ja... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | Stemby |
| hostname | github.com |
| expected-hostname | github.com |
| None | 01d198479908d09a841b2febe8eb105a81af2af7d81830960fe0971e1f4adc09 |
| turbo-cache-control | no-preview |
| go-import | github.com/spatialaudio/jackclient-python git https://github.com/spatialaudio/jackclient-python.git |
| octolytics-dimension-user_id | 7491513 |
| octolytics-dimension-user_login | spatialaudio |
| octolytics-dimension-repository_id | 27613463 |
| octolytics-dimension-repository_nwo | spatialaudio/jackclient-python |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 27613463 |
| octolytics-dimension-repository_network_root_nwo | spatialaudio/jackclient-python |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | f752335dbbea672610081196a1998e39aec5e14b |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width