new improved python qrq cw keyboard from grok3 AI

some improvements have been issued from GROK3 on this latest QRQ CW KEYBOARD

written in PYTHON code and the multiple cw timing adjustments were drawn from YPLOG's CW KEYBOARDs multiple cw timing settings ,   

the python code file can be downloaded if you want to test it...

uploaded/attach it to your favorite AI and ask it to convert the audio engine over to windows or mac...this is written for the LINUX OS

https://u.pcloud.link/publink/show?code=XZYLC45Zo6kjF6AJQ3jc7eVsuCBz2jK7bjnk

looks like this:

  • Chuck aa0hw

    Here is an improved version from GROK3,  

    this version allows COPY/PASTE to input text and have it sent immediately,

    it also has variable rise/fall time with compensation,

    you can listen to text, while adjusting all of these controls and fine tune for the best settings for the best copy at your qrq speed 

    https://u.pcloud.link/publink/show?code=XZ7XN45ZJBuzYiy7K0p0YXHhdpY...

    here is an example of the settings while sending a text that i found best to copy the easiest  

  • Chuck aa0hw

    the latest improvement in this GROK3 CW KEYBOARD is here,   to take up less space on the desktop, you don't really need to see some gui control buttons once you have set them,  here is the latest code:

    https://u.pcloud.link/publink/show?code=XZLwJ85ZOPcDpUCKQyBRoN3VYEx...

  • Chuck aa0hw

    Here is the same CW KEYBOARD written in C++ 

                              by GROK3 ai

       a file called "main.cpp"  compiled in linux/ubuntu 24.04

       for this example...  NOTE: each OS will have different ways to compile this cw keyboard's  main.cpp   file to a working APP

    here is a link to the C++  MAIN.CPP   file you need for compiling

    this CW KEYBOARD, converted from the latest python version

    one useful feature, is you can copy/ paste into the typing area and have it send a text file,  and then you can adjust as you listen the many cw timing options to find your preferred choice for all settings and how you like your CW to sound... 

    https://u.pcloud.link/publink/show?code=XZOQQ85Zer40CP28L4LXWTLCNhI...

    here is how i was instructed to compile this main.cpp file,  the cw keyer c++ code,  on my ubuntu 24.04 desktop
    i had to make a file, and put it in the home directory containing these lines :
    QT += widgets
    CONFIG += c++17 console
    SOURCES += main.cpp
    LIBS += -ljack
    save the 4 lines above as a file called MorseApp.pro in the Home directory...
    NOTE, the cw keyboard code,  main.cpp,  was already saved in the Home directory
    NOTE: i do not have any other "make" type files in my home directory than this cw keyboard...
    be careful if you try this, make sure you don't either, or  otherwise, might be better to create a new folder and do all the make stuff in the new folder...
    then in terminal grok3 told me to put these commands, one at a time, via terminal, which defaults to the home directory by default...
    - make clean         
             then
    - qmake MorseApp.pro
            then
    - make
            then to load it up the new CW KEYBOARD on desktop
            after the make command, it creates in the home directory
            an executable file  that looks like this
       
    anyway, via terminal,   running this command brings up the new CW KEYBOARD 
      ./MorseApp

  • Chuck aa0hw

    Here is an updated, upgraded,  next version of the C++ CW Keyboard

    main.cpp file...

    NOTE , change the file name to remove the  (2) after downloading and saving it
    it must read    main.cpp   and it has to be the only one in the directory you are compiling this c++ code

    this version is compiled with optimizations by changing the contents of the MorseApp.pro file as such:

    MorseApp.pro file shows this:
    ************************************************************
    QT += widgets
    CONFIG += c++17 console release  # use debug instead of release for debug'N
    SOURCES += main.cpp
    LIBS += -ljack
    QMAKE_CXXFLAGS += -O2  #  -00 Disables optimizations for easier debugging(-03 = aggressive optimizations)

    **********************************************************************************************************
    after updating the contents of the MorseApp.pro file,   
    then re-compile via qmake 
    - qmake MorseApp.pro
                  then
    - make clean         
                  then
    - make
                  then
    to load it up the new CW KEYBOARD on desktop after the make command, it creates in the home directory, an executable file  that looks like this
       
    anyway, via terminal,   running this command brings up the new CW KEYBOARD 
      ./MorseApp
  • Chuck aa0hw

    Here is an updated, upgraded,  next version of the C++ CW Keyboard main.cpp file:

    this version includes 8 options for rise/fall time edge ramp function windows

    NOTE , change the file name to remove the  (3) after downloading and saving it
    it must read    main.cpp   and it has to be the only one in the directory you are compiling this c++ code

    this version is compiled with optimizations by

    changing the contents of the MorseApp.pro file as such:

    QT += core gui widgets
    CONFIG += c++17 console release # Use 'debug' instead of 'release' for debugging
    SOURCES += main.cpp
    LIBS += -ljack -lboost_math_tr1
    QMAKE_CXXFLAGS += -O3 # Aggressive optimizations; -O2 is default
    QMAKE_LFLAGS += -Wl,-rpath=/usr/lib # Ensure runtime library path
    TARGET = MorseApp # Output executable name
    INCLUDEPATH += /usr/include /usr/local/include # For JACK and Boost headers

    # Handle moc for QObject-derived classes
    CONFIG += no_keywords
    DEFINES += QT_NO_KEYWORDS

    COMPILED ON LINUX using this command sequence

    1.  qmake MorseApp.pro

    2,  make clean

    3.  make

    4.  ./MorseApp

    upload the main.cpp file to your AI, and ask 'it' what dependencies you need to get it to work

    on your linux distro    and/or     ask it to convert it all over to your OS   mac or windows...etc...

  • Chuck aa0hw

    Interesting comments from chatGPT about the  'best'  CW SHAPING METHOD =  PSWF

         Prolate Spheroidal Wave Function

    ### **Why PSWF is the Best Choice for Shaping High-Speed Morse Code Audio Tones**

    Since CPU usage is **not a concern**, PSWF (Prolate Spheroidal Wave Function) is the **absolute best** option for shaping Morse code audio tones at **700 Hz, 120 WPM, with 5 ms rise/fall times**. Here’s why:

    ---

    ### **1. Best Time-Domain Precision – Crisp and Clean Transitions**
    - **PSWF provides the most accurate attack/decay profile**, ensuring that dots, dashes, and spacing remain crisp, without smearing or unwanted elongation.
    - Other windows (like Bessel or Kaiser) introduce **slight time-domain smearing**, which can blur fast CW elements.
    - **Result:** Morse code sounds **sharp and well-defined** even at high speeds.

    ---

    ### **2. Optimal Spectral Concentration – Reduces Edge Noise & Leakage**
    - PSWF **maximizes energy containment within the intended time window**, meaning less leakage into surrounding frequencies.
    - This **prevents unwanted artifacts** (e.g., clicks, pops, or ringing) that can affect signal clarity.
    - **Result:** The **cleanest possible tone** with minimal spectral contamination.

    ---

    ### **3. Best Phase Preservation – Ensures Tone Consistency**
    - Unlike Kaiser or Bessel windows, which can introduce phase inconsistencies, **PSWF maintains phase coherence across tone elements**.
    - This is critical for Morse code operators who rely on a **stable, undistorted tone** for efficient copy.
    - **Result:** No unexpected phase shifts, keeping the CW audio pure.

    ---

    ### **4. Superior Frequency Control – Minimal Distortion**
    - The Slepian-derived PSWF shape inherently provides **steep sidelobe suppression** without sacrificing main-lobe control.
    - This minimizes **interference from overlapping spectral components**, ensuring precise frequency representation at 700 Hz.
    - **Result:** Morse tones remain **pure and undistorted**, with **no unnecessary frequency spread**.

    ---

    ### **5. No Unwanted Ringing or Transient Noise**
    - Many windows (like raised cosine) introduce **ringing effects**, especially at the start and end of each CW element.
    - **PSWF prevents this by providing the smoothest possible transition while still maintaining spectral focus.**
    - **Result:** No annoying ringing, just **clean start/stop transitions**.

    ---

    ### **6. Customizable with Fine-Tuned Control**
    - Your **PSWF implementation already allows precise tuning to two decimal places**, meaning perfect control over how tones ramp in/out.
    - Other windows require more trial and error to find an ideal balance.
    - **Result:** **Ultimate flexibility** in shaping CW tones exactly as desired.

    ---

    ### **Final Verdict – PSWF is the Gold Standard for High-Speed Morse Code**
    ✔ **Most precise time-domain behavior** → Crisp dots/dashes, no smearing.
    ✔ **Best spectral concentration** → Reduces leakage and edge noise.
    ✔ **Minimal phase distortion** → Ensures stable, consistent tones.
    ✔ **No ringing or transient artifacts** → The cleanest attack/decay profile.
    ✔ **Fine-tuned control already built into the code** → Perfectly adjustable for any CW requirement.

    Since **your Morse code keyboard runs just fine with PSWF**, and CPU efficiency is **not** a concern, **there’s no reason to use anything else**. **PSWF is the ultimate method for shaping Morse code tones at high speed.** 🚀

  • Chuck aa0hw

    Here is a new CW KEYBOARD PYTHON VERSION you can test

    https://u.pcloud.link/publink/show?code=XZQK7Q5Zdop7IHYv5fYN5yrThsF...

    this version has multiple ramp functions , raised cosine, sigmoid, others, and PSWF, and KAISER

    send a text file while listening and click on each function in the popup menu,  it will save the settings for each of the cw timing sliders that you adjust to tune in your best preferences  and bring it back up again, so you can then compare functions to each other while a text file is being played and see if you prefer one over the other...etc..

  • Chuck aa0hw

    Here is a video of the lastest GROK3 PYTHON QRQ CW KEYBOARD in operation switching between different wave shape functions while listening to a text file at 65 wpm

    GROK 3 wrote this cw keyboard's python code: https://u.pcloud.link/publink/show?code=XZQK7Q5Zdop7IHYv5fYN5yrThsF... each of the different individual function wave shape's can be customized and save from all the cw timing options, including the unique function's own option... include PSWF, KAISER, RAISED COSINE, SIGMOID, others

  • Chuck aa0hw

    In the latest PYTHON CW KEYBOARD(with the pop up menu for functions)

    here is an interesting comparison between typical standard Raised Cosine wave shape compared with a new SIGMOID wave shaping math,  the SIGMOID TAPERED

    RC wave shape:

    compared to the sigmoid function below:

    SIGMOID TAPERED

    (same rise/fall/comp as RC)

    testing the new SIGMOID TAPERED WAVE SHAPE at 70 wpm in QSO with another QRQ OP, over ip using the FREE version of the FARPLAY APP, they said this,  "I was copying very good today which is puzzling..."  they did not know i was using a new cw element wave shaping sigmoid tapered math function instead of the standard, typical raised cosine