https://www.polyphone-soundfonts.com/
to send MIDI NOTES to the SF2 player, CARLA's own SF2 player, a midi cw output is needed....
and provided by RECRI KEYER in this example https://github.com/recri/keyer
other options for midi cw keying are using a CW AUDIO output to the input of an AUDIO TO MIDI app like trigger midi mono OR reagate https://lsp-plug.in/?page=manuals§ion=trigger_midi_mono https://www.kvraudio.com/product/reagate_by_cockos
Views: 59
Tags:
Here is the same setup sending CW MIDI over IP from one op to another
Gstreamer has 2 midi elements that work for sending CW MiDi over iP
ALSAmidiSRC and FLUIDdec
https://gstreamer.freedesktop.org/documentation/alsa/alsamidisrc.ht... https://gstreamer.freedesktop.org/documentation/fluidsynthmidi/inde...
TO Key CW MiDi the RECRI KEYER CW KEYER apps were used:
https://github.com/recri/keyer (also to use the recri SDR modules - "hilbert-cell" "lo-mixer" and "filt" for the RECEIVE tracking CW PITCH adjustment with a tracking cw audio bandpass filter)
here are the Gstreamer scripts used in this demo:
CW MIDI TRANSMITTER:
gst-launch-1.0 -v alsamidisrc ports=0 ! queue ! rtpgstpay ! queue ! udpsink host=(IP ADDRESS OF RX OP) port=1331
CW MIDI RECEIVER:
gst-launch-1.0 udpsrc port=1331 ! "application/x-rtp, media=(string)application, clock-rate=(int)90000, encoding-name=(string)X-GST, caps=(string)YXVkaW8veC1taWRpLWV2ZW50, capsversion=(string)0, payload=(int)96" ! queue ! rtpbin latency=20 drop-on-latency=true ! rtpgstdepay ! fluiddec soundfont=/home/qrq/exponentialLOOP.sf2 ! audioconvert ! audioresample quality=10 ! queue ! audioconvert ! audioamplify amplification=5 ! queue ! jackaudiosink buffer-time=20 sync=false async=false
NOTE: the RECEIVER SCRIPT uses a soundfont..a custom created by Polyphone CW SOUNDfont https://www.polyphone-soundfonts.com/
QRQ CW over iP using CW midi by Gstreamer, TX & RX SDR modules from Recri Keyer & a diy CW soundfont
the custom CW soundfont was created using AUDACITY to record a .wav file 1 dit at 1 wpm and import it into a free SOUNDfont creator APP called "Polyphone" https://www.polyphone-soundfonts.com/
the Gstreamer CW midi over iP Receiver uses the fluidDEC element to decode the incoming CW MiDi and internally key the next gstreamer element, fluidDEC, which is told to use the special created CW soundfont, that was created and saved as a .sf2 file
here is the GSTREAMER TRANSMIT SCRIPT USED:
gst-launch-1.0 -v alsamidisrc ports=0 ! queue ! rtpgstpay ! queue ! udpsink host=(IP ADDRESS OF THE OP that is doing the receiving) port=1331
here is the GSTREAMER RECEIVE SCRIPT USED: gst-launch-1.0 udpsrc port=1331 ! "application/x-rtp, media=(string)application, clock-rate=(int)90000, encoding-name=(string)X-GST, caps=(string)YXVkaW8veC1taWRpLWV2ZW50, capsversion=(string)0, payload=(int)96" ! queue ! rtpbin latency=20 drop-on-latency=true ! rtpgstdepay ! fluiddec soundfont=/home/qrq/exponentialLOOP.sf2 ! audioconvert ! audioresample quality=10 ! queue ! audioconvert ! audioamplify amplification=5 ! queue ! jackaudiosink buffer-time=20 sync=false async=false
NOTE: one advantage using Gstreamer has for sending MiDi OVER iP is being able to RTP encode(using RTPgstPAY) and RTP DECODE using an RTPjitterBuffer and packet re-organizer using RTPbin....you can adjust the latency according to the network packet conditions/health of network etc...
RECRI KEYER is one CW KEYER APP that outputs CW MIDI NOTEs in addition to CW AUDIO... https://github.com/recri/keyer
RECRI KEYER also has a full assortment of SDR MODULEs for encoding and decoding, modulating/de-modulating etc.. filters, hilbert cells, mixers et al. etc....
Key CW on ur RIG, REMOTELY from another location in the house by sending MiDi CW/TCP/ip to a pi/RIG
brief demo testing the setup pi2b(to see if can perform this much work) the pi2b is connected by usb cable to the RIG's internal USB SOUND CARD... the Pi2b is using the RIG's internal USB SOUND CARD as its own sound card too... the pi controls the flow of audio, as a TCP CLIENT, from the rig to the remote op and from the remote op to the pi/rig interface using TCP/ip ...Gstreamer has an element called alsamidisrc, that allows you to key its input with CW MiDi output from a CW KEYER/keyboard APP like RECRI KEYER - https://github.com/recri/keyer
the midi CW output of the KEYBOARD goes to the input of the gstreamer element "alsamidisrc" https://gstreamer.freedesktop.org/documentation/alsa/alsamidisrc.ht...
then a GSTREAMER pipeline is constructed around the alsamidisrc to encode it with TCP & RTP PAYLOAD(rtpgstpay)(rtpstreampay) and send it over the local LAN to the pi/rig interface ********************************************
gst-launch-1.0 -v alsamidisrc ! queue ! rtpgstpay ! rtpstreampay ! queue ! tcpserversink host=(ip address of remote laptop on lan) port=1331
*********************************************
NOTE: using TCP vs UDP, the TCP performed MUCH better than UDP when handling MIDI over IP ON THE PI
to RECEIVE the laptop's TX signal, convert the MIDI input into a CW AUDIO output(s) to key the RIG 5555hz ptt & 690hz CW...etc... :
**********************************************
gst-launch-1.0 -v tcpclientsrc host=(ip address of the remote laptop) port=1331 do-timestamp=true ! "application/x-rtp-stream, media=(string)application, clock-rate=(int)90000, encoding-name=(string)X-GST, caps=(string)YXVkaW8veC1taWRpLWV2ZW50, capsversion=(string)0, payload=(int)96" ! rtpstreamdepay ! queue ! rtpjitterbuffer ! rtpgstdepay ! fluiddec soundfont=/home/qrq/symetricalEXPONENTIAL.sf2 ! audioconvert ! audioresample quality=10 ! queue ! audioconvert ! audioamplify amplification=5 ! queue ! jackaudiosink ********************************************
basic TCP server/clients via Gstreamer were also used to send audio from the PI/RIG interface to the remote laptop...
LAPTOP GSTREAMER TCPSERVER SCRIPT
gst-launch-1.0 -v tcpserversrc host=(ip address of the remote laptop) port=7777 ! "application/x-rtp-stream, media=(string)audio, clock-rate=(int)48000, encoding-name=(string)L16, encoding-params=(string)1, channels=(int)1, payload=(int)96" ! rtpstreamdepay ! rtpjitterbuffer ! rtpL16depay ! audioconvert ! jackaudiosink PI2b GSTREAMER TCPCLIENTSRC SCRIPT gst-launch-1.0 -v jackaudiosrc ! audio/x-raw, channels=1 ! audioconvert ! rtpL16pay ! rtpstreampay ! tcpclientsink host=(ip address of the remot e laptop) port=7777
NOTE: RECRI KEYER was also used on the pi2b to provide the SDR MODULES:
hilbert cell, filt, & LO-MIXER for this setup...
Comment
© 2024 Created by Chuck aa0hw. Powered by
You need to be a member of QRQcw to add comments!
Join QRQcw