Updated to quisk-4.1.56.
This commit is contained in:
parent
0da9087a5c
commit
e2909d3c38
|
@ -1,3 +1,9 @@
|
|||
Quisk Version 4.1.56 April 2020
|
||||
================================
|
||||
For Linux, if the file /usr/include/portaudio.h is absent, portaudio will not be included in Quisk.
|
||||
This change makes portaudio optional. The change was needed because portaudio breaks wine. Quisk now
|
||||
restores the correct frequency for the 60 meter band. There were some other bug fixes.
|
||||
|
||||
Quisk Version 4.1.55 April 2020
|
||||
================================
|
||||
The new Sdr Micron radio was missing from the Windows version of Quisk. There are reports that the item
|
||||
|
|
2
PKG-INFO
2
PKG-INFO
|
@ -1,6 +1,6 @@
|
|||
Metadata-Version: 1.1
|
||||
Name: quisk
|
||||
Version: 4.1.55
|
||||
Version: 4.1.56
|
||||
Summary: QUISK is a Software Defined Radio (SDR) transceiver that can control various radio hardware.
|
||||
Home-page: http://james.ahlstrom.name/quisk/
|
||||
Author: James C. Ahlstrom
|
||||
|
|
|
@ -1 +1 @@
|
|||
#Quisk version 4.1.55
|
||||
#Quisk version 4.1.56
|
||||
|
|
|
@ -191,6 +191,7 @@ class Configuration:
|
|||
else:
|
||||
print ("Unknown format for", k, fmt)
|
||||
except:
|
||||
del radio_dict[k]
|
||||
self.settings_changed = True
|
||||
errors = errors + "Failed to set %s to %s using format %s\n" % (k, v, fmt)
|
||||
#traceback.print_exc()
|
||||
|
@ -286,7 +287,7 @@ class Configuration:
|
|||
def GetWidgets(self, app, hardware, conf, frame, gbs, vertBox): # Called fifth
|
||||
if Settings[1] == "ConfigFileRadio":
|
||||
return False
|
||||
path = self.GetRadioDict()["widgets_file_name"]
|
||||
path = self.GetRadioDict().get("widgets_file_name", '')
|
||||
path = self.NormPath(path)
|
||||
if os.path.isfile(path):
|
||||
dct = {}
|
||||
|
@ -1143,7 +1144,7 @@ class BaseWindow(wx.ScrolledWindow):
|
|||
return ok
|
||||
def EvalItem(self, value, fmt4): # Return Python integer, number, boolean, text
|
||||
# return is (item_is_ok, evaluated_item)
|
||||
if fmt4 in ('text', 'rfil'): # text items are always OK
|
||||
if fmt4 not in ('inte', 'numb', 'bool'): # only certain formats are evaluated
|
||||
return True, value
|
||||
jj = value.find('#')
|
||||
if jj > 0:
|
||||
|
@ -1159,7 +1160,7 @@ class BaseWindow(wx.ScrolledWindow):
|
|||
else:
|
||||
v = False
|
||||
else:
|
||||
return False, None
|
||||
raise ValueError
|
||||
except:
|
||||
dlg = wx.MessageDialog(None,
|
||||
"Can not set item with format %s to value %s" % (fmt4, value),
|
||||
|
|
16
docs.html
16
docs.html
|
@ -255,7 +255,7 @@ sudo apt-get install libfftw3-dev
|
|||
<br>
|
||||
sudo apt-get install libasound2-dev
|
||||
<br>
|
||||
sudo apt-get install portaudio19-dev
|
||||
sudo apt-get install portaudio19-dev # Optional, if you want portaudio support
|
||||
<br>
|
||||
sudo apt-get install libpulse-dev
|
||||
<br>
|
||||
|
@ -451,7 +451,7 @@ _quisk.so and _quisk.pyd.
|
|||
</ul>
|
||||
<ul>
|
||||
|
||||
<li>sound_portaudio.c is the sound card access code for PortAudio. </li>
|
||||
<li>sound_portaudio.c is the sound card access code for PortAudio. PortAudio is optional.</li>
|
||||
</ul>
|
||||
<ul>
|
||||
|
||||
|
@ -693,15 +693,9 @@ more information.
|
|||
<br>
|
||||
|
||||
<br>
|
||||
The
|
||||
PortAudio
|
||||
interface is newer, may be easier to get working, and may be used to
|
||||
connect Quisk to other programs (I have not tried this). But for
|
||||
CW, ALSA
|
||||
has
|
||||
lower latency. Run "python portaudio.py" in a terminal window to
|
||||
see a list of available names, or use
|
||||
a different PortAudio tool. Here are some PortAudio names:
|
||||
The PortAudio interface is now optional. Many users are changing to PulseAudio.
|
||||
You can run "python portaudio.py" in a terminal window to
|
||||
see a list of available PortAudio names. Here are some PortAudio names:
|
||||
<br>
|
||||
<pre>"portaudio:(hw:0,0)" First sound card.
|
||||
"portaudio:(hw:1,0)" Second sound card, etc.
|
||||
|
|
|
@ -161,12 +161,13 @@ class Hardware(BaseHardware):
|
|||
print ("perseus hardware: VarDecimSet: index: %s" % (index))
|
||||
if index == None:
|
||||
print ("perseus hardware: VarDecimSet: current sampling rate: %d" % self.current_rate)
|
||||
new_rate = self.current_rate
|
||||
new_rate = self.current_rate = self.application.vardecim_set
|
||||
else:
|
||||
new_rate = self.rates[index]
|
||||
|
||||
print ("perseus hardware: VarDecimSet: New sampling rate: %d" % new_rate)
|
||||
perseus.set_sampling_rate(int(new_rate))
|
||||
self.current_rate = int(new_rate)
|
||||
|
||||
return int(new_rate)
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Metadata-Version: 1.1
|
||||
Name: quisk
|
||||
Version: 4.1.55
|
||||
Version: 4.1.56
|
||||
Summary: QUISK is a Software Defined Radio (SDR) transceiver that can control various radio hardware.
|
||||
Home-page: http://james.ahlstrom.name/quisk/
|
||||
Author: James C. Ahlstrom
|
||||
|
|
4
quisk.py
4
quisk.py
|
@ -3717,7 +3717,7 @@ class App(wx.App):
|
|||
self.mode = conf.default_mode
|
||||
self.color_list = None
|
||||
self.color_index = 0
|
||||
self.vardecim_set = None
|
||||
self.vardecim_set = 48000
|
||||
self.w_phase = None
|
||||
self.zoom = 1.0
|
||||
self.filter_bandwidth = 1000 # filter bandwidth
|
||||
|
@ -3976,7 +3976,7 @@ The new code supports multiple corrections per band.""")
|
|||
self.OpenSound()
|
||||
tune, vfo = Hardware.ReturnFrequency() # Request initial frequency
|
||||
if tune is None or vfo is None: # Set last-used frequency
|
||||
self.bandBtnGroup.SetLabel(self.lastBand, do_cmd=True)
|
||||
self.bandBtnGroup.SetLabel(self.lastBand, do_cmd=True, direction=0)
|
||||
else: # Set requested frequency
|
||||
self.BandFromFreq(tune)
|
||||
self.ChangeDisplayFrequency(tune - vfo, vfo)
|
||||
|
|
|
@ -1670,7 +1670,7 @@ freedv_tx_msg = ''
|
|||
# This is the list of FreeDV modes and their index number. The starting mode is the first listed.
|
||||
freedv_modes = (('Mode 1600', 0), ('Mode 700', 1), ('Mode 700B', 2),
|
||||
# ('Mode 2400A', 3), ('Mode 2400B', 4), ('Mode 800XA', 5),
|
||||
('Mode 700C', 6), ('Mode 700D', 7), ('Future8', 8), ('Future9', 9))
|
||||
('Mode 700C', 6), ('Mode 700D', 7), ('Mode 2020', 8), ('Future9', 9), ('Future10', 10))
|
||||
|
||||
# These are the filter bandwidths for each mode. Quisk has built-in optimized filters
|
||||
# for these values, but you can change them if you want.
|
||||
|
|
|
@ -1101,7 +1101,7 @@ class RadioButtonGroup:
|
|||
button.button.command = self.OnButton
|
||||
else:
|
||||
button.command = self.OnButton
|
||||
def SetLabel(self, label, do_cmd=False):
|
||||
def SetLabel(self, label, do_cmd=False, direction=None):
|
||||
self.button = None
|
||||
for b in self.buttons:
|
||||
if self.button is not None:
|
||||
|
@ -1116,6 +1116,8 @@ class RadioButtonGroup:
|
|||
b.SetIndex(index)
|
||||
self.button = b
|
||||
b.SetValue(True)
|
||||
if direction is not None:
|
||||
b.direction = direction
|
||||
elif b.GetLabel() == label:
|
||||
b.SetValue(True)
|
||||
self.button = b
|
||||
|
|
25
setup.py
25
setup.py
|
@ -8,7 +8,7 @@ import struct
|
|||
# You must define the version here. A title string including
|
||||
# the version will be written to __init__.py and read by quisk.py.
|
||||
|
||||
Version = '4.1.55'
|
||||
Version = '4.1.56'
|
||||
|
||||
fp = open("__init__.py", "w") # write title string
|
||||
fp.write("#Quisk version %s\n" % Version)
|
||||
|
@ -16,6 +16,7 @@ fp.close()
|
|||
|
||||
is_64bit = struct.calcsize("P") == 8
|
||||
|
||||
have_portaudio = False
|
||||
if sys.platform != "win32":
|
||||
try:
|
||||
import wx
|
||||
|
@ -25,16 +26,26 @@ if sys.platform != "win32":
|
|||
print ("Please install the package libfftw3-dev")
|
||||
if not os.path.isdir("/usr/include/alsa"):
|
||||
print ("Please install the package libasound2-dev")
|
||||
if not os.path.isfile("/usr/include/portaudio.h"):
|
||||
print ("Please install the package portaudio19-dev")
|
||||
if os.path.isfile("/usr/include/portaudio.h"):
|
||||
have_portaudio = True
|
||||
if not os.path.isdir("/usr/include/pulse"):
|
||||
print ("please install the package libpulse-dev")
|
||||
|
||||
libraries = ['asound', 'pulse', 'fftw3', 'm']
|
||||
sources = ['quisk.c', 'sound.c', 'sound_alsa.c', 'sound_pulseaudio.c',
|
||||
'is_key_down.c', 'microphone.c', 'utility.c',
|
||||
'filter.c', 'extdemod.c', 'freedv.c']
|
||||
define_macros = []
|
||||
if have_portaudio:
|
||||
libraries.append('portaudio')
|
||||
sources.append('sound_portaudio.c')
|
||||
else:
|
||||
define_macros.append(("QUISK_NO_PORTAUDIO", None))
|
||||
|
||||
module1 = Extension ('quisk._quisk',
|
||||
libraries = ['asound', 'portaudio', 'pulse', 'fftw3', 'm'],
|
||||
sources = ['quisk.c', 'sound.c', 'sound_alsa.c', 'sound_portaudio.c', 'sound_pulseaudio.c',
|
||||
'is_key_down.c', 'microphone.c', 'utility.c',
|
||||
'filter.c', 'extdemod.c', 'freedv.c'],
|
||||
libraries = libraries,
|
||||
sources = sources,
|
||||
define_macros = define_macros,
|
||||
)
|
||||
|
||||
module2 = Extension ('quisk.sdriqpkg.sdriq',
|
||||
|
|
10
sound.c
10
sound.c
|
@ -433,7 +433,11 @@ int read_sound_interface(
|
|||
switch( dev->driver )
|
||||
{
|
||||
case DEV_DRIVER_PORTAUDIO:
|
||||
#ifdef QUISK_NO_PORTAUDIO
|
||||
nSamples = 0;
|
||||
#else
|
||||
nSamples = quisk_read_portaudio(dev, cSamples);
|
||||
#endif
|
||||
break;
|
||||
case DEV_DRIVER_ALSA:
|
||||
nSamples = quisk_read_alsa(dev, cSamples);
|
||||
|
@ -505,7 +509,9 @@ void play_sound_interface(
|
|||
switch( dev->driver )
|
||||
{
|
||||
case DEV_DRIVER_PORTAUDIO:
|
||||
#ifndef QUISK_NO_PORTAUDIO
|
||||
quisk_play_portaudio(dev, nSamples, cSamples, report_latency, volume);
|
||||
#endif
|
||||
break;
|
||||
case DEV_DRIVER_ALSA:
|
||||
quisk_play_alsa(dev, nSamples, cSamples, report_latency, volume);
|
||||
|
@ -860,7 +866,9 @@ void quisk_close_sound(void) // Called from sound thread
|
|||
#ifdef MS_WINDOWS
|
||||
int cleanup = radio_sound_socket != INVALID_SOCKET || radio_sound_mic_socket != INVALID_SOCKET;
|
||||
#endif
|
||||
#ifndef QUISK_NO_PORTAUDIO
|
||||
quisk_close_sound_portaudio();
|
||||
#endif
|
||||
quisk_close_sound_alsa(CaptureDevices, PlaybackDevices);
|
||||
quisk_close_sound_pulseaudio();
|
||||
if (pt_sample_stop)
|
||||
|
@ -1168,7 +1176,9 @@ void quisk_start_sound(void) // Called from sound thread
|
|||
decide_drivers(PlaybackDevices);
|
||||
|
||||
// Let the drivers see the devices and start them up if appropriate
|
||||
#ifndef QUISK_NO_PORTAUDIO
|
||||
quisk_start_sound_portaudio(CaptureDevices, PlaybackDevices);
|
||||
#endif
|
||||
quisk_start_sound_pulseaudio(CaptureDevices, PlaybackDevices);
|
||||
quisk_start_sound_alsa(CaptureDevices, PlaybackDevices);
|
||||
|
||||
|
|
Loading…
Reference in New Issue