diff --git a/SDR++.app/Contents/Frameworks/libairspy.0.dylib b/SDR++.app/Contents/Frameworks/libairspy.0.dylib
new file mode 100644
index 000000000..40baa5168
Binary files /dev/null and b/SDR++.app/Contents/Frameworks/libairspy.0.dylib differ
diff --git a/SDR++.app/Contents/Frameworks/libairspyhf.0.dylib b/SDR++.app/Contents/Frameworks/libairspyhf.0.dylib
new file mode 100755
index 000000000..f944fb787
Binary files /dev/null and b/SDR++.app/Contents/Frameworks/libairspyhf.0.dylib differ
diff --git a/SDR++.app/Contents/Frameworks/libcodec2.1.0.dylib b/SDR++.app/Contents/Frameworks/libcodec2.1.0.dylib
new file mode 100644
index 000000000..5ce01b778
Binary files /dev/null and b/SDR++.app/Contents/Frameworks/libcodec2.1.0.dylib differ
diff --git a/SDR++.app/Contents/Frameworks/libfftw3f.3.dylib b/SDR++.app/Contents/Frameworks/libfftw3f.3.dylib
new file mode 100644
index 000000000..08c82a577
Binary files /dev/null and b/SDR++.app/Contents/Frameworks/libfftw3f.3.dylib differ
diff --git a/SDR++.app/Contents/Frameworks/libgcc_s.1.1.dylib b/SDR++.app/Contents/Frameworks/libgcc_s.1.1.dylib
new file mode 100644
index 000000000..9ed419f33
Binary files /dev/null and b/SDR++.app/Contents/Frameworks/libgcc_s.1.1.dylib differ
diff --git a/SDR++.app/Contents/Frameworks/libglfw.3.dylib b/SDR++.app/Contents/Frameworks/libglfw.3.dylib
new file mode 100644
index 000000000..bedc57eb2
Binary files /dev/null and b/SDR++.app/Contents/Frameworks/libglfw.3.dylib differ
diff --git a/SDR++.app/Contents/Frameworks/libhackrf.0.dylib b/SDR++.app/Contents/Frameworks/libhackrf.0.dylib
new file mode 100644
index 000000000..c682f45e5
Binary files /dev/null and b/SDR++.app/Contents/Frameworks/libhackrf.0.dylib differ
diff --git a/SDR++.app/Contents/Frameworks/liborc-0.4.0.dylib b/SDR++.app/Contents/Frameworks/liborc-0.4.0.dylib
new file mode 100644
index 000000000..b82ba9138
Binary files /dev/null and b/SDR++.app/Contents/Frameworks/liborc-0.4.0.dylib differ
diff --git a/SDR++.app/Contents/Frameworks/libportaudio.2.dylib b/SDR++.app/Contents/Frameworks/libportaudio.2.dylib
new file mode 100644
index 000000000..515d0eb4a
Binary files /dev/null and b/SDR++.app/Contents/Frameworks/libportaudio.2.dylib differ
diff --git a/SDR++.app/Contents/Frameworks/librtlsdr.0.dylib b/SDR++.app/Contents/Frameworks/librtlsdr.0.dylib
new file mode 100644
index 000000000..9b354728f
Binary files /dev/null and b/SDR++.app/Contents/Frameworks/librtlsdr.0.dylib differ
diff --git a/SDR++.app/Contents/Frameworks/libsdrpp_core.dylib b/SDR++.app/Contents/Frameworks/libsdrpp_core.dylib
new file mode 100755
index 000000000..7154bc6be
Binary files /dev/null and b/SDR++.app/Contents/Frameworks/libsdrpp_core.dylib differ
diff --git a/SDR++.app/Contents/Frameworks/libusb-1.0.0.dylib b/SDR++.app/Contents/Frameworks/libusb-1.0.0.dylib
new file mode 100644
index 000000000..fd7de7471
Binary files /dev/null and b/SDR++.app/Contents/Frameworks/libusb-1.0.0.dylib differ
diff --git a/SDR++.app/Contents/Frameworks/libvolk.2.5.dylib b/SDR++.app/Contents/Frameworks/libvolk.2.5.dylib
new file mode 100755
index 000000000..9fb85eaf0
Binary files /dev/null and b/SDR++.app/Contents/Frameworks/libvolk.2.5.dylib differ
diff --git a/SDR++.app/Contents/Frameworks/libzstd.1.dylib b/SDR++.app/Contents/Frameworks/libzstd.1.dylib
new file mode 100644
index 000000000..196ffd92c
Binary files /dev/null and b/SDR++.app/Contents/Frameworks/libzstd.1.dylib differ
diff --git a/SDR++.app/Contents/Info.plist b/SDR++.app/Contents/Info.plist
new file mode 100644
index 000000000..77751ce2e
--- /dev/null
+++ b/SDR++.app/Contents/Info.plist
@@ -0,0 +1,15 @@
+
+
+
+
+
+ CFBundleNamesdrpp
+ CFBundleDisplayNameSDR++
+ CFBundleIdentifieroorg.sdrpp.sdrpp
+ CFBundleVersion1.0.5
+ CFBundlePackageTypeAPPL
+ CFBundleSignaturesdrp
+ CFBundleExecutablesdrpp
+ CFBundleIconFilesdrpp
+
+
diff --git a/SDR++.app/Contents/MacOS/sdrpp b/SDR++.app/Contents/MacOS/sdrpp
new file mode 100755
index 000000000..ac502d4d7
Binary files /dev/null and b/SDR++.app/Contents/MacOS/sdrpp differ
diff --git a/SDR++.app/Contents/Plugins/airspy_source.dylib b/SDR++.app/Contents/Plugins/airspy_source.dylib
new file mode 100755
index 000000000..a2d2b4f91
Binary files /dev/null and b/SDR++.app/Contents/Plugins/airspy_source.dylib differ
diff --git a/SDR++.app/Contents/Plugins/airspyhf_source.dylib b/SDR++.app/Contents/Plugins/airspyhf_source.dylib
new file mode 100755
index 000000000..4361a74ec
Binary files /dev/null and b/SDR++.app/Contents/Plugins/airspyhf_source.dylib differ
diff --git a/SDR++.app/Contents/Plugins/discord_integration.dylib b/SDR++.app/Contents/Plugins/discord_integration.dylib
new file mode 100755
index 000000000..610215c6d
Binary files /dev/null and b/SDR++.app/Contents/Plugins/discord_integration.dylib differ
diff --git a/SDR++.app/Contents/Plugins/file_source.dylib b/SDR++.app/Contents/Plugins/file_source.dylib
new file mode 100755
index 000000000..b15dc647b
Binary files /dev/null and b/SDR++.app/Contents/Plugins/file_source.dylib differ
diff --git a/SDR++.app/Contents/Plugins/frequency_manager.dylib b/SDR++.app/Contents/Plugins/frequency_manager.dylib
new file mode 100755
index 000000000..11539fb64
Binary files /dev/null and b/SDR++.app/Contents/Plugins/frequency_manager.dylib differ
diff --git a/SDR++.app/Contents/Plugins/hackrf_source.dylib b/SDR++.app/Contents/Plugins/hackrf_source.dylib
new file mode 100755
index 000000000..86602e32b
Binary files /dev/null and b/SDR++.app/Contents/Plugins/hackrf_source.dylib differ
diff --git a/SDR++.app/Contents/Plugins/m17_decoder.dylib b/SDR++.app/Contents/Plugins/m17_decoder.dylib
new file mode 100755
index 000000000..9da2433e9
Binary files /dev/null and b/SDR++.app/Contents/Plugins/m17_decoder.dylib differ
diff --git a/SDR++.app/Contents/Plugins/meteor_demodulator.dylib b/SDR++.app/Contents/Plugins/meteor_demodulator.dylib
new file mode 100755
index 000000000..28538e7b4
Binary files /dev/null and b/SDR++.app/Contents/Plugins/meteor_demodulator.dylib differ
diff --git a/SDR++.app/Contents/Plugins/network_sink.dylib b/SDR++.app/Contents/Plugins/network_sink.dylib
new file mode 100755
index 000000000..852ce0d81
Binary files /dev/null and b/SDR++.app/Contents/Plugins/network_sink.dylib differ
diff --git a/SDR++.app/Contents/Plugins/new_portaudio_sink.dylib b/SDR++.app/Contents/Plugins/new_portaudio_sink.dylib
new file mode 100755
index 000000000..761d4bb87
Binary files /dev/null and b/SDR++.app/Contents/Plugins/new_portaudio_sink.dylib differ
diff --git a/SDR++.app/Contents/Plugins/radio.dylib b/SDR++.app/Contents/Plugins/radio.dylib
new file mode 100755
index 000000000..29327bff2
Binary files /dev/null and b/SDR++.app/Contents/Plugins/radio.dylib differ
diff --git a/SDR++.app/Contents/Plugins/recorder.dylib b/SDR++.app/Contents/Plugins/recorder.dylib
new file mode 100755
index 000000000..740a13315
Binary files /dev/null and b/SDR++.app/Contents/Plugins/recorder.dylib differ
diff --git a/SDR++.app/Contents/Plugins/rfspace_source.dylib b/SDR++.app/Contents/Plugins/rfspace_source.dylib
new file mode 100755
index 000000000..abcaa889d
Binary files /dev/null and b/SDR++.app/Contents/Plugins/rfspace_source.dylib differ
diff --git a/SDR++.app/Contents/Plugins/rigctl_server.dylib b/SDR++.app/Contents/Plugins/rigctl_server.dylib
new file mode 100755
index 000000000..aaf23975e
Binary files /dev/null and b/SDR++.app/Contents/Plugins/rigctl_server.dylib differ
diff --git a/SDR++.app/Contents/Plugins/rtl_sdr_source.dylib b/SDR++.app/Contents/Plugins/rtl_sdr_source.dylib
new file mode 100755
index 000000000..a62962837
Binary files /dev/null and b/SDR++.app/Contents/Plugins/rtl_sdr_source.dylib differ
diff --git a/SDR++.app/Contents/Plugins/rtl_tcp_source.dylib b/SDR++.app/Contents/Plugins/rtl_tcp_source.dylib
new file mode 100755
index 000000000..b6a8d066c
Binary files /dev/null and b/SDR++.app/Contents/Plugins/rtl_tcp_source.dylib differ
diff --git a/SDR++.app/Contents/Plugins/sdrpp_server_source.dylib b/SDR++.app/Contents/Plugins/sdrpp_server_source.dylib
new file mode 100755
index 000000000..ebda39de0
Binary files /dev/null and b/SDR++.app/Contents/Plugins/sdrpp_server_source.dylib differ
diff --git a/SDR++.app/Contents/Plugins/spyserver_source.dylib b/SDR++.app/Contents/Plugins/spyserver_source.dylib
new file mode 100755
index 000000000..c4c67f970
Binary files /dev/null and b/SDR++.app/Contents/Plugins/spyserver_source.dylib differ
diff --git a/SDR++.app/Contents/Resources/bandplans/austria.json b/SDR++.app/Contents/Resources/bandplans/austria.json
new file mode 100644
index 000000000..fdccbc215
--- /dev/null
+++ b/SDR++.app/Contents/Resources/bandplans/austria.json
@@ -0,0 +1,141 @@
+{
+ "name": "Austria",
+ "country_name": "Austria",
+ "country_code": "AT",
+ "author_name": "Michael Mangeng",
+ "author_url": "https://vis.at",
+ "bands": [
+ {
+ "name": "LW",
+ "type": "amateur",
+ "start": 135700,
+ "end": 137800
+ },
+ {
+ "name": "630m",
+ "type": "amateur",
+ "start": 472000,
+ "end": 479000
+ },
+ {
+ "name": "160m",
+ "type": "amateur",
+ "start": 1810000,
+ "end": 1950000
+ },
+ {
+ "name": "80m",
+ "type": "amateur",
+ "start": 3500000,
+ "end": 3800000
+ },
+ {
+ "name": "60m",
+ "type": "amateur",
+ "start": 5351300,
+ "end": 5366500
+ },
+ {
+ "name": "40m",
+ "type": "amateur",
+ "start": 7000000,
+ "end": 7200000
+ },
+ {
+ "name": "30m",
+ "type": "amateur",
+ "start": 10100000,
+ "end": 10150000
+ },
+ {
+ "name": "20m",
+ "type": "amateur",
+ "start": 14000000,
+ "end": 14350000
+ },
+ {
+ "name": "17m",
+ "type": "amateur",
+ "start": 18068000,
+ "end": 18168000
+ },
+ {
+ "name": "15m",
+ "type": "amateur",
+ "start": 21000000,
+ "end": 21450000
+ },
+ {
+ "name": "12m",
+ "type": "amateur",
+ "start": 24890000,
+ "end": 24990000
+ },
+ {
+ "name": "CB",
+ "type": "other",
+ "start": 26965000,
+ "end": 27405000
+ },
+ {
+ "name": "10m",
+ "type": "amateur",
+ "start": 28000000,
+ "end": 29700000
+ },
+ {
+ "name": "6m",
+ "type": "amateur",
+ "start": 50000000,
+ "end": 52000000
+ },
+ {
+ "name": "FM",
+ "type": "broadcast",
+ "start": 87500000,
+ "end": 108000000
+ },
+ {
+ "name": "2m",
+ "type": "amateur",
+ "start": 144000000,
+ "end": 146000000
+ },
+ {
+ "name": "Freenet",
+ "type": "other",
+ "start": 149025000,
+ "end": 149115625
+ },
+ {
+ "name": "70cm",
+ "type": "amateur",
+ "start": 430000000,
+ "end": 440000000
+ },
+ {
+ "name": "PMR446",
+ "type": "other",
+ "start": 446006250,
+ "end": 446196875
+ },
+ {
+ "name": "23cm",
+ "type": "amateur",
+ "start": 1240000000,
+ "end": 1300000000
+ },
+ {
+ "name": "13cm",
+ "type": "amateur",
+ "start": 2304000000,
+ "end": 2310000000
+ },
+ {
+ "name": "13cm",
+ "type": "amateur",
+ "start": 2320000000,
+ "end": 2322000000
+ }
+ ]
+}
diff --git a/SDR++.app/Contents/Resources/bandplans/canada.json b/SDR++.app/Contents/Resources/bandplans/canada.json
new file mode 100644
index 000000000..c422f388e
--- /dev/null
+++ b/SDR++.app/Contents/Resources/bandplans/canada.json
@@ -0,0 +1,213 @@
+{
+ "name": "Canada",
+ "country_name": "Canada",
+ "country_code": "CA",
+ "author_name": "Cam K.",
+ "author_url": "https://github.com/Starman0620/",
+ "bands": [
+ {
+ "name": "630m Ham Band",
+ "type": "amateur",
+ "start": 472000,
+ "end": 479000
+ },
+ {
+ "name": "AM Radio",
+ "type": "broadcast",
+ "start": 535000,
+ "end": 1705000
+ },
+ {
+ "name": "160m Ham Band",
+ "type": "amateur",
+ "start": 1800000,
+ "end": 2000000
+ },
+ {
+ "name": "80m Ham Band",
+ "type": "amateur",
+ "start": 3500000,
+ "end": 4000000
+ },
+ {
+ "name": "60m Ham Band",
+ "type": "amateur",
+ "start": 5351000,
+ "end": 5366000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 5950000,
+ "end": 6200000
+ },
+ {
+ "name": "40m Ham Band",
+ "type": "amateur",
+ "start": 7000000,
+ "end": 7300000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 9400000,
+ "end": 9900000
+ },
+ {
+ "name": "30m Ham Band",
+ "type": "amateur",
+ "start": 10100000,
+ "end": 10150000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 11650000,
+ "end": 12050000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 13600000,
+ "end": 13800000
+ },
+ {
+ "name": "20m Ham Band",
+ "type": "amateur",
+ "start": 14000000,
+ "end": 14350000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 15100000,
+ "end": 15800000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 17550000,
+ "end": 17900000
+ },
+ {
+ "name": "15m Ham Band",
+ "type": "amateur",
+ "start": 18068000,
+ "end": 21450000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 21450000,
+ "end": 21850000
+ },
+ {
+ "name": "12m Ham Band",
+ "type": "amateur",
+ "start": 24890000,
+ "end": 24990000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 25000000,
+ "end": 26000000
+ },
+ {
+ "name": "CB",
+ "type": "amateur",
+ "start": 26960000,
+ "end": 27410000
+ },
+ {
+ "name": "10m Ham Band",
+ "type": "amateur",
+ "start": 28000000,
+ "end": 29000000
+ },
+ {
+ "name": "Cordless Phones",
+ "type": "broadcast",
+ "start": 41000000,
+ "end": 50000000
+ },
+ {
+ "name": "6m Ham Band",
+ "type": "amateur",
+ "start": 50000000,
+ "end": 54000000
+ },
+ {
+ "name": "TV Channels 2-4",
+ "type": "broadcast",
+ "start": 54000000,
+ "end": 72000000
+ },
+ {
+ "name": "FM Broadcast",
+ "type": "broadcast",
+ "start": 76000000,
+ "end": 108000000
+ },
+ {
+ "name": "Air Band VOR/ILS",
+ "type": "aviation",
+ "start": 108000000,
+ "end": 117000000
+ },
+ {
+ "name": "Air Band Voice",
+ "type": "aviation",
+ "start": 117000000,
+ "end": 137000000
+ },
+ {
+ "name": "2m Ham Band",
+ "type": "amateur",
+ "start": 144000000,
+ "end": 148000000
+ },
+ {
+ "name": "Weatheradio",
+ "type": "broadcast",
+ "start": 162400000,
+ "end": 162700000
+ },
+ {
+ "name": "TV Channels 7-13",
+ "type": "broadcast",
+ "start": 174000000,
+ "end": 216000000
+ },
+ {
+ "name": "70cm Ham Band",
+ "type": "amateur",
+ "start": 430000000,
+ "end": 450000000
+ },
+ {
+ "name": "TV Channels 14-36",
+ "type": "broadcast",
+ "start": 470000000,
+ "end": 608000000
+ },
+ {
+ "name": "TV Channels 38-51",
+ "type": "broadcast",
+ "start": 614000000,
+ "end": 806000000
+ },
+ {
+ "name": "Trunked Mobile",
+ "type": "broadcast",
+ "start": 806000000,
+ "end": 890000000
+ },
+ {
+ "name": "33cm Ham Band",
+ "type": "amateur",
+ "start": 902000000,
+ "end": 928000000
+ }
+ ]
+}
diff --git a/SDR++.app/Contents/Resources/bandplans/china.json b/SDR++.app/Contents/Resources/bandplans/china.json
new file mode 100644
index 000000000..270882e08
--- /dev/null
+++ b/SDR++.app/Contents/Resources/bandplans/china.json
@@ -0,0 +1,285 @@
+{
+ "name": "China (Mainland)",
+ "country_name": "People's Republic of China",
+ "country_code": "CN",
+ "author_name": "Shuyuan Liu",
+ "author_url": "https://github.com/shuyuan-liu",
+ "bands": [
+ {
+ "name": "2200m Ham Band",
+ "type": "amateur",
+ "start": 135700,
+ "end": 137800
+ },
+ {
+ "name": "Medium Wave Broadcast",
+ "type": "broadcast",
+ "start": 526500,
+ "end": 1606500
+ },
+ {
+ "name": "160m Ham Band",
+ "type": "amateur",
+ "start": 1800000,
+ "end": 2000000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 2300000,
+ "end": 2495000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 3200000,
+ "end": 3400000
+ },
+ {
+ "name": "80m Ham Band",
+ "type": "amateur",
+ "start": 3500000,
+ "end": 3900000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 3900000,
+ "end": 4000000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 4750000,
+ "end": 4995000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 5005000,
+ "end": 5060000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 5900000,
+ "end": 6200000
+ },
+ {
+ "name": "40m Ham Band",
+ "type": "amateur",
+ "start": 7000000,
+ "end": 7200000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 7200000,
+ "end": 7350000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 9400000,
+ "end": 9900000
+ },
+ {
+ "name": "30m Ham Band",
+ "type": "amateur",
+ "start": 10100000,
+ "end": 10150000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 11600000,
+ "end": 12100000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 13570000,
+ "end": 13870000
+ },
+ {
+ "name": "20m Ham Band",
+ "type": "amateur",
+ "start": 14000000,
+ "end": 14350000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 15100000,
+ "end": 15800000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 17480000,
+ "end": 17900000
+ },
+ {
+ "name": "17m Ham Band",
+ "type": "amateur",
+ "start": 18068000,
+ "end": 18168000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 18900000,
+ "end": 19020000
+ },
+ {
+ "name": "14m Ham Band",
+ "type": "amateur",
+ "start": 21000000,
+ "end": 21450000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 21450000,
+ "end": 21850000
+ },
+ {
+ "name": "12m Ham Band",
+ "type": "amateur",
+ "start": 24890000,
+ "end": 24990000
+ },
+ {
+ "name": "Frequency and Time Standards",
+ "type": "broadcast",
+ "start": 24990000,
+ "end": 25010000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 25670000,
+ "end": 26100000
+ },
+ {
+ "name": "10m Ham Band",
+ "type": "amateur",
+ "start": 28000000,
+ "end": 29700000
+ },
+ {
+ "name": "6m Ham Band",
+ "type": "amateur",
+ "start": 50000000,
+ "end": 54000000
+ },
+ {
+ "name": "FM Broadcast",
+ "type": "broadcast",
+ "start": 76000000,
+ "end": 84000000
+ },
+ {
+ "name": "FM Broadcast",
+ "type": "broadcast",
+ "start": 87000000,
+ "end": 108000000
+ },
+ {
+ "name": "Air Band Radionavigation",
+ "type": "aviation",
+ "start": 108000000,
+ "end": 117975000
+ },
+ {
+ "name": "Air Band Voice",
+ "type": "aviation",
+ "start": 117975000,
+ "end": 137000000
+ },
+ {
+ "name": "LEO Satellite Downlinks",
+ "type": "satellite",
+ "start": 137000000,
+ "end": 138000000
+ },
+ {
+ "name": "2m Ham Band",
+ "type": "amateur",
+ "start": 144000000,
+ "end": 148000000
+ },
+ {
+ "name": "Marine",
+ "type": "marine",
+ "start": 156487500,
+ "end": 156562500
+ },
+ {
+ "name": "Marine",
+ "type": "marine",
+ "start": 156672500,
+ "end": 160975000
+ },
+ {
+ "name": "Marine",
+ "type": "marine",
+ "start": 161475000,
+ "end": 162050000
+ },
+ {
+ "name": "70cm Ham Band",
+ "type": "amateur",
+ "start": 430000000,
+ "end": 440000000
+ },
+ {
+ "name": "23cm Ham Band",
+ "type": "amateur",
+ "start": 1240000000,
+ "end": 1300000000
+ },
+ {
+ "name": "13cm Ham Band",
+ "type": "amateur",
+ "start": 2300000000,
+ "end": 2450000000
+ },
+ {
+ "name": "9cm Ham Band",
+ "type": "amateur",
+ "start": 3300000000,
+ "end": 3500000000
+ },
+ {
+ "name": "5cm Ham Band",
+ "type": "amateur",
+ "start": 5650000000,
+ "end": 5850000000
+ },
+ {
+ "name": "3cm Ham Band",
+ "type": "amateur",
+ "start": 10000000000,
+ "end": 10500000000
+ },
+ {
+ "name": "1.2cm Ham Band",
+ "type": "amateur",
+ "start": 24000000000,
+ "end": 24250000000
+ },
+ {
+ "name": "6mm Ham Band",
+ "type": "amateur",
+ "start": 47000000000,
+ "end": 47200000000
+ },
+ {
+ "name": "4mm Ham Band",
+ "type": "amateur",
+ "start": 76000000000,
+ "end": 81000000000
+ }
+ ]
+}
diff --git a/SDR++.app/Contents/Resources/bandplans/france.json b/SDR++.app/Contents/Resources/bandplans/france.json
new file mode 100644
index 000000000..59dfae042
--- /dev/null
+++ b/SDR++.app/Contents/Resources/bandplans/france.json
@@ -0,0 +1,496 @@
+{
+ "name": "France",
+ "country_name": "France",
+ "country_code": "FR",
+ "author_name": "Fred F4EED",
+ "author_url": "http://f4eed.wordpress.com",
+ "bands": [
+ {
+ "name": "137KHz - Radioamateur",
+ "type": "amateur",
+ "start": 135500,
+ "end": 137800
+ },
+ {
+ "name": "Grande ondes",
+ "type": "broadcast",
+ "start": 148500,
+ "end": 519000
+ },
+ {
+ "name": "472KHz - Radioamateur",
+ "type": "amateur",
+ "start": 472000,
+ "end": 479000
+ },
+ {
+ "name": "Ondes moyennes (AM Broadcast)",
+ "type": "broadcast",
+ "start": 520000,
+ "end": 1705000
+ },
+ {
+ "name": "Marine - HF",
+ "type": "marine",
+ "start": 1607000,
+ "end": 1810000
+ },
+ {
+ "name": "160m - Radioamateur",
+ "type": "amateur",
+ "start": 1810000,
+ "end": 1850000
+ },
+ {
+ "name": "120m - radiodiffusion",
+ "type": "broadcast",
+ "start": 2300000,
+ "end": 2500000
+ },
+ {
+ "name": "Marine - HF",
+ "type": "marine",
+ "start": 2500000,
+ "end": 2850000
+ },
+ {
+ "name": "Aviation - HF",
+ "type": "aviation",
+ "start": 2850000,
+ "end": 3155000
+ },
+ {
+ "name": "Marine - HF",
+ "type": "marine",
+ "start": 3155000,
+ "end": 3400000
+ },
+ {
+ "name": "90m - radiodiffusion",
+ "type": "broadcast",
+ "start": 3200000,
+ "end": 3400000
+ },
+ {
+ "name": "Aviation - HF",
+ "type": "aviation",
+ "start": 3400000,
+ "end": 3500000
+ },
+ {
+ "name": "Marine - HF",
+ "type": "marine",
+ "start": 3500000,
+ "end": 3600000
+ },
+ {
+ "name": "80m - Radioamateur",
+ "type": "amateur",
+ "start": 3600000,
+ "end": 3800000
+ },
+ {
+ "name": "75m - radiodiffusion",
+ "type": "broadcast",
+ "start": 3900000,
+ "end": 4000000
+ },
+ {
+ "name": "Marine - HF",
+ "type": "marine",
+ "start": 4065000,
+ "end": 4440000
+ },
+ {
+ "name": "Aviation - HF",
+ "type": "aviation",
+ "start": 4650000,
+ "end": 4750000
+ },
+
+ {
+ "name": "60m - radiodiffusion",
+ "type": "broadcast",
+ "start": 4750000,
+ "end": 4995000
+ },
+ {
+ "name": "60m - radiodiffusion",
+ "type": "broadcast",
+ "start": 5005000,
+ "end": 5060000
+ },
+ {
+ "name": "60m - Radioamateur",
+ "type": "amateur",
+ "start": 5351500,
+ "end": 5366500
+ },
+ {
+ "name": "Aviation - HF",
+ "type": "aviation",
+ "start": 5450000,
+ "end": 5730000
+ },
+ {
+ "name": "49m - radiodiffusion",
+ "type": "broadcast",
+ "start": 5900000,
+ "end": 6200000
+ },
+ {
+ "name": "Marine - HF",
+ "type": "marine",
+ "start": 6200000,
+ "end": 6525000
+ },
+ {
+ "name": "Aviation - HF",
+ "type": "aviation",
+ "start": 6525000,
+ "end": 6765000
+ },
+ {
+ "name": "40m - Radioamateur",
+ "type": "amateur",
+ "start": 7000000,
+ "end": 7200000
+ },
+ {
+ "name": "41m - radiodiffusion",
+ "type": "broadcast",
+ "start": 7200000,
+ "end": 7450000
+ },
+ {
+ "name": "Marine - HF",
+ "type": "marine",
+ "start": 8195000,
+ "end": 8815000
+ },
+ {
+ "name": "Aviation - HF",
+ "type": "aviation",
+ "start": 8815000,
+ "end": 9040000
+ },
+ {
+ "name": "31m - radiodiffusion",
+ "type": "broadcast",
+ "start": 9400000,
+ "end": 9900000
+ },
+ {
+ "name": "Aviation - HF",
+ "type": "aviation",
+ "start": 10005000,
+ "end": 10100000
+ },
+ {
+ "name": "30m - Radioamateur",
+ "type": "amateur",
+ "start": 10100000,
+ "end": 10150000
+ },
+ {
+ "name": "Aviation - HF",
+ "type": "aviation",
+ "start": 11175000,
+ "end": 11400000
+ },
+ {
+ "name": "25m - radiodiffusion",
+ "type": "broadcast",
+ "start": 11600000,
+ "end": 12100000
+ },
+ {
+ "name": "Marine - HF",
+ "type": "marine",
+ "start": 12230000,
+ "end": 13200000
+ },
+ {
+ "name": "Aviation - HF",
+ "type": "aviation",
+ "start": 13200000,
+ "end": 13360000
+ },
+ {
+ "name": "21m - radiodiffusion",
+ "type": "broadcast",
+ "start": 13570000,
+ "end": 13870000
+ },
+ {
+ "name": "20m - Radioamateur",
+ "type": "amateur",
+ "start": 14000000,
+ "end": 14350000
+ },
+ {
+ "name": "Aviation - HF",
+ "type": "aviation",
+ "start": 15010000,
+ "end": 15100000
+ },
+ {
+ "name": "19m - radiodiffusion",
+ "type": "broadcast",
+ "start": 15100000,
+ "end": 15800000
+ },
+ {
+ "name": "Marine - HF",
+ "type": "marine",
+ "start": 16360000,
+ "end": 17410000
+ },
+ {
+ "name": "16m - radiodiffusion",
+ "type": "broadcast",
+ "start": 17480000,
+ "end": 17900000
+ },
+ {
+ "name": "Aviation - HF",
+ "type": "aviation",
+ "start": 17900000,
+ "end": 18030000
+ },
+ {
+ "name": "17m - Radioamateur",
+ "type": "amateur",
+ "start": 18068000,
+ "end": 18168000
+ },
+ {
+ "name": "Marine - HF",
+ "type": "marine",
+ "start": 18780000,
+ "end": 18900000
+ },
+ {
+ "name": "15m - radiodiffusion",
+ "type": "broadcast",
+ "start": 18900000,
+ "end": 19020000
+ },
+ {
+ "name": "Marine - HF",
+ "type": "marine",
+ "start": 19680000,
+ "end": 19800000
+ },
+ {
+ "name": "15m - Radioamateur",
+ "type": "amateur",
+ "start": 21000000,
+ "end": 21450000
+ },
+ {
+ "name": "13 mètres - radiodiffusion",
+ "type": "broadcast",
+ "start": 21450000,
+ "end": 21850000
+ },
+ {
+ "name": "Aviation - HF",
+ "type": "aviation",
+ "start": 21925000,
+ "end": 22000000
+ },
+ {
+ "name": "Marine - HF",
+ "type": "marine",
+ "start": 22000000,
+ "end": 22855000
+ },
+ {
+ "name": "Aviation - HF",
+ "type": "aviation",
+ "start": 23200000,
+ "end": 23350000
+ },
+ {
+ "name": "12m - Radioamateur",
+ "type": "amateur",
+ "start": 24890000,
+ "end": 24990000
+ },
+ {
+ "name": "Marine - HF",
+ "type": "marine",
+ "start": 25070000,
+ "end": 25210000
+ },
+ {
+ "name": "11m - radiodiffusion",
+ "type": "broadcast",
+ "start": 25670000,
+ "end": 26100000
+ },
+ {
+ "name": "Marine - HF",
+ "type": "marine",
+ "start": 26100000,
+ "end": 26175000
+ },
+ {
+ "name": "11m - CB",
+ "type": "amateur",
+ "start": 26960000,
+ "end": 27230000
+ },
+ {
+ "name": "10m - Radioamateur",
+ "type": "amateur",
+ "start": 28000000,
+ "end": 29700000
+ },
+ {
+ "name": "6m - Radioamateur",
+ "type": "amateur",
+ "start": 50000000,
+ "end": 54000000
+ },
+ {
+ "name": "Bande FM - Radiodif.",
+ "type": "broadcast",
+ "start": 80000000,
+ "end": 108000000
+ },
+ {
+ "name": "Aviation - VOR/ILS",
+ "type": "aviation",
+ "start": 108000000,
+ "end": 118000000
+ },
+ {
+ "name": "Aviation - Voix",
+ "type": "aviation",
+ "start": 118000000,
+ "end": 137000000
+ },
+ {
+ "name": "Polar Orbiting Satellites",
+ "type": "satellite",
+ "start": 137000000,
+ "end": 138000000
+ },
+ {
+ "name": "2m - Radioamateur",
+ "type": "amateur",
+ "start": 144000000,
+ "end": 146000000
+ },
+ {
+ "name": "Marine",
+ "type": "marine",
+ "start": 156000000,
+ "end": 162025000
+ },
+ {
+ "name": "NOAA Weather Radio",
+ "type": "broadcast",
+ "start": 162362500,
+ "end": 162587500
+ },
+ {
+ "name": "Military Aviation",
+ "type": "military",
+ "start": 225000000,
+ "end": 380000000
+ },
+ {
+ "name": "Satellite militaire",
+ "type": "military",
+ "start": 240000000,
+ "end": 270000000
+ },
+ {
+ "name": "70cm - Radioamateur",
+ "type": "amateur",
+ "start": 420000000,
+ "end": 450000000
+ },
+ {
+ "name": "PMR446",
+ "type": "amateur",
+ "start": 446000000,
+ "end": 446200000
+ },
+ {
+ "name": "23cm - Radioamateur",
+ "type": "amateur",
+ "start": 1240000000,
+ "end": 1300000000
+ },
+ {
+ "name": "13cm - Radioamateur",
+ "type": "amateur",
+ "start": 2300000000,
+ "end": 2450000000
+ },
+ {
+ "name": "9cm - Radioamateur",
+ "type": "amateur",
+ "start": 3400000000,
+ "end": 3475000000
+ },
+ {
+ "name": "6cm - Radioamateur",
+ "type": "amateur",
+ "start": 5650000000,
+ "end": 5850000000
+ },
+ {
+ "name": "3cm - Radioamateur",
+ "type": "amateur",
+ "start": 10000000000,
+ "end": 10500000000
+ },
+ {
+ "name": "5,650GHz - Radioamateur",
+ "type": "amateur",
+ "start": 5650000000,
+ "end": 5850000000
+ },
+ {
+ "name": "12mm - Radioamateur",
+ "type": "amateur",
+ "start": 24000000000,
+ "end": 24250000000
+ },
+ {
+ "name": "6mm - Radioamateur",
+ "type": "amateur",
+ "start": 47000000000,
+ "end": 47200000000
+ },
+ {
+ "name": "4mm - Radioamateur",
+ "type": "amateur",
+ "start": 75500000000,
+ "end": 81500000000
+ },
+ {
+ "name": "2,5mm - Radioamateur",
+ "type": "amateur",
+ "start": 122250000000,
+ "end": 123000000000
+ },
+ {
+ "name": "2mm - Radioamateur",
+ "type": "amateur",
+ "start": 134000000000,
+ "end": 141000000000
+ },
+ {
+ "name": "1mm - Radioamateur",
+ "type": "amateur",
+ "start": 241000000000,
+ "end": 250000000000
+ }
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/bandplans/general.json b/SDR++.app/Contents/Resources/bandplans/general.json
new file mode 100644
index 000000000..99751add6
--- /dev/null
+++ b/SDR++.app/Contents/Resources/bandplans/general.json
@@ -0,0 +1,273 @@
+{
+ "name": "General",
+ "country_name": "Worldwide",
+ "country_code": "--",
+ "author_name": "Ryzerth",
+ "author_url": "https://github.com/AlexandreRouma",
+ "bands": [
+ {
+ "name": "Long Wave",
+ "type": "broadcast",
+ "start": 148500,
+ "end": 283500
+ },
+ {
+ "name": "Medium Wave",
+ "type": "broadcast",
+ "start": 526500,
+ "end": 1606500
+ },
+ {
+ "name": "160m Ham Band",
+ "type": "amateur",
+ "start": 1800000,
+ "end": 2000000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 2300000,
+ "end": 2468000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 3200000,
+ "end": 3400000
+ },
+ {
+ "name": "80m Ham Band",
+ "type": "amateur",
+ "start": 3500000,
+ "end": 3950000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 3950000,
+ "end": 4000000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 4750000,
+ "end": 4995000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 5005000,
+ "end": 5060000
+ },
+ {
+ "name": "60m Ham Band",
+ "type": "amateur",
+ "start": 5351500,
+ "end": 5366500
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 5900000,
+ "end": 6200000
+ },
+ {
+ "name": "40m Ham Band",
+ "type": "amateur",
+ "start": 7000000,
+ "end": 7200000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 7200000,
+ "end": 7450000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 9400000,
+ "end": 9900000
+ },
+ {
+ "name": "30m Ham Band",
+ "type": "amateur",
+ "start": 10100000,
+ "end": 10150000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 11600000,
+ "end": 12100000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 13570000,
+ "end": 13870000
+ },
+ {
+ "name": "20m Ham Band",
+ "type": "amateur",
+ "start": 14000000,
+ "end": 14350000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 15100000,
+ "end": 15800000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 17480000,
+ "end": 17900000
+ },
+ {
+ "name": "17m Ham Band",
+ "type": "amateur",
+ "start": 18068000,
+ "end": 18168000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 18900000,
+ "end": 19020000
+ },
+ {
+ "name": "15m Ham Band",
+ "type": "amateur",
+ "start": 21000000,
+ "end": 21450000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 21450000,
+ "end": 21850000
+ },
+ {
+ "name": "12m Ham Band",
+ "type": "amateur",
+ "start": 24890000,
+ "end": 24990000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 25670000,
+ "end": 26100000
+ },
+ {
+ "name": "CB",
+ "type": "amateur",
+ "start": 26960000,
+ "end": 27410000
+ },
+ {
+ "name": "10m Ham Band",
+ "type": "amateur",
+ "start": 28000000,
+ "end": 29750000
+ },
+ {
+ "name": "6m Ham Band",
+ "type": "amateur",
+ "start": 50000000,
+ "end": 54000000
+ },
+ {
+ "name": "FM Broadcast",
+ "type": "broadcast",
+ "start": 87500000,
+ "end": 108000000
+ },
+ {
+ "name": "Air Band VOR/ILS",
+ "type": "aviation",
+ "start": 108000000,
+ "end": 118000000
+ },
+ {
+ "name": "Air Band Voice",
+ "type": "aviation",
+ "start": 118000000,
+ "end": 137000000
+ },
+ {
+ "name": "Polar Orbiting Satellites",
+ "type": "satellite",
+ "start": 137000000,
+ "end": 138000000
+ },
+ {
+ "name": "2m Ham Band",
+ "type": "amateur",
+ "start": 144000000,
+ "end": 148000000
+ },
+ {
+ "name": "Marine",
+ "type": "marine",
+ "start": 156000000,
+ "end": 162025000
+ },
+ {
+ "name": "1.25m Ham Band",
+ "type": "amateur",
+ "start": 222000000,
+ "end": 225000000
+ },
+ {
+ "name": "Military Air",
+ "type": "military",
+ "start": 225000000,
+ "end": 380000000
+ },
+ {
+ "name": "Military Sat",
+ "type": "military",
+ "start": 240000000,
+ "end": 270000000
+ },
+ {
+ "name": "70cm Ham Band",
+ "type": "amateur",
+ "start": 420000000,
+ "end": 450000000
+ },
+ {
+ "name": "PMR446",
+ "type": "amateur",
+ "start": 446000000,
+ "end": 446200000
+ },
+ {
+ "name": "33cm Ham Band",
+ "type": "amateur",
+ "start": 902000000,
+ "end": 928000000
+ },
+ {
+ "name": "23cm Ham Band",
+ "type": "amateur",
+ "start": 1240000000,
+ "end": 1300000000
+ },
+ {
+ "name": "13cm Ham Band",
+ "type": "amateur",
+ "start": 2300000000,
+ "end": 2310000000
+ },
+ {
+ "name": "13cm Ham Band",
+ "type": "amateur",
+ "start": 2390000000,
+ "end": 2450000000
+ }
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/bandplans/germany-mobile-lte-bands.json b/SDR++.app/Contents/Resources/bandplans/germany-mobile-lte-bands.json
new file mode 100644
index 000000000..0592aad3c
--- /dev/null
+++ b/SDR++.app/Contents/Resources/bandplans/germany-mobile-lte-bands.json
@@ -0,0 +1,87 @@
+{
+ "name": "German LTE bands",
+ "country_name": "Germany",
+ "country_code": "DE",
+ "author_name": "Martin Hauke",
+ "author_url": "none",
+ "bands": [
+ {
+ "name": "LTE band 28 (APT) FDD uplink",
+ "type": "LTE.FDD.uplink",
+ "start": 703000000,
+ "end": 748000000
+ },
+ {
+ "name": "LTE band 20 (Digital Dividend) FDD uplink",
+ "type": "LTE.FDD.uplink",
+ "start": 832000000,
+ "end": 862000000
+ },
+ {
+ "name": "LTE band 8 (Extended GSM) FDD uplink",
+ "type": "LTE.FDD.uplink",
+ "start": 880000000,
+ "end": 915000000
+ },
+ {
+ "name": "LTE band 3 (DCS) FDD uplink",
+ "type": "LTE.FDD.uplink",
+ "start": 1710000000,
+ "end": 1785000000
+ },
+ {
+ "name": "LTE band 3 (DCS) FDD downlink",
+ "type": "LTE.FDD.downlink",
+ "start": 1805000000,
+ "end": 1880000000
+ },
+ {
+ "name": "LTE band 1 (IMT) FDD uplink",
+ "type": "LTE.FDD.uplink",
+ "start": 1920000000,
+ "end": 1980000000
+ },
+ {
+ "name": "LTE band 1 (IMT) FDD downlink",
+ "type": "LTE.FDD.downlink",
+ "start": 2110000000,
+ "end": 2170000000
+ },
+ {
+ "name": "LTE band 7 (IMT-E) FDD uplink",
+ "type": "LTE.FDD.uplink",
+ "start": 2500000000,
+ "end": 2570000000
+ },
+ {
+ "name": "LTE band 7 (IMT-E) FDD downlink",
+ "type": "LTE.FDD.downlink",
+ "start": 2620000000,
+ "end": 2690000000
+ },
+ {
+ "name": "LTE band 28 (APT) FDD downlink",
+ "type": "LTE.FDD.downlink",
+ "start": 7580000000,
+ "end": 8030000000
+ },
+ {
+ "name": "LTE band 20 (Digital Dividend) FDD downlink",
+ "type": "LTE.FDD.downlink",
+ "start": 7910000000,
+ "end": 8210000000
+ },
+ {
+ "name": "LTE band 8 (Extended GSM) FDD downlink",
+ "type": "LTE.FDD.downlink",
+ "start": 9250000000,
+ "end": 9600000000
+ },
+ {
+ "name": "LTE band 32 (L-Band (EU)) SDL downlink",
+ "type": "LTE.SDL",
+ "start": 14520000000,
+ "end": 14960000000
+ }
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/bandplans/germany-mobile-networks.json b/SDR++.app/Contents/Resources/bandplans/germany-mobile-networks.json
new file mode 100644
index 000000000..289c6a297
--- /dev/null
+++ b/SDR++.app/Contents/Resources/bandplans/germany-mobile-networks.json
@@ -0,0 +1,321 @@
+{
+ "name": "German Mobile Networks",
+ "country_name": "Germany",
+ "country_code": "DE",
+ "author_name": "Martin Hauke",
+ "author_url": "none",
+ "bands": [
+ {
+ "name": "DVB-T2",
+ "type": "broadcast",
+ "start": 470000000,
+ "end": 694000000
+ },
+ {
+ "name": "703 Telefonica FDD uplink",
+ "type": "mobile.mno.telefonica",
+ "start": 703000000,
+ "end": 713000000
+ },
+ {
+ "name": "713 Telekom FDD uplink",
+ "type": "mobile.mno.telekom",
+ "start": 713000000,
+ "end": 723000000
+ },
+ {
+ "name": "723 Vodafone FDD uplink",
+ "type": "mobile.mno.vodafone",
+ "start": 723000000,
+ "end": 733000000
+ },
+ {
+ "name": "758 Telefonica FDD downlink",
+ "type": "mobile.mno.telefonica",
+ "start": 758000000,
+ "end": 768000000
+ },
+ {
+ "name": "768 Telekom FDD downlink",
+ "type": "mobile.mno.telekom",
+ "start": 768000000,
+ "end": 778000000
+ },
+ {
+ "name": "778 Vodafone FDD downlink",
+ "type": "mobile.mno.vodafone",
+ "start": 778000000,
+ "end": 788000000
+ },
+ {
+ "name": "791 Telefonica FDD downlink",
+ "type": "mobile.mno.telefonica",
+ "start": 791000000,
+ "end": 801000000
+ },
+ {
+ "name": "801 Vodafone FDD downlink",
+ "type": "mobile.mno.vodafone",
+ "start": 801000000,
+ "end": 811000000
+ },
+ {
+ "name": "811 Telekom FDD downlink",
+ "type": "mobile.mno.telekom",
+ "start": 811000000,
+ "end": 821000000
+ },
+ {
+ "name": "832 Telefonica FDD uplink",
+ "type": "mobile.mno.telefonica",
+ "start": 832000000,
+ "end": 842000000
+ },
+ {
+ "name": "842 Vodafone FDD uplink",
+ "type": "mobile.mno.vodafone",
+ "start": 842000000,
+ "end": 852000000
+ },
+ {
+ "name": "852 Telekom FDD uplink",
+ "type": "mobile.mno.telekom",
+ "start": 852000000,
+ "end": 862000000
+ },
+ {
+ "name": "GSM-R FDD uplink",
+ "type": "mobile.gsm-r",
+ "start": 873100000,
+ "end": 880000000
+ },
+ {
+ "name": "880 Telefonica FDD uplink",
+ "type": "mobile.mno.telefonica",
+ "start": 880000000,
+ "end": 890000000
+ },
+ {
+ "name": "890 Vodafone FDD uplink",
+ "type": "mobile.mno.vodafone",
+ "start": 890000000,
+ "end": 900000000
+ },
+ {
+ "name": "900 Telekom FDD uplink",
+ "type": "mobile.mno.telekom",
+ "start": 900000000,
+ "end": 915000000
+ },
+ {
+ "name": "GSM-R FDD downlink",
+ "type": "mobile.gsm-r",
+ "start": 918100000,
+ "end": 925000000
+ },
+ {
+ "name": "925 Telefonica FDD downlink",
+ "type": "mobile.mno.telefonica",
+ "start": 925000000,
+ "end": 935000000
+ },
+ {
+ "name": "935 Vodafone FDD downlink",
+ "type": "mobile.mno.vodafone",
+ "start": 935000000,
+ "end": 945000000
+ },
+ {
+ "name": "945 Telekom FDD downlink",
+ "type": "mobile.mno.telekom",
+ "start": 945000000,
+ "end": 960000000
+ },
+ {
+ "name": "1452 Telekom SDL downlink",
+ "type": "mobile.mno.telekom",
+ "start": 1452000000,
+ "end": 1472000000
+ },
+ {
+ "name": "1472 Vodafone SDL downlink",
+ "type": "mobile.mno.vodafone",
+ "start": 1472000000,
+ "end": 1492000000
+ },
+ {
+ "name": "1710 Telekom FDD uplink",
+ "type": "mobile.mno.telekom",
+ "start": 1710000000,
+ "end": 1740000000
+ },
+ {
+ "name": "1740 Telefonica FDD uplink",
+ "type": "mobile.mno.telefonica",
+ "start": 1740000000,
+ "end": 1760000000
+ },
+ {
+ "name": "1760 Vodafone FDD uplink",
+ "type": "mobile.mno.vodafone",
+ "start": 1760000000,
+ "end": 1785000000
+ },
+ {
+ "name": "1805 Telekom FDD downlink",
+ "type": "mobile.mno.telekom",
+ "start": 1805000000,
+ "end": 1835000000
+ },
+ {
+ "name": "1835 Telefonica FDD downlink",
+ "type": "mobile.mno.telefonica",
+ "start": 1835000000,
+ "end": 1855000000
+ },
+ {
+ "name": "1855 Vodafone FDD downlink",
+ "type": "mobile.mno.vodafone",
+ "start": 1855000000,
+ "end": 1880000000
+ },
+ {
+ "name": "DECT",
+ "type": "broadcast",
+ "start": 1880000000,
+ "end": 1900000000
+ },
+ {
+ "name": "1900.1 Telefonica",
+ "type": "mobile.mno.telefonica",
+ "start": 1900100000,
+ "end": 1905100000
+ },
+ {
+ "name": "1920 Vodafone FDD uplink",
+ "type": "mobile.mno.vodafone",
+ "start": 1920000000,
+ "end": 1940000000
+ },
+ {
+ "name": "1940 Telefonica FDD uplink",
+ "type": "mobile.mno.telefonica",
+ "start": 1940000000,
+ "end": 1960000000
+ },
+ {
+ "name": "1960 Telekom FDD uplink",
+ "type": "mobile.mno.telekom",
+ "start": 1960000000,
+ "end": 1980000000
+ },
+ {
+ "name": "2010.5 Telefonica",
+ "type": "mobile.mno.telefonica",
+ "start": 2010500000,
+ "end": 2024700000
+ },
+ {
+ "name": "2110 Vodafone FDD downlink",
+ "type": "mobile.mno.vodafone",
+ "start": 2110000000,
+ "end": 2130000000
+ },
+ {
+ "name": "2130 Telefonica FDD downlink",
+ "type": "mobile.mno.telefonica",
+ "start": 2130000000,
+ "end": 2150000000
+ },
+ {
+ "name": "2150 Telekom FDD downlink",
+ "type": "mobile.mno.telekom",
+ "start": 2150000000,
+ "end": 2170000000
+ },
+ {
+ "name": "2500 Vodafone FDD uplink",
+ "type": "mobile.mno.vodafone",
+ "start": 2500000000,
+ "end": 2520000000
+ },
+ {
+ "name": "2520 Telekom FDD uplink",
+ "type": "mobile.mno.telekom",
+ "start": 2520000000,
+ "end": 2540000000
+ },
+ {
+ "name": "2540 Telefonica FDD uplink",
+ "type": "mobile.mno.telefonica",
+ "start": 2540000000,
+ "end": 2570000000
+ },
+ {
+ "name": "2570 Telefonica TDD",
+ "type": "mobile.mno.telefonica",
+ "start": 2570000000,
+ "end": 2580000000
+ },
+ {
+ "name": "2580 Vodafone TDD",
+ "type": "mobile.mno.vodafone",
+ "start": 2580000000,
+ "end": 2605000000
+ },
+ {
+ "name": "2605 Telekom TDD",
+ "type": "mobile.mno.telekom",
+ "start": 2605000000,
+ "end": 2610000000
+ },
+ {
+ "name": "2610 Telefonica TDD",
+ "type": "mobile.mno.telefonica",
+ "start": 2610000000,
+ "end": 2620000000
+ },
+ {
+ "name": "2620 Vodafone FDD downlink",
+ "type": "mobile.mno.vodafone",
+ "start": 2620000000,
+ "end": 2640000000
+ },
+ {
+ "name": "2640 Telekom FDD downlink",
+ "type": "mobile.mno.telekom",
+ "start": 2640000000,
+ "end": 2660000000
+ },
+ {
+ "name": "2660 Telefonica FDD downlink",
+ "type": "mobile.mno.telefonica",
+ "start": 2660000000,
+ "end": 2690000000
+ },
+ {
+ "name": "3400 Vodafone",
+ "type": "mobile.mno.vodafone",
+ "start": 3400000000,
+ "end": 3490000000
+ },
+ {
+ "name": "3490 Drillisch",
+ "type": "mobile.mno.drillisch",
+ "start": 3490000000,
+ "end": 3540000000
+ },
+ {
+ "name": "3540 Telefonica",
+ "type": "mobile.mno.telefonica",
+ "start": 3540000000,
+ "end": 3610000000
+ },
+ {
+ "name": "3610 Telekom",
+ "type": "mobile.mno.telekom",
+ "start": 3610000000,
+ "end": 3700000000
+ }
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/bandplans/germany.json b/SDR++.app/Contents/Resources/bandplans/germany.json
new file mode 100644
index 000000000..c9568bf83
--- /dev/null
+++ b/SDR++.app/Contents/Resources/bandplans/germany.json
@@ -0,0 +1,141 @@
+{
+ "name": "Germany",
+ "country_name": "Germany",
+ "country_code": "DE",
+ "author_name": "Tobias Mädel",
+ "author_url": "https://tbspace.de",
+ "bands": [
+ {
+ "name": "LW",
+ "type": "amateur",
+ "start": 135700,
+ "end": 137800
+ },
+ {
+ "name": "630m",
+ "type": "amateur",
+ "start": 472000,
+ "end": 479000
+ },
+ {
+ "name": "160m",
+ "type": "amateur",
+ "start": 1810000,
+ "end": 2000000
+ },
+ {
+ "name": "80m",
+ "type": "amateur",
+ "start": 3500000,
+ "end": 3800000
+ },
+ {
+ "name": "60m",
+ "type": "amateur",
+ "start": 5351500,
+ "end": 5366500
+ },
+ {
+ "name": "40m",
+ "type": "amateur",
+ "start": 7000000,
+ "end": 7200000
+ },
+ {
+ "name": "30m",
+ "type": "amateur",
+ "start": 10100000,
+ "end": 10150000
+ },
+ {
+ "name": "20m",
+ "type": "amateur",
+ "start": 14000000,
+ "end": 14350000
+ },
+ {
+ "name": "17m",
+ "type": "amateur",
+ "start": 18068000,
+ "end": 18168000
+ },
+ {
+ "name": "15m",
+ "type": "amateur",
+ "start": 21000000,
+ "end": 21450000
+ },
+ {
+ "name": "12m",
+ "type": "amateur",
+ "start": 24890000,
+ "end": 24990000
+ },
+ {
+ "name": "CB",
+ "type": "other",
+ "start": 26565000,
+ "end": 27405000
+ },
+ {
+ "name": "10m",
+ "type": "amateur",
+ "start": 28000000,
+ "end": 29700000
+ },
+ {
+ "name": "6m",
+ "type": "amateur",
+ "start": 50030000,
+ "end": 51000000
+ },
+ {
+ "name": "4m",
+ "type": "amateur",
+ "start": 70150000,
+ "end": 70200000
+ },
+ {
+ "name": "FM",
+ "type": "broadcast",
+ "start": 87500000,
+ "end": 108000000
+ },
+ {
+ "name": "2m",
+ "type": "amateur",
+ "start": 144000000,
+ "end": 146000000
+ },
+ {
+ "name": "Freenet",
+ "type": "other",
+ "start": 149025000,
+ "end": 149115625
+ },
+ {
+ "name": "70cm",
+ "type": "amateur",
+ "start": 430000000,
+ "end": 440000000
+ },
+ {
+ "name": "PMR446",
+ "type": "other",
+ "start": 446006250,
+ "end": 446196875
+ },
+ {
+ "name": "23cm",
+ "type": "amateur",
+ "start": 1240000000,
+ "end": 1300000000
+ },
+ {
+ "name": "13cm",
+ "type": "amateur",
+ "start": 2320000000,
+ "end": 2450000000
+ }
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/bandplans/russia.json b/SDR++.app/Contents/Resources/bandplans/russia.json
new file mode 100644
index 000000000..9be82f297
--- /dev/null
+++ b/SDR++.app/Contents/Resources/bandplans/russia.json
@@ -0,0 +1,1077 @@
+{
+ "name": "Russia",
+ "country_name": "Russia",
+ "country_code": "RU",
+ "author_name": "Raov",
+ "author_url": "https://twitter.com/UB8QBD",
+ "bands": [
+ {
+ "name": "2200m",
+ "type": "amateur",
+ "start": 135700,
+ "end": 137800
+ },
+ {
+ "name": "LW",
+ "type": "broadcast",
+ "start": 144000,
+ "end": 415000
+ },
+ {
+ "name": "MW",
+ "type": "broadcast",
+ "start": 520000,
+ "end": 1602000
+ },
+ {
+ "name": "160m CW",
+ "type": "amateur",
+ "start": 1810000,
+ "end": 1838000
+ },
+ {
+ "name": "160m NB",
+ "type": "amateur",
+ "start": 1838000,
+ "end": 1840000
+ },
+ {
+ "name": "160m",
+ "type": "amateur",
+ "start": 1840000,
+ "end": 2000000
+ },
+ {
+ "name": "Train communications",
+ "type": "aviation",
+ "start": 2130000,
+ "end": 2150000
+ },
+ {
+ "name": "SW 90m",
+ "type": "broadcast",
+ "start": 3200000,
+ "end": 3400000
+ },
+ {
+ "name": "80m CW",
+ "type": "amateur",
+ "start": 3500000,
+ "end": 3510000
+ },
+ {
+ "name": "80m CW Contest",
+ "type": "amateur",
+ "start": 3510000,
+ "end": 3560000
+ },
+ {
+ "name": "80m CW",
+ "type": "amateur",
+ "start": 3560000,
+ "end": 3570000
+ },
+ {
+ "name": "80m NB",
+ "type": "amateur",
+ "start": 3570000,
+ "end": 3600000
+ },
+ {
+ "name": "80m SSB Contest",
+ "type": "amateur",
+ "start": 3600000,
+ "end": 3650000
+ },
+ {
+ "name": "80m",
+ "type": "amateur",
+ "start": 3650000,
+ "end": 3700000
+ },
+ {
+ "name": "80m SSB Contest",
+ "type": "amateur",
+ "start": 3700000,
+ "end": 3800000
+ },
+ {
+ "name": "SW 75m",
+ "type": "broadcast",
+ "start": 3900000,
+ "end": 4000000
+ },
+ {
+ "name": "SW 60m",
+ "type": "broadcast",
+ "start": 4750000,
+ "end": 5060000
+ },
+ {
+ "name": "SW 49m",
+ "type": "broadcast",
+ "start": 5900000,
+ "end": 6200000
+ },
+ {
+ "name": "40m CW",
+ "type": "amateur",
+ "start": 7000000,
+ "end": 7040000
+ },
+ {
+ "name": "40m NB, Digi 500Hz",
+ "type": "amateur",
+ "start": 7040000,
+ "end": 7050000
+ },
+ {
+ "name": "40m Digi",
+ "type": "amateur",
+ "start": 7050000,
+ "end": 7053000
+ },
+ {
+ "name": "40m",
+ "type": "amateur",
+ "start": 7053000,
+ "end": 7200000
+ },
+ {
+ "name": "SW 31m",
+ "type": "broadcast",
+ "start": 9500000,
+ "end": 9900000
+ },
+ {
+ "name": "30m CW",
+ "type": "amateur",
+ "start": 10100000,
+ "end": 10130000
+ },
+ {
+ "name": "30m NB",
+ "type": "amateur",
+ "start": 10130000,
+ "end": 10150000
+ },
+ {
+ "name": "SW 25m",
+ "type": "broadcast",
+ "start": 11650000,
+ "end": 12050000
+ },
+ {
+ "name": "SW 22m",
+ "type": "broadcast",
+ "start": 13600000,
+ "end": 13800000
+ },
+ {
+ "name": "20m CW",
+ "type": "amateur",
+ "start": 14000000,
+ "end": 14070000
+ },
+ {
+ "name": "20m NB",
+ "type": "amateur",
+ "start": 14070000,
+ "end": 14099000
+ },
+ {
+ "name": "20m Beacons",
+ "type": "amateur",
+ "start": 14099000,
+ "end": 14101000
+ },
+ {
+ "name": "20m Digi",
+ "type": "amateur",
+ "start": 14101000,
+ "end": 14112000
+ },
+ {
+ "name": "20m",
+ "type": "amateur",
+ "start": 14112000,
+ "end": 14350000
+ },
+ {
+ "name": "SW 19m",
+ "type": "broadcast",
+ "start": 15100000,
+ "end": 15600000
+ },
+ {
+ "name": "SW 16m",
+ "type": "broadcast",
+ "start": 17550000,
+ "end": 17900000
+ },
+ {
+ "name": "17m CW",
+ "type": "amateur",
+ "start": 18068000,
+ "end": 18095000
+ },
+ {
+ "name": "17m NB",
+ "type": "amateur",
+ "start": 18095000,
+ "end": 18109000
+ },
+ {
+ "name": "17m Beacons",
+ "type": "amateur",
+ "start": 18109000,
+ "end": 18111000
+ },
+ {
+ "name": "17m Digi",
+ "type": "amateur",
+ "start": 18111000,
+ "end": 18120000
+ },
+ {
+ "name": "17m",
+ "type": "amateur",
+ "start": 18120000,
+ "end": 18168000
+ },
+ {
+ "name": "15m CW",
+ "type": "amateur",
+ "start": 21000000,
+ "end": 21070000
+ },
+ {
+ "name": "15m NB Digi",
+ "type": "amateur",
+ "start": 21070000,
+ "end": 21110000
+ },
+ {
+ "name": "15m Digital",
+ "type": "amateur",
+ "start": 21110000,
+ "end": 21120000
+ },
+ {
+ "name": "15m NB",
+ "type": "amateur",
+ "start": 21120000,
+ "end": 21149000
+ },
+ {
+ "name": "15m Beacons",
+ "type": "amateur",
+ "start": 21149000,
+ "end": 21151000
+ },
+ {
+ "name": "15m",
+ "type": "amateur",
+ "start": 21151000,
+ "end": 21450000
+ },
+ {
+ "name": "SW 13m",
+ "type": "broadcast",
+ "start": 21450000,
+ "end": 21850000
+ },
+ {
+ "name": "12m CW",
+ "type": "amateur",
+ "start": 24890000,
+ "end": 24915000
+ },
+ {
+ "name": "12m NB",
+ "type": "amateur",
+ "start": 24915000,
+ "end": 24929000
+ },
+ {
+ "name": "12m Beacons",
+ "type": "amateur",
+ "start": 24929000,
+ "end": 24931000
+ },
+ {
+ "name": "12m",
+ "type": "amateur",
+ "start": 24931000,
+ "end": 24990000
+ },
+ {
+ "name": "SW 11m",
+ "type": "broadcast",
+ "start": 25650000,
+ "end": 26100000
+ },
+ {
+ "name": "CB",
+ "type": "amateur",
+ "start": 26960000,
+ "end": 27410000
+ },
+ {
+ "name": "10m CW",
+ "type": "amateur",
+ "start": 28000000,
+ "end": 28070000
+ },
+ {
+ "name": "10m NB Digital",
+ "type": "amateur",
+ "start": 28070000,
+ "end": 28150000
+ },
+ {
+ "name": "10m NB",
+ "type": "amateur",
+ "start": 28150000,
+ "end": 28190000
+ },
+ {
+ "name": "10m Regional Beacons",
+ "type": "amateur",
+ "start": 28190000,
+ "end": 28199000
+ },
+ {
+ "name": "10m International Beacons",
+ "type": "amateur",
+ "start": 28199000,
+ "end": 28201000
+ },
+ {
+ "name": "10m Beacons",
+ "type": "amateur",
+ "start": 28201000,
+ "end": 28225000
+ },
+ {
+ "name": "10m Wide Beacons",
+ "type": "amateur",
+ "start": 28225000,
+ "end": 28300000
+ },
+ {
+ "name": "10m Digi",
+ "type": "amateur",
+ "start": 28300000,
+ "end": 28320000
+ },
+ {
+ "name": "10m",
+ "type": "amateur",
+ "start": 28320000,
+ "end": 29000000
+ },
+ {
+ "name": "10m Wide",
+ "type": "amateur",
+ "start": 29000000,
+ "end": 29100000
+ },
+ {
+ "name": "10m FM Simplex",
+ "type": "amateur",
+ "start": 29100000,
+ "end": 29200000
+ },
+ {
+ "name": "10m Wide Digi",
+ "type": "amateur",
+ "start": 29200000,
+ "end": 29300000
+ },
+ {
+ "name": "10m Sat",
+ "type": "amateur",
+ "start": 29300000,
+ "end": 29510000
+ },
+ {
+ "name": "10m Guard Band",
+ "type": "amateur",
+ "start": 29510000,
+ "end": 29520000
+ },
+ {
+ "name": "10m FM Repeater IN",
+ "type": "amateur",
+ "start": 29520000,
+ "end": 29590000
+ },
+ {
+ "name": "10m FM Call",
+ "type": "amateur",
+ "start": 29590000,
+ "end": 29610000
+ },
+ {
+ "name": "10m FM Simplex Repeater",
+ "type": "amateur",
+ "start": 29610000,
+ "end": 29620000
+ },
+ {
+ "name": "10m FM Repeater OUT",
+ "type": "amateur",
+ "start": 29620000,
+ "end": 29700000
+ },
+ {
+ "name": "Broadcast FM(OIRT)",
+ "type": "broadcast",
+ "start": 65900000,
+ "end": 74000000
+ },
+ {
+ "name": "Broadcast FM(CCIR)",
+ "type": "broadcast",
+ "start": 87500000,
+ "end": 108000000
+ },
+ {
+ "name": "Air Band VOR/ILS",
+ "type": "aviation",
+ "start": 108000000,
+ "end": 118000000
+ },
+ {
+ "name": "Air Band Voice",
+ "type": "aviation",
+ "start": 118000000,
+ "end": 137000000
+ },
+ {
+ "name": "Polar Orbiting Satellites",
+ "type": "satellite",
+ "start": 137000000,
+ "end": 138000000
+ },
+ {
+ "name": "2m CW",
+ "type": "amateur",
+ "start": 144035000,
+ "end": 144110000
+ },
+ {
+ "name": "2m CW+Digi",
+ "type": "amateur",
+ "start": 144110000,
+ "end": 144180000
+ },
+ {
+ "name": "2m CW+SSB",
+ "type": "amateur",
+ "start": 144180000,
+ "end": 144360000
+ },
+ {
+ "name": "2m CW+SSB+Digi",
+ "type": "amateur",
+ "start": 144360000,
+ "end": 144400000
+ },
+ {
+ "name": "2m Beacons (CW+Digi)",
+ "type": "amateur",
+ "start": 144400000,
+ "end": 144490000
+ },
+ {
+ "name": "2m Wide Digi",
+ "type": "amateur",
+ "start": 144500000,
+ "end": 144794000
+ },
+ {
+ "name": "2m Digi",
+ "type": "amateur",
+ "start": 144794000,
+ "end": 144990000
+ },
+ {
+ "name": "2m FM Repeater IN",
+ "type": "amateur",
+ "start": 144990000,
+ "end": 145194000
+ },
+ {
+ "name": "2m FM Sat",
+ "type": "amateur",
+ "start": 145194000,
+ "end": 145206000
+ },
+ {
+ "name": "2m FM",
+ "type": "amateur",
+ "start": 145206000,
+ "end": 145594000
+ },
+ {
+ "name": "2m FM Repeater OUT",
+ "type": "amateur",
+ "start": 145594000,
+ "end": 145793500
+ },
+ {
+ "name": "2m FM Sat",
+ "type": "amateur",
+ "start": 145793500,
+ "end": 145806000
+ },
+ {
+ "name": "2m Sat",
+ "type": "amateur",
+ "start": 145806000,
+ "end": 146000000
+ },
+ {
+ "name": "Train communications",
+ "type": "aviation",
+ "start": 151775000,
+ "end": 151875000
+ },
+ {
+ "name": "Marine",
+ "type": "marine",
+ "start": 156000000,
+ "end": 162025000
+ },
+ {
+ "name": "Military Air",
+ "type": "military",
+ "start": 225000000,
+ "end": 240000000
+ },
+ {
+ "name": "Military Sat / Military Air",
+ "type": "military",
+ "start": 240000000,
+ "end": 270000000
+ },
+ {
+ "name": "Military Air",
+ "type": "military",
+ "start": 270000000,
+ "end": 380000000
+ },
+ {
+ "name": "Train communications",
+ "type": "aviation",
+ "start": 299999000,
+ "end": 300001000
+ },
+ {
+ "name": "70cm",
+ "type": "amateur",
+ "start": 430000000,
+ "end": 432025000
+ },
+ {
+ "name": "70cm CW+Digi",
+ "type": "amateur",
+ "start": 432025000,
+ "end": 432100000
+ },
+ {
+ "name": "70cm CW+SSB+Digi",
+ "type": "amateur",
+ "start": 432100000,
+ "end": 432400000
+ },
+ {
+ "name": "70cm Beacons",
+ "type": "amateur",
+ "start": 432400000,
+ "end": 432500000
+ },
+ {
+ "name": "70cm",
+ "type": "amateur",
+ "start": 432500000,
+ "end": 433000000
+ },
+ {
+ "name": "70cm FM Repeaters in",
+ "type": "amateur",
+ "start": 433000000,
+ "end": 433075000
+ },
+ {
+ "name": "LPD / 70cm FM Repeaters in",
+ "type": "amateur",
+ "start": 433075000,
+ "end": 433600000
+ },
+ {
+ "name": "LPD / 70cm",
+ "type": "amateur",
+ "start": 433600000,
+ "end": 434000000
+ },
+ {
+ "name": "LPD / 70cm CW+Digi",
+ "type": "amateur",
+ "start": 434000000,
+ "end": 434100000
+ },
+ {
+ "name": "LPD / 70cm",
+ "type": "amateur",
+ "start": 434100000,
+ "end": 434600000
+ },
+ {
+ "name": "LPD / 70cm FM Repeaters out",
+ "type": "amateur",
+ "start": 434600000,
+ "end": 434775000
+ },
+ {
+ "name": "70cm FM Repeaters out",
+ "type": "amateur",
+ "start": 434775000,
+ "end": 435000000
+ },
+ {
+ "name": "70cm SAT",
+ "type": "amateur",
+ "start": 435000000,
+ "end": 440000000
+ },
+ {
+ "name": "PMR",
+ "type": "amateur",
+ "start": 446000000,
+ "end": 446100000
+ },
+ {
+ "name": "LTE-FDD-450 Uplink",
+ "type": "broadcast",
+ "start": 451000000,
+ "end": 456000000
+ },
+ {
+ "name": "LTE-FDD-450 Downlink",
+ "type": "broadcast",
+ "start": 461000000,
+ "end": 466000000
+ },
+ {
+ "name": "UHF TV",
+ "type": "broadcast",
+ "start": 470000000,
+ "end": 790000000
+ },
+ {
+ "name": "LTE-800-FDD Downlink",
+ "type": "broadcast",
+ "start": 791000000,
+ "end": 821000000
+ },
+ {
+ "name": "LTE-800-FDD Uplink",
+ "type": "broadcast",
+ "start": 832000000,
+ "end": 862000000
+ },
+ {
+ "name": "GSM-900 Uplink",
+ "type": "broadcast",
+ "start": 880000000,
+ "end": 915000000
+ },
+ {
+ "name": "GSM-900 Downlink",
+ "type": "broadcast",
+ "start": 925000000,
+ "end": 960000000
+ },
+ {
+ "name": "L-Band",
+ "type": "broadcast",
+ "start": 1000000000,
+ "end": 1089998000
+ },
+ {
+ "name": "ADS-B / L-Band",
+ "type": "broadcast",
+ "start": 1089998000,
+ "end": 1090002000
+ },
+ {
+ "name": "L-Band",
+ "type": "broadcast",
+ "start": 1090002000,
+ "end": 1260000000
+ },
+ {
+ "name": "23cm SAT / L-Band",
+ "type": "amateur",
+ "start": 1260000000,
+ "end": 1270000000
+ },
+ {
+ "name": "23cm / L-Band",
+ "type": "amateur",
+ "start": 1270000000,
+ "end": 1290994000
+ },
+ {
+ "name": "23cm FM Repeater IN / L-Band",
+ "type": "amateur",
+ "start": 1290994000,
+ "end": 1291481000
+ },
+ {
+ "name": "23cm / L-Band",
+ "type": "amateur",
+ "start": 1291481000,
+ "end": 1296000000
+ },
+ {
+ "name": "23cm CW+Digi / L-Band",
+ "type": "amateur",
+ "start": 1296025000,
+ "end": 1296150000
+ },
+ {
+ "name": "23cm / L-Band",
+ "type": "amateur",
+ "start": 1296150000,
+ "end": 1296800000
+ },
+ {
+ "name": "23cm Beacons (CW+Digi) / L-Band",
+ "type": "amateur",
+ "start": 1296800000,
+ "end": 1296994000
+ },
+ {
+ "name": "23cm FM Repeater OUT / L-Band",
+ "type": "amateur",
+ "start": 1296994000,
+ "end": 1297490000
+ },
+ {
+ "name": "23cm FM / L-Band",
+ "type": "amateur",
+ "start": 1297490000,
+ "end": 1298000000
+ },
+ {
+ "name": "23cm / L-Band",
+ "type": "amateur",
+ "start": 1298000000,
+ "end": 1300000000
+ },
+ {
+ "name": "L-Band",
+ "type": "broadcast",
+ "start": 1300000000,
+ "end": 1710000000
+ },
+ {
+ "name": "DCS-1800 Uplink / L-Band",
+ "type": "broadcast",
+ "start": 1710000000,
+ "end": 1785000000
+ },
+ {
+ "name": "L-Band",
+ "type": "broadcast",
+ "start": 1785000000,
+ "end": 1805000000
+ },
+ {
+ "name": "DCS-1800 Downlink / L-Band",
+ "type": "broadcast",
+ "start": 1805000000,
+ "end": 1880000000
+ },
+ {
+ "name": "DECT Phones / L-Band",
+ "type": "broadcast",
+ "start": 1880000000,
+ "end": 1900000000
+ },
+ {
+ "name": "L-Band",
+ "type": "broadcast",
+ "start": 1900000000,
+ "end": 1920000000
+ },
+ {
+ "name": "UMTS-FDD Uplink / L-Band",
+ "type": "broadcast",
+ "start": 1920000000,
+ "end": 1980000000
+ },
+ {
+ "name": "L-Band",
+ "type": "broadcast",
+ "start": 1980000000,
+ "end": 2000000000
+ },
+ {
+ "name": "S-Band",
+ "type": "broadcast",
+ "start": 2000000000,
+ "end": 2010000000
+ },
+ {
+ "name": "UMTS-TDD / S-Band",
+ "type": "broadcast",
+ "start": 2010000000,
+ "end": 2025000000
+ },
+ {
+ "name": "S-Band",
+ "type": "broadcast",
+ "start": 2025000000,
+ "end": 2110000000
+ },
+ {
+ "name": "UMTS-FDD Downlink / S-Band",
+ "type": "broadcast",
+ "start": 2110000000,
+ "end": 2170000000
+ },
+ {
+ "name": "S-Band",
+ "type": "broadcast",
+ "start": 2170000000,
+ "end": 2320000000
+ },
+ {
+ "name": "13cm EME / S-Band",
+ "type": "amateur",
+ "start": 2320000000,
+ "end": 2320150000
+ },
+ {
+ "name": "S-Band",
+ "type": "broadcast",
+ "start": 2320150000,
+ "end": 2400000000
+ },
+ {
+ "name": "13cm SAT / 2.4GHz WiFi / S-Band",
+ "type": "amateur",
+ "start": 2400000000,
+ "end": 2450000000
+ },
+ {
+ "name": "2.4GHz WiFi / S-Band",
+ "type": "broadcast",
+ "start": 2450000000,
+ "end": 2483500000
+ },
+ {
+ "name": "S-Band",
+ "type": "broadcast",
+ "start": 2483500000,
+ "end": 2500000000
+ },
+ {
+ "name": "LTE-FDD Uplink / S-Band",
+ "type": "broadcast",
+ "start": 2500000000,
+ "end": 2570000000
+ },
+ {
+ "name": "LTE-TDD / S-Band",
+ "type": "broadcast",
+ "start": 2570000000,
+ "end": 2620000000
+ },
+ {
+ "name": "LTE-FDD Downlink / S-Band",
+ "type": "broadcast",
+ "start": 2620000000,
+ "end": 2690000000
+ },
+ {
+ "name": "S-Band",
+ "type": "broadcast",
+ "start": 2690000000,
+ "end": 4000000000
+ },
+ {
+ "name": "C-Band",
+ "type": "broadcast",
+ "start": 4000000000,
+ "end": 5150000000
+ },
+ {
+ "name": "5GHz WiFi / C-Band",
+ "type": "broadcast",
+ "start": 5150000000,
+ "end": 5350000000
+ },
+ {
+ "name": "C-Band",
+ "type": "broadcast",
+ "start": 5350000000,
+ "end": 5650000000
+ },
+ {
+ "name": "6cm CW+Digi / 5GHz WiFi / C-Band",
+ "type": "amateur",
+ "start": 5650000000,
+ "end": 5670000000
+ },
+ {
+ "name": "5GHz WiFi / C-Band",
+ "type": "broadcast",
+ "start": 5670000000,
+ "end": 5725000000
+ },
+ {
+ "name": "6cm Digi / 5GHz WiFi / C-Band",
+ "type": "amateur",
+ "start": 5725000000,
+ "end": 5760000000
+ },
+ {
+ "name": "C-Band / 5GHz WiFi",
+ "type": "broadcast",
+ "start": 5760000000,
+ "end": 5762000000
+ },
+ {
+ "name": "6cm Digi / 5GHz WiFi / C-Band",
+ "type": "amateur",
+ "start": 5762000000,
+ "end": 5790000000
+ },
+ {
+ "name": "6cm CW+Digi / 5GHz WiFi / C-Band",
+ "type": "amateur",
+ "start": 5790000000,
+ "end": 5850000000
+ },
+ {
+ "name": "C-Band",
+ "type": "broadcast",
+ "start": 5850000000,
+ "end": 5650000000
+ },
+ {
+ "name": "C-Band",
+ "type": "broadcast",
+ "start": 5850000000,
+ "end": 8000000000
+ },
+ {
+ "name": "X-Band",
+ "type": "broadcast",
+ "start": 8000000000,
+ "end": 10000000000
+ },
+ {
+ "name": "3cm CW+Digi / X-Band",
+ "type": "amateur",
+ "start": 10000000000,
+ "end": 10150000000
+ },
+ {
+ "name": "3cm / X-Band",
+ "type": "amateur",
+ "start": 10150000000,
+ "end": 10250000000
+ },
+ {
+ "name": "3cm CW+Digi / X-Band",
+ "type": "amateur",
+ "start": 10250000000,
+ "end": 10350000000
+ },
+ {
+ "name": "3cm / X-Band",
+ "type": "amateur",
+ "start": 10350000000,
+ "end": 10368000000
+ },
+ {
+ "name": "3cm CW+Digi / X-Band",
+ "type": "amateur",
+ "start": 10368000000,
+ "end": 10370000000
+ },
+ {
+ "name": "3cm / X-Band",
+ "type": "amateur",
+ "start": 10370000000,
+ "end": 10450000000
+ },
+ {
+ "name": "3cm SAT / X-Band",
+ "type": "amateur",
+ "start": 10450000000,
+ "end": 10500000000
+ },
+ {
+ "name": "X-Band",
+ "type": "broadcast",
+ "start": 10500000000,
+ "end": 12000000000
+ },
+ {
+ "name": "1.2cm SAT",
+ "type": "amateur",
+ "start": 24000000000,
+ "end": 24048000000
+ },
+ {
+ "name": "1.2cm Digi",
+ "type": "amateur",
+ "start": 24048000000,
+ "end": 24050000000
+ },
+ {
+ "name": "1.2cm",
+ "type": "amateur",
+ "start": 24050000000,
+ "end": 24250000000
+ },
+ {
+ "name": "6mm",
+ "type": "amateur",
+ "start": 47002000000,
+ "end": 47200000000
+ },
+ {
+ "name": "4mm",
+ "type": "amateur",
+ "start": 76000000000,
+ "end": 78000000000
+ },
+ {
+ "name": "2.5mm",
+ "type": "amateur",
+ "start": 122251000000,
+ "end": 123000000000
+ },
+ {
+ "name": "2mm",
+ "type": "amateur",
+ "start": 134001000000,
+ "end": 141000000000
+ },
+ {
+ "name": "1mm",
+ "type": "amateur",
+ "start": 241000000000,
+ "end": 250000000000
+ }
+ ]
+}
diff --git a/SDR++.app/Contents/Resources/bandplans/united-kingdom.json b/SDR++.app/Contents/Resources/bandplans/united-kingdom.json
new file mode 100644
index 000000000..2676b71be
--- /dev/null
+++ b/SDR++.app/Contents/Resources/bandplans/united-kingdom.json
@@ -0,0 +1,279 @@
+{
+ "name": "UK",
+ "country_name": "United Kingdom",
+ "country_code": "UK",
+ "author_name": "John Donkersley",
+ "author_url": "--",
+ "bands": [
+ {
+ "name": "Long Wave",
+ "type": "broadcast",
+ "start": 148500,
+ "end": 283500
+ },
+ {
+ "name": "Air/Marine Nav Beacons",
+ "type": "aviation",
+ "start": 283500,
+ "end": 526500
+ },
+ {
+ "name": "Medium Wave (AM Broadcast)",
+ "type": "broadcast",
+ "start": 526500,
+ "end": 1606500
+ },
+ {
+ "name": "160m Ham Band",
+ "type": "amateur",
+ "start": 1810000,
+ "end": 2000000
+ },
+ {
+ "name": "120m Broadcast",
+ "type": "broadcast",
+ "start": 2300000,
+ "end": 2495000
+ },
+ {
+ "name": "90m Broadcast",
+ "type": "broadcast",
+ "start": 3200000,
+ "end": 3400000
+ },
+ {
+ "name": "80m Ham Band",
+ "type": "amateur",
+ "start": 3500000,
+ "end": 3800000
+ },
+ {
+ "name": "75m Broadcast",
+ "type": "broadcast",
+ "start": 3900000,
+ "end": 4000000
+ },
+ {
+ "name": "60m Broadcast",
+ "type": "broadcast",
+ "start": 4750000,
+ "end": 4995000
+ },
+ {
+ "name": "60m Ham Band",
+ "type": "amateur",
+ "start": 5258500,
+ "end": 5406500
+ },
+ {
+ "name": "49m Broadcast",
+ "type": "broadcast",
+ "start": 5900000,
+ "end": 6200000
+ },
+ {
+ "name": "40m Ham Band",
+ "type": "amateur",
+ "start": 7000000,
+ "end": 7200000
+ },
+ {
+ "name": "41m Broadcast",
+ "type": "broadcast",
+ "start": 7200000,
+ "end": 7450000
+ },
+ {
+ "name": "31m Broadcast",
+ "type": "broadcast",
+ "start": 9400000,
+ "end": 9900000
+ },
+ {
+ "name": "30m Ham Band",
+ "type": "amateur",
+ "start": 10100000,
+ "end": 10150000
+ },
+ {
+ "name": "25m Broadcast",
+ "type": "broadcast",
+ "start": 11600000,
+ "end": 12100000
+ },
+ {
+ "name": "22m Broadcast",
+ "type": "broadcast",
+ "start": 13570000,
+ "end": 13870000
+ },
+ {
+ "name": "20m Ham Band",
+ "type": "amateur",
+ "start": 14000000,
+ "end": 14350000
+ },
+ {
+ "name": "19m Broadcast",
+ "type": "broadcast",
+ "start": 15100000,
+ "end": 15800000
+ },
+ {
+ "name": "16m Broadcast",
+ "type": "broadcast",
+ "start": 17480000,
+ "end": 17900000
+ },
+ {
+ "name": "17m Ham Band",
+ "type": "amateur",
+ "start": 18068000,
+ "end": 18168000
+ },
+ {
+ "name": "15m Broadcast",
+ "type": "broadcast",
+ "start": 18900000,
+ "end": 19020000
+ },
+ {
+ "name": "15m Ham Band",
+ "type": "amateur",
+ "start": 21000000,
+ "end": 21450000
+ },
+ {
+ "name": "13m Broadcast",
+ "type": "broadcast",
+ "start": 21450000,
+ "end": 21850000
+ },
+ {
+ "name": "12m Ham Band",
+ "type": "amateur",
+ "start": 24890000,
+ "end": 24990000
+ },
+ {
+ "name": "11m Broadcast",
+ "type": "broadcast",
+ "start": 256700000,
+ "end": 26100000
+ },
+ {
+ "name": "CB - CEPT",
+ "type": "amateur",
+ "start": 26960000,
+ "end": 27410000
+ },
+ {
+ "name": "CB",
+ "type": "amateur",
+ "start": 27600000,
+ "end": 28000000
+ },
+ {
+ "name": "10m Ham Band",
+ "type": "amateur",
+ "start": 28000000,
+ "end": 29700000
+ },
+ {
+ "name": "6m Ham Band",
+ "type": "amateur",
+ "start": 50000000,
+ "end": 52000000
+ },
+ {
+ "name": "4m Ham Band",
+ "type": "amateur",
+ "start": 70000000,
+ "end": 70500000
+ },
+ {
+ "name": "FM Broadcast",
+ "type": "broadcast",
+ "start": 87500000,
+ "end": 108000000
+ },
+ {
+ "name": "Air Band VOR/ILS",
+ "type": "aviation",
+ "start": 108000000,
+ "end": 118000000
+ },
+ {
+ "name": "Air Band Voice",
+ "type": "aviation",
+ "start": 118000000,
+ "end": 137000000
+ },
+ {
+ "name": "Satellites",
+ "type": "satellite",
+ "start": 137000000,
+ "end": 138000000
+ },
+ {
+ "name": "2m Ham Band",
+ "type": "amateur",
+ "start": 144000000,
+ "end": 146000000
+ },
+ {
+ "name": "Marine",
+ "type": "marine",
+ "start": 156000000,
+ "end": 162025000
+ },
+ {
+ "name": "DAB Radio",
+ "type": "broadcast",
+ "start": 174000000,
+ "end": 230000000
+ },
+ {
+ "name": "Military Air",
+ "type": "military",
+ "start": 230000000,
+ "end": 400000000
+ },
+ {
+ "name": "70cm Ham Band",
+ "type": "amateur",
+ "start": 430000000,
+ "end": 440000000
+ },
+ {
+ "name": "PMR446",
+ "type": "amateur",
+ "start": 446000000,
+ "end": 446200000
+ },
+ {
+ "name": "Digital TV Broadcast",
+ "type": "broadcast",
+ "start": 470000000,
+ "end": 790000000
+ },
+ {
+ "name": "23cm Ham Band",
+ "type": "amateur",
+ "start": 1240000000,
+ "end": 1325000000
+ },
+ {
+ "name": "13cm Ham Band",
+ "type": "amateur",
+ "start": 2300000000,
+ "end": 2302000000
+ },
+ {
+ "name": "13cm Ham Band",
+ "type": "amateur",
+ "start": 2310000000,
+ "end": 2450000000
+ }
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/bandplans/usa.json b/SDR++.app/Contents/Resources/bandplans/usa.json
new file mode 100644
index 000000000..7b1a6f1ea
--- /dev/null
+++ b/SDR++.app/Contents/Resources/bandplans/usa.json
@@ -0,0 +1,327 @@
+{
+ "name": "USA",
+ "country_name": "United States of America",
+ "country_code": "US",
+ "author_name": "Joshua Kimsey",
+ "author_url": "http://jkimsey.tech",
+ "bands": [
+ {
+ "name": "Long Wave",
+ "type": "broadcast",
+ "start": 148500,
+ "end": 519000
+ },
+ {
+ "name": "Medium Wave (AM Broadcast)",
+ "type": "broadcast",
+ "start": 525000,
+ "end": 1705000
+ },
+ {
+ "name": "160m Ham Band",
+ "type": "amateur",
+ "start": 1800000,
+ "end": 2000000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 2300000,
+ "end": 2468000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 3200000,
+ "end": 3400000
+ },
+ {
+ "name": "80m Ham Band",
+ "type": "amateur",
+ "start": 3500000,
+ "end": 3950000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 3950000,
+ "end": 4000000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 4750000,
+ "end": 4995000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 5005000,
+ "end": 5060000
+ },
+ {
+ "name": "60m Ham Band",
+ "type": "amateur",
+ "start": 5351500,
+ "end": 5366500
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 5900000,
+ "end": 6200000
+ },
+ {
+ "name": "40m Ham Band",
+ "type": "amateur",
+ "start": 7000000,
+ "end": 7200000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 7200000,
+ "end": 7450000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 9400000,
+ "end": 9900000
+ },
+ {
+ "name": "30m Ham Band",
+ "type": "amateur",
+ "start": 10100000,
+ "end": 10150000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 11600000,
+ "end": 12100000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 13570000,
+ "end": 13870000
+ },
+ {
+ "name": "20m Ham Band",
+ "type": "amateur",
+ "start": 14000000,
+ "end": 14350000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 15100000,
+ "end": 15800000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 17480000,
+ "end": 17900000
+ },
+ {
+ "name": "17m Ham Band",
+ "type": "amateur",
+ "start": 18068000,
+ "end": 18168000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 18900000,
+ "end": 19020000
+ },
+ {
+ "name": "15m Ham Band",
+ "type": "amateur",
+ "start": 21000000,
+ "end": 21450000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 21450000,
+ "end": 21850000
+ },
+ {
+ "name": "12m Ham Band",
+ "type": "amateur",
+ "start": 24890000,
+ "end": 24990000
+ },
+ {
+ "name": "Shortwave Broadcast",
+ "type": "broadcast",
+ "start": 25670000,
+ "end": 26100000
+ },
+ {
+ "name": "CB",
+ "type": "amateur",
+ "start": 26960000,
+ "end": 27410000
+ },
+ {
+ "name": "10m Ham Band",
+ "type": "amateur",
+ "start": 28000000,
+ "end": 29750000
+ },
+ {
+ "name": "6m Ham Band",
+ "type": "amateur",
+ "start": 50000000,
+ "end": 54000000
+ },
+ {
+ "name": "TV Channels 2-4",
+ "type": "broadcast",
+ "start": 54000000,
+ "end": 72000000
+ },
+ {
+ "name": "TV Channels 5-6",
+ "type": "broadcast",
+ "start": 76000000,
+ "end": 88000000
+ },
+ {
+ "name": "FM Broadcast",
+ "type": "broadcast",
+ "start": 87500000,
+ "end": 108000000
+ },
+ {
+ "name": "Air Band VOR/ILS",
+ "type": "aviation",
+ "start": 108000000,
+ "end": 118000000
+ },
+ {
+ "name": "Air Band Voice",
+ "type": "aviation",
+ "start": 118000000,
+ "end": 137000000
+ },
+ {
+ "name": "Polar Orbiting Satellites",
+ "type": "satellite",
+ "start": 137000000,
+ "end": 138000000
+ },
+ {
+ "name": "2m Ham Band",
+ "type": "amateur",
+ "start": 144000000,
+ "end": 148000000
+ },
+ {
+ "name": "Marine",
+ "type": "marine",
+ "start": 156000000,
+ "end": 162025000
+ },
+ {
+ "name": "NOAA Weather Radio",
+ "type": "broadcast",
+ "start": 162362500,
+ "end": 162587500
+ },
+ {
+ "name": "TV Channels 7-13",
+ "type": "broadcast",
+ "start": 174000000,
+ "end": 216000000
+ },
+ {
+ "name": "1.25m Ham Band",
+ "type": "amateur",
+ "start": 222000000,
+ "end": 225000000
+ },
+ {
+ "name": "Military Air",
+ "type": "military",
+ "start": 225000000,
+ "end": 380000000
+ },
+ {
+ "name": "Military Sat",
+ "type": "military",
+ "start": 240000000,
+ "end": 270000000
+ },
+ {
+ "name": "70cm Ham Band",
+ "type": "amateur",
+ "start": 420000000,
+ "end": 450000000
+ },
+ {
+ "name": "PMR446",
+ "type": "amateur",
+ "start": 446000000,
+ "end": 446200000
+ },
+ {
+ "name": "FRS",
+ "type": "amateur",
+ "start": 462550000,
+ "end": 462725000
+ },
+ {
+ "name": "FRS - GMRS",
+ "type": "amateur",
+ "start": 467550000,
+ "end": 467725000
+ },
+ {
+ "name": "TV Channels 14-20",
+ "type": "broadcast",
+ "start": 470000000,
+ "end": 512000000
+ },
+ {
+ "name": "TV Channels 21-36",
+ "type": "broadcast",
+ "start": 512000000,
+ "end": 608000000
+ },
+ {
+ "name": "TV Broadcasting",
+ "type": "broadcast",
+ "start": 614000000,
+ "end": 698000000
+ },
+ {
+ "name": "33cm Ham Band",
+ "type": "amateur",
+ "start": 902000000,
+ "end": 928000000
+ },
+ {
+ "name": "23cm Ham Band",
+ "type": "amateur",
+ "start": 1240000000,
+ "end": 1300000000
+ },
+ {
+ "name": "13cm Ham Band",
+ "type": "amateur",
+ "start": 2300000000,
+ "end": 2310000000
+ },
+ {
+ "name": "13cm Ham Band",
+ "type": "amateur",
+ "start": 2390000000,
+ "end": 2450000000
+ }
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/colormaps/classic.json b/SDR++.app/Contents/Resources/colormaps/classic.json
new file mode 100644
index 000000000..b24c45919
--- /dev/null
+++ b/SDR++.app/Contents/Resources/colormaps/classic.json
@@ -0,0 +1,21 @@
+{
+ "name": "Classic",
+ "author": "Youssef Touil",
+ "map": [
+ "#000020",
+ "#000030",
+ "#000050",
+ "#000091",
+ "#1E90FF",
+ "#FFFFFF",
+ "#FFFF00",
+ "#FE6D16",
+ "#FE6D16",
+ "#FF0000",
+ "#FF0000",
+ "#C60000",
+ "#9F0000",
+ "#750000",
+ "#4A0000"
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/colormaps/classic_green.json b/SDR++.app/Contents/Resources/colormaps/classic_green.json
new file mode 100644
index 000000000..3a29b5bab
--- /dev/null
+++ b/SDR++.app/Contents/Resources/colormaps/classic_green.json
@@ -0,0 +1,19 @@
+{
+ "name": "Classic Green",
+ "author": "Paul (PD0SWL)",
+ "map": [
+ "#000000",
+ "#000030",
+ "#002851",
+ "#004993",
+ "#009BE6",
+ "#80FF80",
+ "#80FF80",
+ "#FFA042",
+ "#FF0000",
+ "#C60000",
+ "#9F0000",
+ "#750000",
+ "#4A0000"
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/colormaps/electric.json b/SDR++.app/Contents/Resources/colormaps/electric.json
new file mode 100644
index 000000000..d7e38b501
--- /dev/null
+++ b/SDR++.app/Contents/Resources/colormaps/electric.json
@@ -0,0 +1,10 @@
+{
+ "name": "Electric",
+ "author": "Ryzerth",
+ "map": [
+ "#000000",
+ "#0000FF",
+ "#00FFFF",
+ "#FFFFFF"
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/colormaps/gqrx.json b/SDR++.app/Contents/Resources/colormaps/gqrx.json
new file mode 100644
index 000000000..4fd21a546
--- /dev/null
+++ b/SDR++.app/Contents/Resources/colormaps/gqrx.json
@@ -0,0 +1,262 @@
+{
+ "name": "GQRX",
+ "author": "csete",
+ "map": [
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000000",
+ "#000002",
+ "#000005",
+ "#000008",
+ "#00000b",
+ "#00000e",
+ "#000010",
+ "#000013",
+ "#000016",
+ "#000019",
+ "#00001c",
+ "#00001e",
+ "#000021",
+ "#000024",
+ "#000027",
+ "#00002a",
+ "#00002c",
+ "#00002f",
+ "#000032",
+ "#000035",
+ "#000038",
+ "#00003a",
+ "#00003d",
+ "#000040",
+ "#000043",
+ "#000046",
+ "#000048",
+ "#00004b",
+ "#00004e",
+ "#000051",
+ "#000054",
+ "#000056",
+ "#000059",
+ "#00005c",
+ "#00005f",
+ "#000062",
+ "#000064",
+ "#000067",
+ "#00006a",
+ "#00006d",
+ "#000070",
+ "#000072",
+ "#000075",
+ "#000078",
+ "#00007b",
+ "#00007e",
+ "#000080",
+ "#000083",
+ "#000086",
+ "#000089",
+ "#00008c",
+ "#02048f",
+ "#040893",
+ "#060c97",
+ "#08109b",
+ "#0a149f",
+ "#0c19a3",
+ "#0e1da6",
+ "#1021aa",
+ "#1225ae",
+ "#1429b2",
+ "#162db6",
+ "#1832ba",
+ "#1a36bd",
+ "#1c3ac1",
+ "#1e3ec5",
+ "#2042c9",
+ "#2246cd",
+ "#244bd1",
+ "#264fd4",
+ "#2853d8",
+ "#2a57dc",
+ "#2c5be0",
+ "#2e5fe4",
+ "#3064e8",
+ "#3268eb",
+ "#346cef",
+ "#3670f3",
+ "#3874f7",
+ "#3a78fb",
+ "#3c7dff",
+ "#3f7ffa",
+ "#4382f5",
+ "#4784f0",
+ "#4b87eb",
+ "#4f8ae6",
+ "#538ce1",
+ "#578fdc",
+ "#5b91d7",
+ "#5f94d2",
+ "#6397cc",
+ "#6699c7",
+ "#6a9cc2",
+ "#6e9ebd",
+ "#72a1b8",
+ "#76a4b3",
+ "#7aa6ae",
+ "#7ea9a9",
+ "#82aba4",
+ "#86ae9f",
+ "#8ab199",
+ "#8db394",
+ "#91b68f",
+ "#95b88a",
+ "#99bb85",
+ "#9dbe80",
+ "#a1c07b",
+ "#a5c376",
+ "#a9c571",
+ "#adc86c",
+ "#b1cb66",
+ "#b4cd61",
+ "#b8d05c",
+ "#bcd257",
+ "#c0d552",
+ "#c4d84d",
+ "#c8da48",
+ "#ccdd43",
+ "#d0df3e",
+ "#d4e239",
+ "#d8e533",
+ "#dbe72e",
+ "#dfea29",
+ "#e3ec24",
+ "#e7ef1f",
+ "#ebf21a",
+ "#eff415",
+ "#f3f710",
+ "#f7f90b",
+ "#fbfc06",
+ "#ffff00",
+ "#fffd00",
+ "#fffa00",
+ "#fff800",
+ "#fff500",
+ "#fff300",
+ "#fff000",
+ "#ffee00",
+ "#ffeb00",
+ "#ffe900",
+ "#ffe600",
+ "#ffe300",
+ "#ffe100",
+ "#ffde00",
+ "#ffdc00",
+ "#ffd900",
+ "#ffd700",
+ "#ffd400",
+ "#ffd200",
+ "#ffcf00",
+ "#ffcc00",
+ "#ffca00",
+ "#ffc700",
+ "#ffc500",
+ "#ffc200",
+ "#ffc000",
+ "#ffbd00",
+ "#ffbb00",
+ "#ffb800",
+ "#ffb600",
+ "#ffb300",
+ "#ffb000",
+ "#ffae00",
+ "#ffab00",
+ "#ffa900",
+ "#ffa600",
+ "#ffa400",
+ "#ffa100",
+ "#ff9f00",
+ "#ff9c00",
+ "#ff9900",
+ "#ff9700",
+ "#ff9400",
+ "#ff9200",
+ "#ff8f00",
+ "#ff8d00",
+ "#ff8a00",
+ "#ff8800",
+ "#ff8500",
+ "#ff8300",
+ "#ff8000",
+ "#ff7d00",
+ "#ff7b00",
+ "#ff7800",
+ "#ff7600",
+ "#ff7300",
+ "#ff7100",
+ "#ff6e00",
+ "#ff6c00",
+ "#ff6900",
+ "#ff6600",
+ "#ff6400",
+ "#ff6100",
+ "#ff5f00",
+ "#ff5c00",
+ "#ff5a00",
+ "#ff5700",
+ "#ff5500",
+ "#ff5200",
+ "#ff5000",
+ "#ff4d00",
+ "#ff4a00",
+ "#ff4800",
+ "#ff4500",
+ "#ff4300",
+ "#ff4000",
+ "#ff3e00",
+ "#ff3b00",
+ "#ff3900",
+ "#ff3600",
+ "#ff3300",
+ "#ff3100",
+ "#ff2e00",
+ "#ff2c00",
+ "#ff2900",
+ "#ff2700",
+ "#ff2400",
+ "#ff2200",
+ "#ff1f00",
+ "#ff1d00",
+ "#ff1a00",
+ "#ff1700",
+ "#ff1500",
+ "#ff1200",
+ "#ff1000",
+ "#ff0d00",
+ "#ff0b00",
+ "#ff0800",
+ "#ff0600",
+ "#ff0300",
+ "#ff0000",
+ "#ff3333",
+ "#ff6666",
+ "#ff9999",
+ "#ffcccc",
+ "#ffffff"
+ ]
+}
diff --git a/SDR++.app/Contents/Resources/colormaps/greyscale.json b/SDR++.app/Contents/Resources/colormaps/greyscale.json
new file mode 100644
index 000000000..688660523
--- /dev/null
+++ b/SDR++.app/Contents/Resources/colormaps/greyscale.json
@@ -0,0 +1,8 @@
+{
+ "name": "Grey Scale",
+ "author": "Ryzerth",
+ "map": [
+ "#000000",
+ "#FFFFFF"
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/colormaps/inferno.json b/SDR++.app/Contents/Resources/colormaps/inferno.json
new file mode 100644
index 000000000..23453a761
--- /dev/null
+++ b/SDR++.app/Contents/Resources/colormaps/inferno.json
@@ -0,0 +1,262 @@
+{
+ "name": "Inferno",
+ "author": "B.I.D.S.",
+ "map": [
+ "#000004",
+ "#010005",
+ "#010106",
+ "#010108",
+ "#02010A",
+ "#02020C",
+ "#02020E",
+ "#030210",
+ "#040312",
+ "#040314",
+ "#050417",
+ "#060419",
+ "#07051B",
+ "#08051D",
+ "#09061F",
+ "#0A0722",
+ "#0B0724",
+ "#0C0826",
+ "#0D0829",
+ "#0E092B",
+ "#10092D",
+ "#110A30",
+ "#120A32",
+ "#140B34",
+ "#150B37",
+ "#160B39",
+ "#180C3C",
+ "#190C3E",
+ "#1B0C41",
+ "#1C0C43",
+ "#1E0C45",
+ "#1F0C48",
+ "#210C4A",
+ "#230C4C",
+ "#240C4F",
+ "#260C51",
+ "#280B53",
+ "#290B55",
+ "#2B0B57",
+ "#2D0B59",
+ "#2F0A5B",
+ "#310A5C",
+ "#320A5E",
+ "#340A5F",
+ "#360961",
+ "#380962",
+ "#390963",
+ "#3B0964",
+ "#3D0965",
+ "#3E0966",
+ "#400A67",
+ "#420A68",
+ "#440A68",
+ "#450A69",
+ "#470B6A",
+ "#490B6A",
+ "#4A0C6B",
+ "#4C0C6B",
+ "#4D0D6C",
+ "#4F0D6C",
+ "#510E6C",
+ "#520E6D",
+ "#540F6D",
+ "#550F6D",
+ "#57106E",
+ "#59106E",
+ "#5A116E",
+ "#5C126E",
+ "#5D126E",
+ "#5F136E",
+ "#61136E",
+ "#62146E",
+ "#64156E",
+ "#65156E",
+ "#67166E",
+ "#69166E",
+ "#6A176E",
+ "#6C186E",
+ "#6D186E",
+ "#6F196E",
+ "#71196E",
+ "#721A6E",
+ "#741A6E",
+ "#751B6E",
+ "#771C6D",
+ "#781C6D",
+ "#7A1D6D",
+ "#7C1D6D",
+ "#7D1E6D",
+ "#7F1E6C",
+ "#801F6C",
+ "#82206C",
+ "#84206B",
+ "#85216B",
+ "#87216B",
+ "#88226A",
+ "#8A226A",
+ "#8C2369",
+ "#8D2369",
+ "#8F2469",
+ "#902568",
+ "#922568",
+ "#932667",
+ "#952667",
+ "#972766",
+ "#982766",
+ "#9A2865",
+ "#9B2964",
+ "#9D2964",
+ "#9F2A63",
+ "#A02A63",
+ "#A22B62",
+ "#A32C61",
+ "#A52C60",
+ "#A62D60",
+ "#A82E5F",
+ "#A92E5E",
+ "#AB2F5E",
+ "#AD305D",
+ "#AE305C",
+ "#B0315B",
+ "#B1325A",
+ "#B3325A",
+ "#B43359",
+ "#B63458",
+ "#B73557",
+ "#B93556",
+ "#BA3655",
+ "#BC3754",
+ "#BD3853",
+ "#BF3952",
+ "#C03A51",
+ "#C13A50",
+ "#C33B4F",
+ "#C43C4E",
+ "#C63D4D",
+ "#C73E4C",
+ "#C83F4B",
+ "#CA404A",
+ "#CB4149",
+ "#CC4248",
+ "#CE4347",
+ "#CF4446",
+ "#D04545",
+ "#D24644",
+ "#D34743",
+ "#D44842",
+ "#D54A41",
+ "#D74B3F",
+ "#D84C3E",
+ "#D94D3D",
+ "#DA4E3C",
+ "#DB503B",
+ "#DD513A",
+ "#DE5238",
+ "#DF5337",
+ "#E05536",
+ "#E15635",
+ "#E25734",
+ "#E35933",
+ "#E45A31",
+ "#E55C30",
+ "#E65D2F",
+ "#E75E2E",
+ "#E8602D",
+ "#E9612B",
+ "#EA632A",
+ "#EB6429",
+ "#EB6628",
+ "#EC6726",
+ "#ED6925",
+ "#EE6A24",
+ "#EF6C23",
+ "#EF6E21",
+ "#F06F20",
+ "#F1711F",
+ "#F1731D",
+ "#F2741C",
+ "#F3761B",
+ "#F37819",
+ "#F47918",
+ "#F57B17",
+ "#F57D15",
+ "#F67E14",
+ "#F68013",
+ "#F78212",
+ "#F78410",
+ "#F8850F",
+ "#F8870E",
+ "#F8890C",
+ "#F98B0B",
+ "#F98C0A",
+ "#F98E09",
+ "#FA9008",
+ "#FA9207",
+ "#FA9407",
+ "#FB9606",
+ "#FB9706",
+ "#FB9906",
+ "#FB9B06",
+ "#FB9D07",
+ "#FC9F07",
+ "#FCA108",
+ "#FCA309",
+ "#FCA50A",
+ "#FCA60C",
+ "#FCA80D",
+ "#FCAA0F",
+ "#FCAC11",
+ "#FCAE12",
+ "#FCB014",
+ "#FCB216",
+ "#FCB418",
+ "#FBB61A",
+ "#FBB81D",
+ "#FBBA1F",
+ "#FBBC21",
+ "#FBBE23",
+ "#FAC026",
+ "#FAC228",
+ "#FAC42A",
+ "#FAC62D",
+ "#F9C72F",
+ "#F9C932",
+ "#F9CB35",
+ "#F8CD37",
+ "#F8CF3A",
+ "#F7D13D",
+ "#F7D340",
+ "#F6D543",
+ "#F6D746",
+ "#F5D949",
+ "#F5DB4C",
+ "#F4DD4F",
+ "#F4DF53",
+ "#F4E156",
+ "#F3E35A",
+ "#F3E55D",
+ "#F2E661",
+ "#F2E865",
+ "#F2EA69",
+ "#F1EC6D",
+ "#F1ED71",
+ "#F1EF75",
+ "#F1F179",
+ "#F2F27D",
+ "#F2F482",
+ "#F3F586",
+ "#F3F68A",
+ "#F4F88E",
+ "#F5F992",
+ "#F6FA96",
+ "#F8FB9A",
+ "#F9FC9D",
+ "#FAFDA1",
+ "#FCFFA4"
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/colormaps/magma.json b/SDR++.app/Contents/Resources/colormaps/magma.json
new file mode 100644
index 000000000..b13c92287
--- /dev/null
+++ b/SDR++.app/Contents/Resources/colormaps/magma.json
@@ -0,0 +1,262 @@
+{
+ "name": "Magma",
+ "author": "B.I.D.S.",
+ "map": [
+ "#000004",
+ "#010005",
+ "#010106",
+ "#010108",
+ "#020109",
+ "#02020B",
+ "#02020D",
+ "#03030F",
+ "#030312",
+ "#040414",
+ "#050416",
+ "#060518",
+ "#06051A",
+ "#07061C",
+ "#08071E",
+ "#090720",
+ "#0A0822",
+ "#0B0924",
+ "#0C0926",
+ "#0D0A29",
+ "#0E0B2B",
+ "#100B2D",
+ "#110C2F",
+ "#120D31",
+ "#130D34",
+ "#140E36",
+ "#150E38",
+ "#160F3B",
+ "#180F3D",
+ "#19103F",
+ "#1A1042",
+ "#1C1044",
+ "#1D1147",
+ "#1E1149",
+ "#20114B",
+ "#21114E",
+ "#221150",
+ "#241253",
+ "#251255",
+ "#271258",
+ "#29115A",
+ "#2A115C",
+ "#2C115F",
+ "#2D1161",
+ "#2F1163",
+ "#311165",
+ "#331067",
+ "#341069",
+ "#36106B",
+ "#38106C",
+ "#390F6E",
+ "#3B0F70",
+ "#3D0F71",
+ "#3F0F72",
+ "#400F74",
+ "#420F75",
+ "#440F76",
+ "#451077",
+ "#471078",
+ "#491078",
+ "#4A1079",
+ "#4C117A",
+ "#4E117B",
+ "#4F127B",
+ "#51127C",
+ "#52137C",
+ "#54137D",
+ "#56147D",
+ "#57157E",
+ "#59157E",
+ "#5A167E",
+ "#5C167F",
+ "#5D177F",
+ "#5F187F",
+ "#601880",
+ "#621980",
+ "#641A80",
+ "#651A80",
+ "#671B80",
+ "#681C81",
+ "#6A1C81",
+ "#6B1D81",
+ "#6D1D81",
+ "#6E1E81",
+ "#701F81",
+ "#721F81",
+ "#732081",
+ "#752181",
+ "#762181",
+ "#782281",
+ "#792282",
+ "#7B2382",
+ "#7C2382",
+ "#7E2482",
+ "#802582",
+ "#812581",
+ "#832681",
+ "#842681",
+ "#862781",
+ "#882781",
+ "#892881",
+ "#8B2981",
+ "#8C2981",
+ "#8E2A81",
+ "#902A81",
+ "#912B81",
+ "#932B80",
+ "#942C80",
+ "#962C80",
+ "#982D80",
+ "#992D80",
+ "#9B2E7F",
+ "#9C2E7F",
+ "#9E2F7F",
+ "#A02F7F",
+ "#A1307E",
+ "#A3307E",
+ "#A5317E",
+ "#A6317D",
+ "#A8327D",
+ "#AA337D",
+ "#AB337C",
+ "#AD347C",
+ "#AE347B",
+ "#B0357B",
+ "#B2357B",
+ "#B3367A",
+ "#B5367A",
+ "#B73779",
+ "#B83779",
+ "#BA3878",
+ "#BC3978",
+ "#BD3977",
+ "#BF3A77",
+ "#C03A76",
+ "#C23B75",
+ "#C43C75",
+ "#C53C74",
+ "#C73D73",
+ "#C83E73",
+ "#CA3E72",
+ "#CC3F71",
+ "#CD4071",
+ "#CF4070",
+ "#D0416F",
+ "#D2426F",
+ "#D3436E",
+ "#D5446D",
+ "#D6456C",
+ "#D8456C",
+ "#D9466B",
+ "#DB476A",
+ "#DC4869",
+ "#DE4968",
+ "#DF4A68",
+ "#E04C67",
+ "#E24D66",
+ "#E34E65",
+ "#E44F64",
+ "#E55064",
+ "#E75263",
+ "#E85362",
+ "#E95462",
+ "#EA5661",
+ "#EB5760",
+ "#EC5860",
+ "#ED5A5F",
+ "#EE5B5E",
+ "#EF5D5E",
+ "#F05F5E",
+ "#F1605D",
+ "#F2625D",
+ "#F2645C",
+ "#F3655C",
+ "#F4675C",
+ "#F4695C",
+ "#F56B5C",
+ "#F66C5C",
+ "#F66E5C",
+ "#F7705C",
+ "#F7725C",
+ "#F8745C",
+ "#F8765C",
+ "#F9785D",
+ "#F9795D",
+ "#F97B5D",
+ "#FA7D5E",
+ "#FA7F5E",
+ "#FA815F",
+ "#FB835F",
+ "#FB8560",
+ "#FB8761",
+ "#FC8961",
+ "#FC8A62",
+ "#FC8C63",
+ "#FC8E64",
+ "#FC9065",
+ "#FD9266",
+ "#FD9467",
+ "#FD9668",
+ "#FD9869",
+ "#FD9A6A",
+ "#FD9B6B",
+ "#FE9D6C",
+ "#FE9F6D",
+ "#FEA16E",
+ "#FEA36F",
+ "#FEA571",
+ "#FEA772",
+ "#FEA973",
+ "#FEAA74",
+ "#FEAC76",
+ "#FEAE77",
+ "#FEB078",
+ "#FEB27A",
+ "#FEB47B",
+ "#FEB67C",
+ "#FEB77E",
+ "#FEB97F",
+ "#FEBB81",
+ "#FEBD82",
+ "#FEBF84",
+ "#FEC185",
+ "#FEC287",
+ "#FEC488",
+ "#FEC68A",
+ "#FEC88C",
+ "#FECA8D",
+ "#FECC8F",
+ "#FECD90",
+ "#FECF92",
+ "#FED194",
+ "#FED395",
+ "#FED597",
+ "#FED799",
+ "#FED89A",
+ "#FDDA9C",
+ "#FDDC9E",
+ "#FDDEA0",
+ "#FDE0A1",
+ "#FDE2A3",
+ "#FDE3A5",
+ "#FDE5A7",
+ "#FDE7A9",
+ "#FDE9AA",
+ "#FDEBAC",
+ "#FCECAE",
+ "#FCEEB0",
+ "#FCF0B2",
+ "#FCF2B4",
+ "#FCF4B6",
+ "#FCF6B8",
+ "#FCF7B9",
+ "#FCF9BB",
+ "#FCFBBD",
+ "#FCFDBF"
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/colormaps/plasma.json b/SDR++.app/Contents/Resources/colormaps/plasma.json
new file mode 100644
index 000000000..d220ec631
--- /dev/null
+++ b/SDR++.app/Contents/Resources/colormaps/plasma.json
@@ -0,0 +1,262 @@
+{
+ "name": "Plasma",
+ "author": "B.I.D.S.",
+ "map": [
+ "#0D0887",
+ "#100788",
+ "#130789",
+ "#16078A",
+ "#19068C",
+ "#1B068D",
+ "#1D068E",
+ "#20068F",
+ "#220690",
+ "#240691",
+ "#260591",
+ "#280592",
+ "#2A0593",
+ "#2C0594",
+ "#2E0595",
+ "#2F0596",
+ "#310597",
+ "#330597",
+ "#350498",
+ "#370499",
+ "#38049A",
+ "#3A049A",
+ "#3C049B",
+ "#3E049C",
+ "#3F049C",
+ "#41049D",
+ "#43039E",
+ "#44039E",
+ "#46039F",
+ "#48039F",
+ "#4903A0",
+ "#4B03A1",
+ "#4C02A1",
+ "#4E02A2",
+ "#5002A2",
+ "#5102A3",
+ "#5302A3",
+ "#5502A4",
+ "#5601A4",
+ "#5801A4",
+ "#5901A5",
+ "#5B01A5",
+ "#5C01A6",
+ "#5E01A6",
+ "#6001A6",
+ "#6100A7",
+ "#6300A7",
+ "#6400A7",
+ "#6600A7",
+ "#6700A8",
+ "#6900A8",
+ "#6A00A8",
+ "#6C00A8",
+ "#6E00A8",
+ "#6F00A8",
+ "#7100A8",
+ "#7201A8",
+ "#7401A8",
+ "#7501A8",
+ "#7701A8",
+ "#7801A8",
+ "#7A02A8",
+ "#7B02A8",
+ "#7D03A8",
+ "#7E03A8",
+ "#8004A8",
+ "#8104A7",
+ "#8305A7",
+ "#8405A7",
+ "#8606A6",
+ "#8707A6",
+ "#8808A6",
+ "#8A09A5",
+ "#8B0AA5",
+ "#8D0BA5",
+ "#8E0CA4",
+ "#8F0DA4",
+ "#910EA3",
+ "#920FA3",
+ "#9410A2",
+ "#9511A1",
+ "#9613A1",
+ "#9814A0",
+ "#99159F",
+ "#9A169F",
+ "#9C179E",
+ "#9D189D",
+ "#9E199D",
+ "#A01A9C",
+ "#A11B9B",
+ "#A21D9A",
+ "#A31E9A",
+ "#A51F99",
+ "#A62098",
+ "#A72197",
+ "#A82296",
+ "#AA2395",
+ "#AB2494",
+ "#AC2694",
+ "#AD2793",
+ "#AE2892",
+ "#B02991",
+ "#B12A90",
+ "#B22B8F",
+ "#B32C8E",
+ "#B42E8D",
+ "#B52F8C",
+ "#B6308B",
+ "#B7318A",
+ "#B83289",
+ "#BA3388",
+ "#BB3488",
+ "#BC3587",
+ "#BD3786",
+ "#BE3885",
+ "#BF3984",
+ "#C03A83",
+ "#C13B82",
+ "#C23C81",
+ "#C33D80",
+ "#C43E7F",
+ "#C5407E",
+ "#C6417D",
+ "#C7427C",
+ "#C8437B",
+ "#C9447A",
+ "#CA457A",
+ "#CB4679",
+ "#CC4778",
+ "#CC4977",
+ "#CD4A76",
+ "#CE4B75",
+ "#CF4C74",
+ "#D04D73",
+ "#D14E72",
+ "#D24F71",
+ "#D35171",
+ "#D45270",
+ "#D5536F",
+ "#D5546E",
+ "#D6556D",
+ "#D7566C",
+ "#D8576B",
+ "#D9586A",
+ "#DA5A6A",
+ "#DA5B69",
+ "#DB5C68",
+ "#DC5D67",
+ "#DD5E66",
+ "#DE5F65",
+ "#DE6164",
+ "#DF6263",
+ "#E06363",
+ "#E16462",
+ "#E26561",
+ "#E26660",
+ "#E3685F",
+ "#E4695E",
+ "#E56A5D",
+ "#E56B5D",
+ "#E66C5C",
+ "#E76E5B",
+ "#E76F5A",
+ "#E87059",
+ "#E97158",
+ "#E97257",
+ "#EA7457",
+ "#EB7556",
+ "#EB7655",
+ "#EC7754",
+ "#ED7953",
+ "#ED7A52",
+ "#EE7B51",
+ "#EF7C51",
+ "#EF7E50",
+ "#F07F4F",
+ "#F0804E",
+ "#F1814D",
+ "#F1834C",
+ "#F2844B",
+ "#F3854B",
+ "#F3874A",
+ "#F48849",
+ "#F48948",
+ "#F58B47",
+ "#F58C46",
+ "#F68D45",
+ "#F68F44",
+ "#F79044",
+ "#F79143",
+ "#F79342",
+ "#F89441",
+ "#F89540",
+ "#F9973F",
+ "#F9983E",
+ "#F99A3E",
+ "#FA9B3D",
+ "#FA9C3C",
+ "#FA9E3B",
+ "#FB9F3A",
+ "#FBA139",
+ "#FBA238",
+ "#FCA338",
+ "#FCA537",
+ "#FCA636",
+ "#FCA835",
+ "#FCA934",
+ "#FDAB33",
+ "#FDAC33",
+ "#FDAE32",
+ "#FDAF31",
+ "#FDB130",
+ "#FDB22F",
+ "#FDB42F",
+ "#FDB52E",
+ "#FEB72D",
+ "#FEB82C",
+ "#FEBA2C",
+ "#FEBB2B",
+ "#FEBD2A",
+ "#FEBE2A",
+ "#FEC029",
+ "#FDC229",
+ "#FDC328",
+ "#FDC527",
+ "#FDC627",
+ "#FDC827",
+ "#FDCA26",
+ "#FDCB26",
+ "#FCCD25",
+ "#FCCE25",
+ "#FCD025",
+ "#FCD225",
+ "#FBD324",
+ "#FBD524",
+ "#FBD724",
+ "#FAD824",
+ "#FADA24",
+ "#F9DC24",
+ "#F9DD25",
+ "#F8DF25",
+ "#F8E125",
+ "#F7E225",
+ "#F7E425",
+ "#F6E626",
+ "#F6E826",
+ "#F5E926",
+ "#F5EB27",
+ "#F4ED27",
+ "#F3EE27",
+ "#F3F027",
+ "#F2F227",
+ "#F1F426",
+ "#F1F525",
+ "#F0F724",
+ "#F0F921"
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/colormaps/turbo.json b/SDR++.app/Contents/Resources/colormaps/turbo.json
new file mode 100644
index 000000000..32a5992e2
--- /dev/null
+++ b/SDR++.app/Contents/Resources/colormaps/turbo.json
@@ -0,0 +1,262 @@
+{
+ "name": "Turbo",
+ "author": "Google AI",
+ "map": [
+ "#30123B",
+ "#321543",
+ "#33184A",
+ "#341B51",
+ "#351E58",
+ "#36215F",
+ "#372466",
+ "#38276D",
+ "#392A73",
+ "#3A2D79",
+ "#3B2F80",
+ "#3C3286",
+ "#3D358B",
+ "#3E3891",
+ "#3F3B97",
+ "#3F3E9C",
+ "#4040A2",
+ "#4143A7",
+ "#4146AC",
+ "#4249B1",
+ "#424BB5",
+ "#434EBA",
+ "#4451BF",
+ "#4454C3",
+ "#4456C7",
+ "#4559CB",
+ "#455CCF",
+ "#455ED3",
+ "#4661D6",
+ "#4664DA",
+ "#4666DD",
+ "#4669E0",
+ "#466BE3",
+ "#476EE6",
+ "#4771E9",
+ "#4773EB",
+ "#4776EE",
+ "#4778F0",
+ "#477BF2",
+ "#467DF4",
+ "#4680F6",
+ "#4682F8",
+ "#4685FA",
+ "#4687FB",
+ "#458AFC",
+ "#458CFD",
+ "#448FFE",
+ "#4391FE",
+ "#4294FF",
+ "#4196FF",
+ "#4099FF",
+ "#3E9BFE",
+ "#3D9EFE",
+ "#3BA0FD",
+ "#3AA3FC",
+ "#38A5FB",
+ "#37A8FA",
+ "#35ABF8",
+ "#33ADF7",
+ "#31AFF5",
+ "#2FB2F4",
+ "#2EB4F2",
+ "#2CB7F0",
+ "#2AB9EE",
+ "#28BCEB",
+ "#27BEE9",
+ "#25C0E7",
+ "#23C3E4",
+ "#22C5E2",
+ "#20C7DF",
+ "#1FC9DD",
+ "#1ECBDA",
+ "#1CCDD8",
+ "#1BD0D5",
+ "#1AD2D2",
+ "#1AD4D0",
+ "#19D5CD",
+ "#18D7CA",
+ "#18D9C8",
+ "#18DBC5",
+ "#18DDC2",
+ "#18DEC0",
+ "#18E0BD",
+ "#19E2BB",
+ "#19E3B9",
+ "#1AE4B6",
+ "#1CE6B4",
+ "#1DE7B2",
+ "#1FE9AF",
+ "#20EAAC",
+ "#22EBAA",
+ "#25ECA7",
+ "#27EEA4",
+ "#2AEFA1",
+ "#2CF09E",
+ "#2FF19B",
+ "#32F298",
+ "#35F394",
+ "#38F491",
+ "#3CF58E",
+ "#3FF68A",
+ "#43F787",
+ "#46F884",
+ "#4AF880",
+ "#4EF97D",
+ "#52FA7A",
+ "#55FA76",
+ "#59FB73",
+ "#5DFC6F",
+ "#61FC6C",
+ "#65FD69",
+ "#69FD66",
+ "#6DFE62",
+ "#71FE5F",
+ "#75FE5C",
+ "#79FE59",
+ "#7DFF56",
+ "#80FF53",
+ "#84FF51",
+ "#88FF4E",
+ "#8BFF4B",
+ "#8FFF49",
+ "#92FF47",
+ "#96FE44",
+ "#99FE42",
+ "#9CFE40",
+ "#9FFD3F",
+ "#A1FD3D",
+ "#A4FC3C",
+ "#A7FC3A",
+ "#A9FB39",
+ "#ACFB38",
+ "#AFFA37",
+ "#B1F936",
+ "#B4F836",
+ "#B7F735",
+ "#B9F635",
+ "#BCF534",
+ "#BEF434",
+ "#C1F334",
+ "#C3F134",
+ "#C6F034",
+ "#C8EF34",
+ "#CBED34",
+ "#CDEC34",
+ "#D0EA34",
+ "#D2E935",
+ "#D4E735",
+ "#D7E535",
+ "#D9E436",
+ "#DBE236",
+ "#DDE037",
+ "#DFDF37",
+ "#E1DD37",
+ "#E3DB38",
+ "#E5D938",
+ "#E7D739",
+ "#E9D539",
+ "#EBD339",
+ "#ECD13A",
+ "#EECF3A",
+ "#EFCD3A",
+ "#F1CB3A",
+ "#F2C93A",
+ "#F4C73A",
+ "#F5C53A",
+ "#F6C33A",
+ "#F7C13A",
+ "#F8BE39",
+ "#F9BC39",
+ "#FABA39",
+ "#FBB838",
+ "#FBB637",
+ "#FCB336",
+ "#FCB136",
+ "#FDAE35",
+ "#FDAC34",
+ "#FEA933",
+ "#FEA732",
+ "#FEA431",
+ "#FEA130",
+ "#FE9E2F",
+ "#FE9B2D",
+ "#FE992C",
+ "#FE962B",
+ "#FE932A",
+ "#FE9029",
+ "#FD8D27",
+ "#FD8A26",
+ "#FC8725",
+ "#FC8423",
+ "#FB8122",
+ "#FB7E21",
+ "#FA7B1F",
+ "#F9781E",
+ "#F9751D",
+ "#F8721C",
+ "#F76F1A",
+ "#F66C19",
+ "#F56918",
+ "#F46617",
+ "#F36315",
+ "#F26014",
+ "#F15D13",
+ "#F05B12",
+ "#EF5811",
+ "#ED5510",
+ "#EC530F",
+ "#EB500E",
+ "#EA4E0D",
+ "#E84B0C",
+ "#E7490C",
+ "#E5470B",
+ "#E4450A",
+ "#E2430A",
+ "#E14109",
+ "#DF3F08",
+ "#DD3D08",
+ "#DC3B07",
+ "#DA3907",
+ "#D83706",
+ "#D63506",
+ "#D43305",
+ "#D23105",
+ "#D02F05",
+ "#CE2D04",
+ "#CC2B04",
+ "#CA2A04",
+ "#C82803",
+ "#C52603",
+ "#C32503",
+ "#C12302",
+ "#BE2102",
+ "#BC2002",
+ "#B91E02",
+ "#B71D02",
+ "#B41B01",
+ "#B21A01",
+ "#AF1801",
+ "#AC1701",
+ "#A91601",
+ "#A71401",
+ "#A41301",
+ "#A11201",
+ "#9E1001",
+ "#9B0F01",
+ "#980E01",
+ "#950D01",
+ "#920B01",
+ "#8E0A01",
+ "#8B0902",
+ "#880802",
+ "#850702",
+ "#810602",
+ "#7E0502",
+ "#7A0403"
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/colormaps/viridis.json b/SDR++.app/Contents/Resources/colormaps/viridis.json
new file mode 100644
index 000000000..48c932d19
--- /dev/null
+++ b/SDR++.app/Contents/Resources/colormaps/viridis.json
@@ -0,0 +1,262 @@
+{
+ "name": "Viridis",
+ "author": "B.I.D.S.",
+ "map": [
+ "#440154",
+ "#440256",
+ "#450457",
+ "#450559",
+ "#46075A",
+ "#46085C",
+ "#460A5D",
+ "#460B5E",
+ "#470D60",
+ "#470E61",
+ "#471063",
+ "#471164",
+ "#471365",
+ "#481467",
+ "#481668",
+ "#481769",
+ "#48186A",
+ "#481A6C",
+ "#481B6D",
+ "#481C6E",
+ "#481D6F",
+ "#481F70",
+ "#482071",
+ "#482173",
+ "#482374",
+ "#482475",
+ "#482576",
+ "#482677",
+ "#482878",
+ "#482979",
+ "#472A7A",
+ "#472C7A",
+ "#472D7B",
+ "#472E7C",
+ "#472F7D",
+ "#46307E",
+ "#46327E",
+ "#46337F",
+ "#463480",
+ "#453581",
+ "#453781",
+ "#453882",
+ "#443983",
+ "#443A83",
+ "#443B84",
+ "#433D84",
+ "#433E85",
+ "#423F85",
+ "#424086",
+ "#424186",
+ "#414287",
+ "#414487",
+ "#404588",
+ "#404688",
+ "#3F4788",
+ "#3F4889",
+ "#3E4989",
+ "#3E4A89",
+ "#3E4C8A",
+ "#3D4D8A",
+ "#3D4E8A",
+ "#3C4F8A",
+ "#3C508B",
+ "#3B518B",
+ "#3B528B",
+ "#3A538B",
+ "#3A548C",
+ "#39558C",
+ "#39568C",
+ "#38588C",
+ "#38598C",
+ "#375A8C",
+ "#375B8D",
+ "#365C8D",
+ "#365D8D",
+ "#355E8D",
+ "#355F8D",
+ "#34608D",
+ "#34618D",
+ "#33628D",
+ "#33638D",
+ "#32648E",
+ "#32658E",
+ "#31668E",
+ "#31678E",
+ "#31688E",
+ "#30698E",
+ "#306A8E",
+ "#2F6B8E",
+ "#2F6C8E",
+ "#2E6D8E",
+ "#2E6E8E",
+ "#2E6F8E",
+ "#2D708E",
+ "#2D718E",
+ "#2C718E",
+ "#2C728E",
+ "#2C738E",
+ "#2B748E",
+ "#2B758E",
+ "#2A768E",
+ "#2A778E",
+ "#2A788E",
+ "#29798E",
+ "#297A8E",
+ "#297B8E",
+ "#287C8E",
+ "#287D8E",
+ "#277E8E",
+ "#277F8E",
+ "#27808E",
+ "#26818E",
+ "#26828E",
+ "#26828E",
+ "#25838E",
+ "#25848E",
+ "#25858E",
+ "#24868E",
+ "#24878E",
+ "#23888E",
+ "#23898E",
+ "#238A8D",
+ "#228B8D",
+ "#228C8D",
+ "#228D8D",
+ "#218E8D",
+ "#218F8D",
+ "#21908D",
+ "#21918C",
+ "#20928C",
+ "#20928C",
+ "#20938C",
+ "#1F948C",
+ "#1F958B",
+ "#1F968B",
+ "#1F978B",
+ "#1F988B",
+ "#1F998A",
+ "#1F9A8A",
+ "#1E9B8A",
+ "#1E9C89",
+ "#1E9D89",
+ "#1F9E89",
+ "#1F9F88",
+ "#1FA088",
+ "#1FA188",
+ "#1FA187",
+ "#1FA287",
+ "#20A386",
+ "#20A486",
+ "#21A585",
+ "#21A685",
+ "#22A785",
+ "#22A884",
+ "#23A983",
+ "#24AA83",
+ "#25AB82",
+ "#25AC82",
+ "#26AD81",
+ "#27AD81",
+ "#28AE80",
+ "#29AF7F",
+ "#2AB07F",
+ "#2CB17E",
+ "#2DB27D",
+ "#2EB37C",
+ "#2FB47C",
+ "#31B57B",
+ "#32B67A",
+ "#34B679",
+ "#35B779",
+ "#37B878",
+ "#38B977",
+ "#3ABA76",
+ "#3BBB75",
+ "#3DBC74",
+ "#3FBC73",
+ "#40BD72",
+ "#42BE71",
+ "#44BF70",
+ "#46C06F",
+ "#48C16E",
+ "#4AC16D",
+ "#4CC26C",
+ "#4EC36B",
+ "#50C46A",
+ "#52C569",
+ "#54C568",
+ "#56C667",
+ "#58C765",
+ "#5AC864",
+ "#5CC863",
+ "#5EC962",
+ "#60CA60",
+ "#63CB5F",
+ "#65CB5E",
+ "#67CC5C",
+ "#69CD5B",
+ "#6CCD5A",
+ "#6ECE58",
+ "#70CF57",
+ "#73D056",
+ "#75D054",
+ "#77D153",
+ "#7AD151",
+ "#7CD250",
+ "#7FD34E",
+ "#81D34D",
+ "#84D44B",
+ "#86D549",
+ "#89D548",
+ "#8BD646",
+ "#8ED645",
+ "#90D743",
+ "#93D741",
+ "#95D840",
+ "#98D83E",
+ "#9BD93C",
+ "#9DD93B",
+ "#A0DA39",
+ "#A2DA37",
+ "#A5DB36",
+ "#A8DB34",
+ "#AADC32",
+ "#ADDC30",
+ "#B0DD2F",
+ "#B2DD2D",
+ "#B5DE2B",
+ "#B8DE29",
+ "#BADE28",
+ "#BDDF26",
+ "#C0DF25",
+ "#C2DF23",
+ "#C5E021",
+ "#C8E020",
+ "#CAE11F",
+ "#CDE11D",
+ "#D0E11C",
+ "#D2E21B",
+ "#D5E21A",
+ "#D8E219",
+ "#DAE319",
+ "#DDE318",
+ "#DFE318",
+ "#E2E418",
+ "#E5E419",
+ "#E7E419",
+ "#EAE51A",
+ "#ECE51B",
+ "#EFE51C",
+ "#F1E51D",
+ "#F4E61E",
+ "#F6E620",
+ "#F8E621",
+ "#FBE723",
+ "#FDE725"
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/colormaps/websdr.json b/SDR++.app/Contents/Resources/colormaps/websdr.json
new file mode 100644
index 000000000..5c1302cb1
--- /dev/null
+++ b/SDR++.app/Contents/Resources/colormaps/websdr.json
@@ -0,0 +1,11 @@
+{
+ "name": "WebSDR",
+ "author": "Ryzerth",
+ "map": [
+ "#000000",
+ "#000050",
+ "#FF00FF",
+ "#FFFF50",
+ "#FFFFFF"
+ ]
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/fonts/Roboto-Medium.ttf b/SDR++.app/Contents/Resources/fonts/Roboto-Medium.ttf
new file mode 100644
index 000000000..39c63d746
Binary files /dev/null and b/SDR++.app/Contents/Resources/fonts/Roboto-Medium.ttf differ
diff --git a/SDR++.app/Contents/Resources/icons/center_tuning.png b/SDR++.app/Contents/Resources/icons/center_tuning.png
new file mode 100644
index 000000000..00bf8482f
Binary files /dev/null and b/SDR++.app/Contents/Resources/icons/center_tuning.png differ
diff --git a/SDR++.app/Contents/Resources/icons/menu.png b/SDR++.app/Contents/Resources/icons/menu.png
new file mode 100644
index 000000000..b830b5b50
Binary files /dev/null and b/SDR++.app/Contents/Resources/icons/menu.png differ
diff --git a/SDR++.app/Contents/Resources/icons/muted.png b/SDR++.app/Contents/Resources/icons/muted.png
new file mode 100644
index 000000000..e7a1ad553
Binary files /dev/null and b/SDR++.app/Contents/Resources/icons/muted.png differ
diff --git a/SDR++.app/Contents/Resources/icons/normal_tuning.png b/SDR++.app/Contents/Resources/icons/normal_tuning.png
new file mode 100644
index 000000000..76d171e2d
Binary files /dev/null and b/SDR++.app/Contents/Resources/icons/normal_tuning.png differ
diff --git a/SDR++.app/Contents/Resources/icons/play.png b/SDR++.app/Contents/Resources/icons/play.png
new file mode 100644
index 000000000..a5bc44df4
Binary files /dev/null and b/SDR++.app/Contents/Resources/icons/play.png differ
diff --git a/SDR++.app/Contents/Resources/icons/sdrpp.ico b/SDR++.app/Contents/Resources/icons/sdrpp.ico
new file mode 100644
index 000000000..9ef26c2ce
Binary files /dev/null and b/SDR++.app/Contents/Resources/icons/sdrpp.ico differ
diff --git a/SDR++.app/Contents/Resources/icons/sdrpp.macos.png b/SDR++.app/Contents/Resources/icons/sdrpp.macos.png
new file mode 100644
index 000000000..6142aaf74
Binary files /dev/null and b/SDR++.app/Contents/Resources/icons/sdrpp.macos.png differ
diff --git a/SDR++.app/Contents/Resources/icons/sdrpp.png b/SDR++.app/Contents/Resources/icons/sdrpp.png
new file mode 100644
index 000000000..03cf61838
Binary files /dev/null and b/SDR++.app/Contents/Resources/icons/sdrpp.png differ
diff --git a/SDR++.app/Contents/Resources/icons/stop.png b/SDR++.app/Contents/Resources/icons/stop.png
new file mode 100644
index 000000000..6fac0cbc1
Binary files /dev/null and b/SDR++.app/Contents/Resources/icons/stop.png differ
diff --git a/SDR++.app/Contents/Resources/icons/unmuted.png b/SDR++.app/Contents/Resources/icons/unmuted.png
new file mode 100644
index 000000000..64fcb987d
Binary files /dev/null and b/SDR++.app/Contents/Resources/icons/unmuted.png differ
diff --git a/SDR++.app/Contents/Resources/sdrpp.icns b/SDR++.app/Contents/Resources/sdrpp.icns
new file mode 100644
index 000000000..075ce43f5
Binary files /dev/null and b/SDR++.app/Contents/Resources/sdrpp.icns differ
diff --git a/SDR++.app/Contents/Resources/themes/army green.json b/SDR++.app/Contents/Resources/themes/army green.json
new file mode 100644
index 000000000..6a599880e
--- /dev/null
+++ b/SDR++.app/Contents/Resources/themes/army green.json
@@ -0,0 +1,59 @@
+{
+ "name": "Army Green",
+ "author": "PD0SWL",
+ "Border": "#6D6D7F7F",
+ "BorderShadow": "#00000000",
+ "Button": "#70707066",
+ "ButtonActive": "#40020066",
+ "ButtonHovered": "#70707072",
+ "CheckMark": "#3D84E0FF",
+ "ChildBg": "#FFFFFF00",
+ "DragDropTarget": "#FFFF00E5",
+ "FrameBg": "#4A4A4A89",
+ "FrameBgActive": "#40020089",
+ "FrameBgHovered": "#0F0F1089",
+ "Header": "#A0A0B24F",
+ "HeaderActive": "#A0A0B24F",
+ "HeaderHovered": "#A0A0B266",
+ "MenuBarBg": "#232323FF",
+ "ModalWindowDimBg": "#00000080",
+ "NavHighlight": "#999999FF",
+ "NavWindowingDimBg": "#CCCCCC33",
+ "NavWindowingHighlight": "#FFFFFFB2",
+ "PlotHistogram": "#BA9926FF",
+ "PlotHistogramHovered": "#FF9900FF",
+ "PlotLines": "#B1D7F2FF",
+ "PlotLinesHovered": "#FF6D59FF",
+ "PopupBg": "#141414EF",
+ "ResizeGrip": "#E8E8E83F",
+ "ResizeGripActive": "#757575F2",
+ "ResizeGripHovered": "#CECECEAA",
+ "ScrollbarBg": "#05050587",
+ "ScrollbarGrab": "#4F4F4FFF",
+ "ScrollbarGrabActive": "#828282FF",
+ "ScrollbarGrabHovered": "#686868FF",
+ "Separator": "#6D6D7F7F",
+ "SeparatorActive": "#828282FF",
+ "SeparatorHovered": "#B7B7B7C6",
+ "SliderGrab": "#3D84E0FF",
+ "SliderGrabActive": "#9d0c05FF",
+ "Tab": "#2D5993DB",
+ "TabActive": "#3268ADFF",
+ "TabHovered": "#4296F9CC",
+ "TabUnfocused": "#111A25F7",
+ "TabUnfocusedActive": "#22426CFF",
+ "TableBorderLight": "#3A3A3FFF",
+ "TableBorderStrong": "#4F4F59FF",
+ "TableHeaderBg": "#303033FF",
+ "TableRowBg": "#00000000",
+ "TableRowBgAlt": "#FFFFFF0F",
+ "Text": "#FFFFFFFF",
+ "TextDisabled": "#7F7F7FFF",
+ "TextSelectedBg": "#DDDDDD59",
+ "TitleBg": "#0A0A0AFF",
+ "TitleBgActive": "#494949FF",
+ "TitleBgCollapsed": "#00000082",
+ "WindowBg": "#0F0F0FEF",
+ "ClearColor": "#121703FF",
+ "WaterfallBackground": "#000000FF"
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/themes/dark.json b/SDR++.app/Contents/Resources/themes/dark.json
new file mode 100644
index 000000000..a69a5f3fa
--- /dev/null
+++ b/SDR++.app/Contents/Resources/themes/dark.json
@@ -0,0 +1,59 @@
+{
+ "name": "Dark",
+ "author": "Ryzerth",
+ "Border": "#6D6D7F7F",
+ "BorderShadow": "#00000000",
+ "Button": "#70707066",
+ "ButtonActive": "#70707066",
+ "ButtonHovered": "#70707072",
+ "CheckMark": "#3D84E0FF",
+ "ChildBg": "#FFFFFF00",
+ "DragDropTarget": "#FFFF00E5",
+ "FrameBg": "#33353889",
+ "FrameBgActive": "#33353889",
+ "FrameBgHovered": "#33353889",
+ "Header": "#A0A0B24F",
+ "HeaderActive": "#A0A0B24F",
+ "HeaderHovered": "#A0A0B266",
+ "MenuBarBg": "#232323FF",
+ "ModalWindowDimBg": "#00000080",
+ "NavHighlight": "#999999FF",
+ "NavWindowingDimBg": "#CCCCCC33",
+ "NavWindowingHighlight": "#FFFFFFB2",
+ "PlotHistogram": "#BA9926FF",
+ "PlotHistogramHovered": "#FF9900FF",
+ "PlotLines": "#66E5FFFF",
+ "PlotLinesHovered": "#FF6D59FF",
+ "PopupBg": "#141414EF",
+ "ResizeGrip": "#E8E8E83F",
+ "ResizeGripActive": "#757575F2",
+ "ResizeGripHovered": "#CECECEAA",
+ "ScrollbarBg": "#05050587",
+ "ScrollbarGrab": "#4F4F4FFF",
+ "ScrollbarGrabActive": "#828282FF",
+ "ScrollbarGrabHovered": "#686868FF",
+ "Separator": "#6D6D7F7F",
+ "SeparatorActive": "#828282FF",
+ "SeparatorHovered": "#B7B7B7C6",
+ "SliderGrab": "#3D84E0FF",
+ "SliderGrabActive": "#4296F9FF",
+ "Tab": "#2D5993DB",
+ "TabActive": "#3268ADFF",
+ "TabHovered": "#4296F9CC",
+ "TabUnfocused": "#111A25F7",
+ "TabUnfocusedActive": "#22426CFF",
+ "TableBorderLight": "#3A3A3FFF",
+ "TableBorderStrong": "#4F4F59FF",
+ "TableHeaderBg": "#303033FF",
+ "TableRowBg": "#00000000",
+ "TableRowBgAlt": "#FFFFFF0F",
+ "Text": "#FFFFFFFF",
+ "TextDisabled": "#7F7F7FFF",
+ "TextSelectedBg": "#DDDDDD59",
+ "TitleBg": "#0A0A0AFF",
+ "TitleBgActive": "#494949FF",
+ "TitleBgCollapsed": "#00000082",
+ "WindowBg": "#0F0F0FEF",
+ "ClearColor": "#111111FF",
+ "WaterfallBackground": "#000000FF"
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/themes/deep blue.json b/SDR++.app/Contents/Resources/themes/deep blue.json
new file mode 100644
index 000000000..cc03f7488
--- /dev/null
+++ b/SDR++.app/Contents/Resources/themes/deep blue.json
@@ -0,0 +1,59 @@
+{
+ "name": "Deep Blue",
+ "author": "PD0SWL",
+ "Border": "#6D6D7F7F",
+ "BorderShadow": "#00000000",
+ "Button": "#70707066",
+ "ButtonActive": "#40020066",
+ "ButtonHovered": "#70707072",
+ "CheckMark": "#3D84E0FF",
+ "ChildBg": "#FFFFFF00",
+ "DragDropTarget": "#FFFF00E5",
+ "FrameBg": "#4A4A4A89",
+ "FrameBgActive": "#40020089",
+ "FrameBgHovered": "#0F0F1089",
+ "Header": "#A0A0B24F",
+ "HeaderActive": "#A0A0B24F",
+ "HeaderHovered": "#A0A0B266",
+ "MenuBarBg": "#232323FF",
+ "ModalWindowDimBg": "#00000080",
+ "NavHighlight": "#999999FF",
+ "NavWindowingDimBg": "#CCCCCC33",
+ "NavWindowingHighlight": "#FFFFFFB2",
+ "PlotHistogram": "#BA9926FF",
+ "PlotHistogramHovered": "#FF9900FF",
+ "PlotLines": "#B1D7F2FF",
+ "PlotLinesHovered": "#FF6D59FF",
+ "PopupBg": "#141414EF",
+ "ResizeGrip": "#E8E8E83F",
+ "ResizeGripActive": "#757575F2",
+ "ResizeGripHovered": "#CECECEAA",
+ "ScrollbarBg": "#05050587",
+ "ScrollbarGrab": "#4F4F4FFF",
+ "ScrollbarGrabActive": "#828282FF",
+ "ScrollbarGrabHovered": "#686868FF",
+ "Separator": "#6D6D7F7F",
+ "SeparatorActive": "#828282FF",
+ "SeparatorHovered": "#B7B7B7C6",
+ "SliderGrab": "#3D84E0FF",
+ "SliderGrabActive": "#9d0c05FF",
+ "Tab": "#2D5993DB",
+ "TabActive": "#3268ADFF",
+ "TabHovered": "#4296F9CC",
+ "TabUnfocused": "#111A25F7",
+ "TabUnfocusedActive": "#22426CFF",
+ "TableBorderLight": "#3A3A3FFF",
+ "TableBorderStrong": "#4F4F59FF",
+ "TableHeaderBg": "#303033FF",
+ "TableRowBg": "#00000000",
+ "TableRowBgAlt": "#FFFFFF0F",
+ "Text": "#FFFFFFFF",
+ "TextDisabled": "#7F7F7FFF",
+ "TextSelectedBg": "#DDDDDD59",
+ "TitleBg": "#0A0A0AFF",
+ "TitleBgActive": "#494949FF",
+ "TitleBgCollapsed": "#00000082",
+ "WindowBg": "#0F0F0FEF",
+ "ClearColor": "#0C182EFF",
+ "WaterfallBackground": "#000000FF"
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/themes/grey.json b/SDR++.app/Contents/Resources/themes/grey.json
new file mode 100644
index 000000000..7e0f8819f
--- /dev/null
+++ b/SDR++.app/Contents/Resources/themes/grey.json
@@ -0,0 +1,59 @@
+{
+ "name": "Marine Grey",
+ "author": "PD0SWL",
+ "Border": "#6D6D7F7F",
+ "BorderShadow": "#00000000",
+ "Button": "#00000066",
+ "ButtonActive": "#00000066",
+ "ButtonHovered": "#4A4A4A72",
+ "CheckMark": "#3D84E0FF",
+ "ChildBg": "#FFFFFF00",
+ "DragDropTarget": "#0000FFE5",
+ "FrameBg": "#33353889",
+ "FrameBgActive": "#70707089",
+ "FrameBgHovered": "#70707089",
+ "Header": "#5E5E4C4F",
+ "HeaderActive": "#5E5E4C4F",
+ "HeaderHovered": "#70707089",
+ "MenuBarBg": "#232323FF",
+ "ModalWindowDimBg": "#33333359",
+ "NavHighlight": "#666666FF",
+ "NavWindowingDimBg": "#33333333",
+ "NavWindowingHighlight": "#000000B2",
+ "PlotHistogram": "#BA9926FF",
+ "PlotHistogramHovered": "#FF9900FF",
+ "PlotLines": "#E5E9EEFF",
+ "PlotLinesHovered": "#FF6D59FF",
+ "PopupBg": "#EAEAEAEF",
+ "ResizeGrip": "#1616163F",
+ "ResizeGripActive": "#898989F2",
+ "ResizeGripHovered": "#303030AA",
+ "ScrollbarBg": "#F9F9F987",
+ "ScrollbarGrab": "#AFAFAFFF",
+ "ScrollbarGrabActive": "#7C7C7CFF",
+ "ScrollbarGrabHovered": "#686868FF",
+ "Separator": "#91917F7F",
+ "SeparatorActive": "#7C7C7CFF",
+ "SeparatorHovered": "#474747C6",
+ "SliderGrab": "#3D84E0FF",
+ "SliderGrabActive": "#9d0c05FF",
+ "Tab": "#D1A56BDB",
+ "TabActive": "#CC9651FF",
+ "TabHovered": "#BC6805CC",
+ "TabUnfocused": "#EDE4D9F7",
+ "TabUnfocusedActive": "#DCBC92FF",
+ "TableBorderLight": "#C4C4BFFF",
+ "TableBorderStrong": "#AFAFA5FF",
+ "TableHeaderBg": "#CECECCFF",
+ "TableRowBg": "#00000000",
+ "TableRowBgAlt": "#0000000F",
+ "Text": "#000000FF",
+ "TextDisabled": "#7F7F7FFF",
+ "TextSelectedBg": "#21212159",
+ "TitleBg": "#F4F4F4FF",
+ "TitleBgActive": "#B5B5B5FF",
+ "TitleBgCollapsed": "#00000082",
+ "WindowBg": "#B6B6B6EF",
+ "ClearColor": "#9AA6BAFF",
+ "WaterfallBackground": "#4A5973FF"
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/Resources/themes/light.json b/SDR++.app/Contents/Resources/themes/light.json
new file mode 100644
index 000000000..79c17764f
--- /dev/null
+++ b/SDR++.app/Contents/Resources/themes/light.json
@@ -0,0 +1,59 @@
+{
+ "name": "Light",
+ "author": "Ryzerth",
+ "Border": "#91917F7F",
+ "BorderShadow": "#FFFFFF00",
+ "Button": "#8E8E8E66",
+ "ButtonActive": "#8E8E8E66",
+ "ButtonHovered": "#8E8E8E72",
+ "CheckMark": "#3D84E0FF",
+ "ChildBg": "#00000000",
+ "DragDropTarget": "#0000FFE5",
+ "FrameBg": "#ACA7A389",
+ "FrameBgActive": "#ACA7A389",
+ "FrameBgHovered": "#ACA7A389",
+ "Header": "#5E5E4C4F",
+ "HeaderActive": "#5E5E4C4F",
+ "HeaderHovered": "#5E5E4C66",
+ "MenuBarBg": "#DBDBDBFF",
+ "ModalWindowDimBg": "#33333359",
+ "NavHighlight": "#666666FF",
+ "NavWindowingDimBg": "#33333333",
+ "NavWindowingHighlight": "#000000B2",
+ "PlotHistogram": "#4466D8FF",
+ "PlotHistogramHovered": "#0066FFFF",
+ "PlotLines": "#0022FFFF",
+ "PlotLinesHovered": "#0091A5FF",
+ "PopupBg": "#EAEAEAEF",
+ "ResizeGrip": "#1616163F",
+ "ResizeGripActive": "#898989F2",
+ "ResizeGripHovered": "#303030AA",
+ "ScrollbarBg": "#F9F9F987",
+ "ScrollbarGrab": "#AFAFAFFF",
+ "ScrollbarGrabActive": "#7C7C7CFF",
+ "ScrollbarGrabHovered": "#969696FF",
+ "Separator": "#91917F7F",
+ "SeparatorActive": "#7C7C7CFF",
+ "SeparatorHovered": "#474747C6",
+ "SliderGrab": "#3D84E0FF",
+ "SliderGrabActive": "#4296F9FF",
+ "Tab": "#D1A56BDB",
+ "TabActive": "#CC9651FF",
+ "TabHovered": "#BC6805CC",
+ "TabUnfocused": "#EDE4D9F7",
+ "TabUnfocusedActive": "#DCBC92FF",
+ "TableBorderLight": "#C4C4BFFF",
+ "TableBorderStrong": "#AFAFA5FF",
+ "TableHeaderBg": "#CECECCFF",
+ "TableRowBg": "#FFFFFF00",
+ "TableRowBgAlt": "#0000000F",
+ "Text": "#000000FF",
+ "TextDisabled": "#7F7F7FFF",
+ "TextSelectedBg": "#21212159",
+ "TitleBg": "#F4F4F4FF",
+ "TitleBgActive": "#B5B5B5FF",
+ "TitleBgCollapsed": "#FFFFFF82",
+ "WindowBg": "#EFEFEFEF",
+ "ClearColor": "#E6E6E6FF",
+ "WaterfallBackground": "#FFFFFFFF"
+}
\ No newline at end of file
diff --git a/SDR++.app/Contents/_CodeSignature/CodeResources b/SDR++.app/Contents/_CodeSignature/CodeResources
new file mode 100644
index 000000000..65ed76874
--- /dev/null
+++ b/SDR++.app/Contents/_CodeSignature/CodeResources
@@ -0,0 +1,798 @@
+
+
+
+
+ files
+
+ Resources/bandplans/austria.json
+
+ GXvm26RO8olaN+Q//eSV/5nVcL4=
+
+ Resources/bandplans/canada.json
+
+ jGe56eTGkTDFWQ9ipQQxb7jwmWw=
+
+ Resources/bandplans/china.json
+
+ Np8L2a2PEJW7YzkqFys0b31jQgw=
+
+ Resources/bandplans/france.json
+
+ tA25RZFfHVwTKNGwyjdU5JnNhf0=
+
+ Resources/bandplans/general.json
+
+ 2bSokoyqkmXJcEzd4SqBfmXCIQM=
+
+ Resources/bandplans/germany-mobile-lte-bands.json
+
+ SfkZ+VJM+2llo3S7EjxuWvP4x4g=
+
+ Resources/bandplans/germany-mobile-networks.json
+
+ v1ZJT+1VAbT22DDktiX/TShbDdY=
+
+ Resources/bandplans/germany.json
+
+ dBCMOa+LQcxJZhCtJIJHtcd304Q=
+
+ Resources/bandplans/russia.json
+
+ QONLmDmzseRbdrICjVdn/PvuD6o=
+
+ Resources/bandplans/united-kingdom.json
+
+ igdoW3gK/n+TvMPbE8jjHHychn8=
+
+ Resources/bandplans/usa.json
+
+ i78FubPsn+g4/LxtCd/XvlijgMY=
+
+ Resources/colormaps/classic.json
+
+ dqzuNkLMjpmt7gtasFkhWYPAKRE=
+
+ Resources/colormaps/classic_green.json
+
+ WF+SIsHGcIp6sLPM5RH4W6XG5ew=
+
+ Resources/colormaps/electric.json
+
+ Osh7kQsnC+Keyst2G1EOyirpt8I=
+
+ Resources/colormaps/gqrx.json
+
+ EJ4bmm47/3g6q+XtJ86QnRnZPAs=
+
+ Resources/colormaps/greyscale.json
+
+ jt811rivnApkIA3Hg72EMPJhm9k=
+
+ Resources/colormaps/inferno.json
+
+ jFQ0lWr5FStKK53pG36X7yPJuog=
+
+ Resources/colormaps/magma.json
+
+ VP9BaMiNc2RzwgHQ/+Pe4KLxvLk=
+
+ Resources/colormaps/plasma.json
+
+ Eqow1u0v3aO2r6nzu9qDIqhOD+M=
+
+ Resources/colormaps/turbo.json
+
+ Dvy8jmNnQbmbu2Dit8aOVFtVav4=
+
+ Resources/colormaps/viridis.json
+
+ y6462toiHzWZ2K3lmP6Dlo1w/KY=
+
+ Resources/colormaps/websdr.json
+
+ 7Ogq6pKTgjTHy03u9JriMfCITYY=
+
+ Resources/fonts/Roboto-Medium.ttf
+
+ CLq1satHjoryJ5thPToyY2uFzGU=
+
+ Resources/icons/center_tuning.png
+
+ +J8OorqBrDgMncOzuJkcv9h87vI=
+
+ Resources/icons/menu.png
+
+ tGuhcNzCwbrsq4DMFf8PFRmFQlY=
+
+ Resources/icons/muted.png
+
+ 7FUMIzyHLZq1p5bjmvd0lIP3Ecc=
+
+ Resources/icons/normal_tuning.png
+
+ 1jKkDwrV3/Vq3XjKF6vyTCn8z/w=
+
+ Resources/icons/play.png
+
+ pYEuxqmml45N51moDqj8r6GPoh4=
+
+ Resources/icons/sdrpp.ico
+
+ pU0GaaDGy6m1SUBTAqCg00Pdv3Y=
+
+ Resources/icons/sdrpp.macos.png
+
+ d67A/Jc7oAZ8Y+RQ2z3eU+A3VFk=
+
+ Resources/icons/sdrpp.png
+
+ XmuYtcTbwQc/BzFhcEo8ECu9qh8=
+
+ Resources/icons/stop.png
+
+ jy3G3ozdRmeEvc40YSGJBgIqTSc=
+
+ Resources/icons/unmuted.png
+
+ e7XD0f0DU5lEe+QoZrg45roTXFc=
+
+ Resources/sdrpp.icns
+
+ UyBOVztxWIpjG/3IKHy5roLd5WA=
+
+ Resources/themes/army green.json
+
+ pFafEjfI0xIr1e4H8HPyzxqXK9U=
+
+ Resources/themes/dark.json
+
+ KJMXmwHE734vXF7grGvHek3c6VA=
+
+ Resources/themes/deep blue.json
+
+ q/k/KmdufmenP2DyE4fWLZK3lmg=
+
+ Resources/themes/grey.json
+
+ Q7w03moRcxXY3KBYOMuPf/CoWfE=
+
+ Resources/themes/light.json
+
+ YbgDvmGpZRGf1gCJIP/5Wrf9pt4=
+
+
+ files2
+
+ Frameworks/libairspy.0.dylib
+
+ cdhash
+
+ Qzp2mBl5NHjO4IB+SHT/YgB2k4w=
+
+ requirement
+ cdhash H"433a769819793478cee0807e4874ff620076938c"
+
+ Frameworks/libairspyhf.0.dylib
+
+ cdhash
+
+ NJAMoPFD8AU+YifMDNxe2OWJluo=
+
+ requirement
+ cdhash H"34900ca0f143f0053e6227cc0cdc5ed8e58996ea"
+
+ Frameworks/libcodec2.1.0.dylib
+
+ cdhash
+
+ q/BZ+r+YlZCi2loO0TwfnntDjx4=
+
+ requirement
+ cdhash H"abf059fabf989590a2da5a0ed13c1f9e7b438f1e"
+
+ Frameworks/libfftw3f.3.dylib
+
+ cdhash
+
+ 861vdhxKhNwsDa56tJjkzA13puk=
+
+ requirement
+ cdhash H"f3ad6f761c4a84dc2c0dae7ab498e4cc0d77a6e9"
+
+ Frameworks/libgcc_s.1.1.dylib
+
+ cdhash
+
+ VNds8FXI0odqwT9QmYqVzeODnho=
+
+ requirement
+ cdhash H"54d76cf055c8d2876ac13f50998a95cde3839e1a"
+
+ Frameworks/libglfw.3.dylib
+
+ cdhash
+
+ HAGqpwOzyR7A5Tz4fEEkChaIHjM=
+
+ requirement
+ cdhash H"1c01aaa703b3c91ec0e53cf87c41240a16881e33"
+
+ Frameworks/libhackrf.0.dylib
+
+ cdhash
+
+ /UYqqKLqaMNgs0JELPxCHt0pnjo=
+
+ requirement
+ cdhash H"fd462aa8a2ea68c360b342442cfc421edd299e3a"
+
+ Frameworks/liborc-0.4.0.dylib
+
+ cdhash
+
+ Z+2yEbKs2EJC4xHTo4X30q5khgg=
+
+ requirement
+ cdhash H"67edb211b2acd84242e311d3a385f7d2ae648608"
+
+ Frameworks/libportaudio.2.dylib
+
+ cdhash
+
+ NMKh+JSKUjH0IMzxoRyzYrJW0SY=
+
+ requirement
+ cdhash H"34c2a1f8948a5231f420ccf1a11cb362b256d126"
+
+ Frameworks/librtlsdr.0.dylib
+
+ cdhash
+
+ onW6hQ3uMkfu34DR/qP12CbZfVM=
+
+ requirement
+ cdhash H"a275ba850dee3247eedf80d1fea3f5d826d97d53"
+
+ Frameworks/libsdrpp_core.dylib
+
+ cdhash
+
+ YK9t/tRbheY/VtFvHKwIRxVtWLA=
+
+ requirement
+ cdhash H"60af6dfed45b85e63f56d16f1cac0847156d58b0"
+
+ Frameworks/libusb-1.0.0.dylib
+
+ cdhash
+
+ aHk3TX+c6cyzEUkhtZv9tlP8ASc=
+
+ requirement
+ cdhash H"6879374d7f9ce9ccb3114921b59bfdb653fc0127"
+
+ Frameworks/libvolk.2.5.dylib
+
+ cdhash
+
+ OW/uud7P/6ZeizjgvvAGqhizjVM=
+
+ requirement
+ cdhash H"396feeb9decfffa65e8b38e0bef006aa18b38d53"
+
+ Frameworks/libzstd.1.dylib
+
+ cdhash
+
+ f0tdbC615VxzxdYLtReCnM0kjQk=
+
+ requirement
+ cdhash H"7f4b5d6c2eb5e55c73c5d60bb517829ccd248d09"
+
+ Plugins/airspy_source.dylib
+
+ hash2
+
+ dqiLfNs2+ok+5RnGX18EJOEc5UnqUeLxrkZWjFR4DGw=
+
+
+ Plugins/airspyhf_source.dylib
+
+ hash2
+
+ i0wJ3fooE3tdkyRqNPTKkUfYUI68aNpQ3RzFrIlMTiE=
+
+
+ Plugins/discord_integration.dylib
+
+ hash2
+
+ UcoOq0STJ7IzBVtwWUxJkoH8PVWO0DvtdhsO0J1TKeE=
+
+
+ Plugins/file_source.dylib
+
+ hash2
+
+ mExgkC7XbBWwaJokawT+fQ/CQjslDcBj16UHqDG/frc=
+
+
+ Plugins/frequency_manager.dylib
+
+ hash2
+
+ NpOl18oPTz7lsJddIBPmtuHYzArJfq7xMxoORKnM/1E=
+
+
+ Plugins/hackrf_source.dylib
+
+ hash2
+
+ 8k/huuDAngGH+Nyovh5s7HuDerEqtzKPJgU++ZxvcXA=
+
+
+ Plugins/m17_decoder.dylib
+
+ hash2
+
+ RBaxVDj1gegZajsbEydYgOxSvbxOwVyCTrn3fnknAFk=
+
+
+ Plugins/meteor_demodulator.dylib
+
+ hash2
+
+ 9GInaWxN3uSBmDDzqoJtKhpjm3JiEki1k6iNFOrfd38=
+
+
+ Plugins/network_sink.dylib
+
+ hash2
+
+ UvK8w9qbRe63t7/7bQTZgLHeXmEgAwGEHFgf7jy1ayM=
+
+
+ Plugins/new_portaudio_sink.dylib
+
+ hash2
+
+ wUFZ5IpSUpDlQGRO8ytxuy3wAvdqaQ3/aAvN6/yUa+k=
+
+
+ Plugins/radio.dylib
+
+ hash2
+
+ oCghO3HH6mhQUGkJQ/AH8ge6YUE8y/HjYdDtnnQWtdE=
+
+
+ Plugins/recorder.dylib
+
+ hash2
+
+ aDy2UziaIemxfmNrWhfcs6HTmCV77MQTJ5UUIZo2CKg=
+
+
+ Plugins/rfspace_source.dylib
+
+ hash2
+
+ V1KpEUKtLKV2Y01EZDuIE5GTavppmxBVWcWYp5PG6z0=
+
+
+ Plugins/rigctl_server.dylib
+
+ hash2
+
+ TAa80vOfOBvE5VBWvUc5ctY/UEli+Y8aL8Mg4Q7SQBc=
+
+
+ Plugins/rtl_sdr_source.dylib
+
+ hash2
+
+ CM6KPLMWcTqz8IYn0zz1XQJKZDSK1uSqBPmWPKIONks=
+
+
+ Plugins/rtl_tcp_source.dylib
+
+ hash2
+
+ NeXENkkGNJlZDjynLbplYO6Z3lv1I1TUc8ESNKMioso=
+
+
+ Plugins/sdrpp_server_source.dylib
+
+ hash2
+
+ gCnNjtI210caxlZxdo8tRUh//ts7yQpRkwfidUAq6Bs=
+
+
+ Plugins/spyserver_source.dylib
+
+ hash2
+
+ mKf0009LWVrTPNXN+U+bxaCVthrNc8Qo9W8cuekZv6Y=
+
+
+ Resources/bandplans/austria.json
+
+ hash2
+
+ A+sIhWhoXgo1DyG43JOECsyNatABulVMXyl2JzJrUgU=
+
+
+ Resources/bandplans/canada.json
+
+ hash2
+
+ sz+TrY8tuzfpG4kEE+bxVhIqhJsh5xFZVUTElVjEXYY=
+
+
+ Resources/bandplans/china.json
+
+ hash2
+
+ Fg2MWA1FrlVRi2jTYwEup56rhz22TkJ6Z9VJrxQLnh4=
+
+
+ Resources/bandplans/france.json
+
+ hash2
+
+ aIJE90R7+qt6NaRApPfmh3z1j+Kkmo3L14hUDZ+D7gs=
+
+
+ Resources/bandplans/general.json
+
+ hash2
+
+ eCAkS41xvdES+1p1xGAU8i67KzD2GVFH+D4ikhboFik=
+
+
+ Resources/bandplans/germany-mobile-lte-bands.json
+
+ hash2
+
+ vK9y2pU8D4tiHvheLA6cv60qyRpdPOz2q1fO9YHsqLU=
+
+
+ Resources/bandplans/germany-mobile-networks.json
+
+ hash2
+
+ 2uBAJGUn+/FbaqXZL25p+CjLspkDz/gjySYrxObFoLM=
+
+
+ Resources/bandplans/germany.json
+
+ hash2
+
+ C3ln4h+ud7YIEUSaYGlcWmv4rLxarkozbph/CHsNWo8=
+
+
+ Resources/bandplans/russia.json
+
+ hash2
+
+ ffBvk0ije7rAcLQi51e3XtXXC2BVx+R1VPQYsMlwUD8=
+
+
+ Resources/bandplans/united-kingdom.json
+
+ hash2
+
+ Lkue1PVI1tmcpJ+MJgM1uAc/W3eCCwrMVMqVHkyZrBM=
+
+
+ Resources/bandplans/usa.json
+
+ hash2
+
+ 5ENek++CgD2dk5OgE6ZbR/uC6ycjrYEdcawZY2HRlq4=
+
+
+ Resources/colormaps/classic.json
+
+ hash2
+
+ U/0pKDM3YpoPngJtKv1E5ssMHkCw93NucuaLLBP/TGg=
+
+
+ Resources/colormaps/classic_green.json
+
+ hash2
+
+ m4i6zg6fDyUHTivdEKdu9Han2ozuZhVZaXN7kJckTjo=
+
+
+ Resources/colormaps/electric.json
+
+ hash2
+
+ UTiMCe3FL+Bizyh74KRlC2L/D25oA07K26jtN15Ok/4=
+
+
+ Resources/colormaps/gqrx.json
+
+ hash2
+
+ 6xsb/fGq2HDxkiNE6YeURdR2Lv29iKKisKFHI9R+OhI=
+
+
+ Resources/colormaps/greyscale.json
+
+ hash2
+
+ 4ercv+bhD3GJRdTcUaziDelK4oONYzDrzTX5dcoE250=
+
+
+ Resources/colormaps/inferno.json
+
+ hash2
+
+ xNuMOHzB/IwRMOh5EerLM0YZIM3M7g+1E8a2Y4iaWnw=
+
+
+ Resources/colormaps/magma.json
+
+ hash2
+
+ LzROQxeL6yQNd/xO7nIiF+kmffQBd0zcoCmDPyz9mT0=
+
+
+ Resources/colormaps/plasma.json
+
+ hash2
+
+ 5LrIWrvOUlayrTb/wG0tdxY4bz6Q6U4YuPCzk9978Zk=
+
+
+ Resources/colormaps/turbo.json
+
+ hash2
+
+ 4Nyi/UaxdQGhH6CO7u69KN29Bqme3sgajhhx3YQ6d7U=
+
+
+ Resources/colormaps/viridis.json
+
+ hash2
+
+ 5ekhwMNFxco6WAmVDPTFj5RQqul9h9Xar6Pm/vQ4PVk=
+
+
+ Resources/colormaps/websdr.json
+
+ hash2
+
+ JWlNCHa3FQt1MLSTIg8sZAFZxqFsrOfudtgpAF3TViA=
+
+
+ Resources/fonts/Roboto-Medium.ttf
+
+ hash2
+
+ hVkTLImtUdiiulsXGIekSnupN3biBfVTVz3iKOZLRfg=
+
+
+ Resources/icons/center_tuning.png
+
+ hash2
+
+ i4zRGABVgZM8MRfRcpo1/dQw/xqLk9lymQ6f2jF3Y5s=
+
+
+ Resources/icons/menu.png
+
+ hash2
+
+ SQCGP6V78usaOvxeSuXbl/6rms2iC/K0uqUonjuKw8I=
+
+
+ Resources/icons/muted.png
+
+ hash2
+
+ xpRbXH3cs6A2/d0VwVYhdWVET2HWGSyW6Tm49qG6KHo=
+
+
+ Resources/icons/normal_tuning.png
+
+ hash2
+
+ 6XpAS7WmzZaVwhhp1Omoc338/zouP6YI6meosNI+Jks=
+
+
+ Resources/icons/play.png
+
+ hash2
+
+ mqy+E/RlCfHA5oYO8SPjBRN7xGy4/uvEMLc9aSzP0r0=
+
+
+ Resources/icons/sdrpp.ico
+
+ hash2
+
+ HFg2MF0LxnjXpsEXKaxgs1+FXOfpRddRArzGfKOGdIE=
+
+
+ Resources/icons/sdrpp.macos.png
+
+ hash2
+
+ DcIkDAAIGgl91TIxPh/0VHUItYEyn9QZ/3djpbpcdOM=
+
+
+ Resources/icons/sdrpp.png
+
+ hash2
+
+ sYy3SJwRhy9E1LvC+sBT/QbED0gXRD/o5CJjXN3oYHs=
+
+
+ Resources/icons/stop.png
+
+ hash2
+
+ ovxqOIrGKk4XdzGgyYL5vM8DjBtpvnTDCsk0aMxGwco=
+
+
+ Resources/icons/unmuted.png
+
+ hash2
+
+ kCayEVCOwNM5Gaeyb1TiRua+P9zoMB3qH2tKFbNPuRg=
+
+
+ Resources/sdrpp.icns
+
+ hash2
+
+ PGOT84Y0+0+bEDcEA4gK0WXTuQJLxh+0z1/NwC9Lnj4=
+
+
+ Resources/themes/army green.json
+
+ hash2
+
+ oEvg5Z8rEuZfZjtuuluVSs/FkJbevbJbsSw8Ce/15/o=
+
+
+ Resources/themes/dark.json
+
+ hash2
+
+ qlxgA7mM64D2mqgJ5trq+r7jMLxrFdCXPmsEiyzZKVg=
+
+
+ Resources/themes/deep blue.json
+
+ hash2
+
+ jBOTAliAYaxSNA7KuXmD56r7XGKVyrVUViN9cCjroKA=
+
+
+ Resources/themes/grey.json
+
+ hash2
+
+ aW7PbndRrPcf+dxAS//DyRjPSh6oQL7r22MSLj4QtS4=
+
+
+ Resources/themes/light.json
+
+ hash2
+
+ v2F2tpjsEH4emJ/D0tEa+ffpohyjfU1sYb2y6x6HKnY=
+
+
+
+ rules
+
+ ^Resources/
+
+ ^Resources/.*\.lproj/
+
+ optional
+
+ weight
+ 1000
+
+ ^Resources/.*\.lproj/locversion.plist$
+
+ omit
+
+ weight
+ 1100
+
+ ^Resources/Base\.lproj/
+
+ weight
+ 1010
+
+ ^version.plist$
+
+
+ rules2
+
+ .*\.dSYM($|/)
+
+ weight
+ 11
+
+ ^(.*/)?\.DS_Store$
+
+ omit
+
+ weight
+ 2000
+
+ ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/
+
+ nested
+
+ weight
+ 10
+
+ ^.*
+
+ ^Info\.plist$
+
+ omit
+
+ weight
+ 20
+
+ ^PkgInfo$
+
+ omit
+
+ weight
+ 20
+
+ ^Resources/
+
+ weight
+ 20
+
+ ^Resources/.*\.lproj/
+
+ optional
+
+ weight
+ 1000
+
+ ^Resources/.*\.lproj/locversion.plist$
+
+ omit
+
+ weight
+ 1100
+
+ ^Resources/Base\.lproj/
+
+ weight
+ 1010
+
+ ^[^/]+$
+
+ nested
+
+ weight
+ 10
+
+ ^embedded\.provisionprofile$
+
+ weight
+ 20
+
+ ^version\.plist$
+
+ weight
+ 20
+
+
+
+