-
Notifications
You must be signed in to change notification settings - Fork 61
Description
Contact Details
It is a new general purpose interface.
Feature for this project
Background
I am the author of Quisk, a software defined radio. Quisk has had support for FreeDV for several years. I used the codec2 API to make FreeDV an internal mode of Quisk. It has its own "FreeDV" mode button just like USB. This was convenient for my users, but it didn't use the FreeDV GUI window so it lacked those features.
Currently Quisk supports the new RADE mode with the usual virtual audio cables and does offer the GUI, but it is inconvenient to use. Since it connects directly to the sound card speakers and microphone it is incompatible with other modes and requires different settings in Quisk. And my users have trouble setting it up.
Making Quisk and FreeDV work well together will require a lot of work on my part, and I would like to propose a general purpose solution that will benefit other users too. My idea is to design a new zero-configuration interface that makes it easy to connect FreeDV to Quisk, other SDRs and to classic radios that use a software TNC.
New Interface Features
- Eliminate the need for virtual audio cables.
- No configuration by the user is required.
- I write and maintain the interface as a single .c and .h file.
- It is written in vanilla C.
- The code works on Windows and Linux, and hopefully Mac.
- It connects to FreeDV-GUI so the GUI is available.
- Easy to add to FreeDV-GUI (I hope).
- It is a proposed standard so it is easy to add FreeDV to other radios.
Interface to FreeDV
To use the interface in FreeDV, call a registration function on startup, and a de-registration function on exit. This announces FreeDV to other programs on the same computer. Then call functions to advertise FreeDV's available interfaces, namely SpeakerSound, the decoded audio that should be sent to the speakers, and TxSamples, the coded audio that should be transmitted. FreeDV will need to read RadioSound and Microphone from another program like Quisk. Then within the existing sound code, call read and write functions on these four interfaces instead of on virtual audio cables or sound cards. These functions strongly resemble the normal audio functions.
To enable the interface, it might be enough to change all of FreeDV's four existing sound interfaces to "None". Or maybe there is a check box that grays out the sound interface.
Interface to Quisk or Other Programs
Quisk will advertise its interfaces, namely RadioSound, SpeakerSound, TxSamples and Microphone. For SSB, Quisk will operate normally. When the user selects FreeDV, Quisk will route RadioSound to FreeDV and use SpeakerSound for the speakers, and will route Microphone to FreeDV and read TxSamples for transmit. There is nothing for the user to configure, it just works. Note that this design replaces requests for FreeDV features that belong to the radio, such as #907, #983, #992 and #1032.
Hopefully, digital programs like WSJT-X will use this interface too.
Summary
I need to know whether this seems like a good idea and whether it might be added to FreeDV if it works as described. It is possible I missed an easier or better solution, but I for one am sick of virtual audio cables.
Jim Ahlstrom
N2ADR
VHF/UHF
No
Deprecated features
No
Non-standard compiler
No
Legal worldwide
Yes
Implementation assistance
I will write the interface code as a single .c and .h file.
Support assistance
I will support the new interface and change it as required by the ham radio community for several years.