Exponential CW shaped notes, demo from QRS to QRQ, Exponential envelope created by the Polyphone APP

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&section=trigger_midi_mono https://www.kvraudio.com/product/reagate_by_cockos

Views: 54

Comment by Chuck aa0hw on September 22, 2022 at 1:43pm

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/

Comment by Chuck aa0hw on September 23, 2022 at 8:44am

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....

Comment by Chuck aa0hw on September 27, 2022 at 12:30pm

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

You need to be a member of QRQcw to add comments!

Join QRQcw

© 2024   Created by Chuck aa0hw.   Powered by

Badges  |  Report an Issue  |  Terms of Service