From 3cd3a9f82068bea3a37e4efe0ee3752ecb044cce Mon Sep 17 00:00:00 2001 From: drowe67 Date: Thu, 13 Jul 2023 08:49:31 +0930 Subject: rm misc directory --- CMakeLists.txt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f86826..8ba9220 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -229,7 +229,6 @@ if(UNITTEST) message(STATUS "Threads library flags: ${CMAKE_THREAD_LIBS_INIT}") add_subdirectory(unittest) - add_subdirectory(misc) endif(UNITTEST) message(STATUS "Build type is: " ${CMAKE_BUILD_TYPE}) @@ -361,7 +360,7 @@ endif() # just the +ve freq exp(jwn) so output power is 0.5 input power add_test(NAME test_quisk_filter COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; - ${CMAKE_CURRENT_BINARY_DIR}/misc/mksine in.raw 1500 1; + ${CMAKE_CURRENT_BINARY_DIR}/unittest/mksine in.raw 1500 1; cat in.raw | ${CMAKE_CURRENT_BINARY_DIR}/unittest/tquisk_filter | sox -t .s16 -r 8000 -c 1 - -t .s16 out.raw vol 2; cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; @@ -384,7 +383,7 @@ endif() # check channel simulator measures correct Peak to Average Power Ratio (about 0dB) with a sine wave input signal add_test(NAME test_ch_papr COMMAND sh -c "cd ${CMAKE_CURRENT_BINARY_DIR}; - ./misc/mksine - 1000 10 | ./src/ch - /dev/null --ctest") + ./unittest/mksine - 1000 10 | ./src/ch - /dev/null --ctest") add_test(NAME test_codec2_700c_octave_port COMMAND sh -c " @@ -1162,7 +1161,7 @@ endif(NOT APPLE) add_test(NAME test_vq_mbest COMMAND sh -c "./tvq_mbest; \ cat target.f32 | \ - ../misc/vq_mbest -k 4 -q vq1.f32,vq2.f32 --st 1 --en 2 --mbest 2 -v > /dev/null;" + ./vq_mbest -k 4 -q vq1.f32,vq2.f32 --st 1 --en 2 --mbest 2 -v > /dev/null;" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unittest ) set_tests_properties(test_vq_mbest PROPERTIES PASS_REGULAR_EXPRESSION "MSE: 0.00") -- cgit v1.2.3 From ad8fd510e7de8447abde0b51c12e8364aa052349 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Thu, 13 Jul 2023 10:02:57 +0930 Subject: remove CMake INSTALL_EXAMPLES option, as directories it cites no longer exist --- CMakeLists.txt | 7 ------- 1 file changed, 7 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ba9220..82e7f7a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -118,12 +118,6 @@ endif(MINGW) option(BUILD_SHARED_LIBS "Build shared library. Set to OFF for static library." ON) option(UNITTEST "Build unittest binaries." OFF) -option(INSTALL_EXAMPLES "Install example code." OFF) -if(INSTALL_EXAMPLES) - install(DIRECTORY octave raw script wav - USE_SOURCE_PERMISSIONS - DESTINATION ${CMAKE_INSTALL_DATADIR}/codec2) -endif() # LPCNet needs to be bootstraped because codec2 and freedvlpcnet are # cross dependent. @@ -135,7 +129,6 @@ if(LPCNET_BUILD_DIR) endif() - include(CheckIncludeFiles) check_include_files("stdlib.h" HAVE_STDLIB_H) check_include_files("string.h" HAVE_STRING_H) -- cgit v1.2.3 From 141f3862d7269ed0c8c3cd47ceeb7b438b0b7b51 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Thu, 13 Jul 2023 12:26:35 +0930 Subject: rm a bunch of wav and raw files not needed for tests --- CMakeLists.txt | 6 +-- octave/hf_sim.m | 78 ------------------------------------ raw/700d_end_over.raw | Bin 238720 -> 0 bytes raw/big_dog.raw | Bin 40000 -> 0 bytes raw/cq_ref.raw | Bin 143828 -> 0 bytes raw/cross.raw | Bin 48000 -> 0 bytes raw/f2400.raw | Bin 27680 -> 0 bytes raw/forig.raw | Bin 25224 -> 0 bytes raw/g3plx.raw | Bin 91286 -> 0 bytes raw/hts.raw | Bin 384000 -> 0 bytes raw/hts2.raw | Bin 96000 -> 0 bytes raw/hts2a.raw | Bin 48000 -> 0 bytes raw/m2400.raw | Bin 33624 -> 0 bytes raw/mmt1.raw | Bin 64000 -> 0 bytes raw/morig.raw | Bin 32056 -> 0 bytes raw/sine1k_2Hz_spread.raw | Bin 962560 -> 0 bytes raw/sine1k_2ms_delay_2Hz_spread.raw | Bin 962560 -> 0 bytes raw/speech_orig_16k.wav | Bin 345644 -> 0 bytes raw/vk5qi.raw | Bin 216716 -> 0 bytes wav/all.wav | Bin 913868 -> 0 bytes wav/big_dog.wav | Bin 40044 -> 0 bytes wav/cross.wav | Bin 24058 -> 0 bytes wav/f2400.wav | Bin 27726 -> 0 bytes wav/forig.wav | Bin 25268 -> 0 bytes wav/hts1a.wav | Bin 48044 -> 0 bytes wav/hts2a.wav | Bin 48044 -> 0 bytes wav/m2400.wav | Bin 33668 -> 0 bytes wav/mmt1.wav | Bin 64044 -> 0 bytes wav/morig.wav | Bin 32100 -> 0 bytes wav/ve9qrp.wav | Bin 1799212 -> 0 bytes wav/vk5qi.wav | Bin 216760 -> 0 bytes 31 files changed, 3 insertions(+), 81 deletions(-) delete mode 100644 octave/hf_sim.m delete mode 100644 raw/700d_end_over.raw delete mode 100644 raw/big_dog.raw delete mode 100644 raw/cq_ref.raw delete mode 100644 raw/cross.raw delete mode 100644 raw/f2400.raw delete mode 100644 raw/forig.raw delete mode 100644 raw/g3plx.raw delete mode 100644 raw/hts.raw delete mode 100644 raw/hts2.raw delete mode 100644 raw/hts2a.raw delete mode 100644 raw/m2400.raw delete mode 100644 raw/mmt1.raw delete mode 100644 raw/morig.raw delete mode 100644 raw/sine1k_2Hz_spread.raw delete mode 100644 raw/sine1k_2ms_delay_2Hz_spread.raw delete mode 100644 raw/speech_orig_16k.wav delete mode 100644 raw/vk5qi.raw delete mode 100644 wav/all.wav delete mode 100644 wav/big_dog.wav delete mode 100644 wav/cross.wav delete mode 100644 wav/f2400.wav delete mode 100644 wav/forig.wav delete mode 100644 wav/hts1a.wav delete mode 100644 wav/hts2a.wav delete mode 100644 wav/m2400.wav delete mode 100644 wav/mmt1.wav delete mode 100644 wav/morig.wav delete mode 100644 wav/ve9qrp.wav delete mode 100644 wav/vk5qi.wav (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 82e7f7a..fefb120 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -381,10 +381,10 @@ endif() add_test(NAME test_codec2_700c_octave_port COMMAND sh -c " cd ${CMAKE_CURRENT_BINARY_DIR}/src; - ./c2sim ${CMAKE_CURRENT_SOURCE_DIR}/raw/cq_ref.raw --phase0 --postfilter --dump cq_ref --lpc 10 --dump_pitch_e cq_ref_pitche.txt; - cd ${CMAKE_CURRENT_BINARY_DIR}/unittest; ./tnewamp1 ${CMAKE_CURRENT_SOURCE_DIR}/raw/cq_ref.raw; + ./c2sim ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw --phase0 --postfilter --dump hts1a --lpc 10 --dump_pitch_e hts1a_pitche.txt; + cd ${CMAKE_CURRENT_BINARY_DIR}/unittest; ./tnewamp1 ${CMAKE_CURRENT_SOURCE_DIR}/raw/hts1a.raw; cd ${CMAKE_CURRENT_SOURCE_DIR}/octave; - DISPLAY=\"\" octave-cli -qf --eval 'tnewamp1(\"${CMAKE_CURRENT_BINARY_DIR}/src/cq_ref\", \"${CMAKE_CURRENT_BINARY_DIR}/unittest\")'") + DISPLAY=\"\" octave-cli -qf --eval 'tnewamp1(\"${CMAKE_CURRENT_BINARY_DIR}/src/hts1a\", \"${CMAKE_CURRENT_BINARY_DIR}/unittest\")'") set_tests_properties(test_codec2_700c_octave_port PROPERTIES PASS_REGULAR_EXPRESSION "fails: 0") # ------------------------------------------------------------------------- diff --git a/octave/hf_sim.m b/octave/hf_sim.m deleted file mode 100644 index c9105c0..0000000 --- a/octave/hf_sim.m +++ /dev/null @@ -1,78 +0,0 @@ -% hf_sim.m -% David Rowe March 2014 -% -% Two path CCIR poor HF channel simulation, with apaologies to PathSim - -% Init HF channel model from stored sample files of spreading signal ---------------------------------- - -global spread; -global spread_2ms; -global hf_gain; - -% convert "spreading" samples from 1kHz carrier at Fs to complex -% baseband, generated by passing a 1kHz sine wave through PathSim with -% the ccir-poor model, enabling one path at a time. Because I'm too -% lazy to generate my own spreading signals - -Fc = 1000; Fs=8000; -fspread = fopen("../raw/sine1k_2Hz_spread.raw","rb"); -spread1k = fread(fspread, "int16")/10000; -fclose(fspread); -fspread = fopen("../raw/sine1k_2ms_delay_2Hz_spread.raw","rb"); -spread1k_2ms = fread(fspread, "int16")/10000; -fclose(fspread); - -% down convert to complex baseband - -spreadbb = spread1k.*exp(-j*(2*pi*Fc/Fs)*(1:length(spread1k))'); -spreadbb_2ms = spread1k_2ms.*exp(-j*(2*pi*Fc/Fs)*(1:length(spread1k_2ms))'); - -% remove -2000 Hz image - -b = fir1(50, 5/Fs); -spread = filter(b,1,spreadbb); -spread_2ms = filter(b,1,spreadbb_2ms); - -% discard first 1000 samples as these were near 0, probably as -% PathSim states were ramping up - -spread = spread(1000:length(spread)); -spread_2ms = spread_2ms(1000:length(spread_2ms)); - -hf_gain = 1.0/sqrt(var(spread)+var(spread_2ms)); - -% This function simulates the HF channel at 8kHz for real signals. A -% good use case is passing a vector of speech samples through it to -% simulate SSB over HF. There's a really good reason for the 300 - -% 3000 Hz filter that escapes me right now :-) - -function [sim_out snr3kHz_measured ] = hf_sim_real(sim_in, snr3kHz) - - % 300 - 3000 Hz filter - - b = fir1(100,[300/4000, 3000/4000], 'pass'); - - % det power of unit variance noise passed through this filter - - filter_var = var(filter(b,1,randn(1000,1))); - - % Start simulation - - s = hilbert(filter(b,1,sim_in)); - n1 = length(s); n2 = length(spread); - n = min(n1,n2); - path1 = s(1:n) .* spread(1:n); - path2 = s(1:n) .* spread_2ms(1:n); - delay = floor(0.002*Fs); - - combined = path1(delay+1:n) + path2(1:n-delay); - - snr = 10 .^ (snr3kHz/10); - variance = (combined'*combined)/(snr*n); - noise = sqrt(variance*0.5/filter_var)*(randn(n-delay,1) + j*randn(n-delay,1)); - filtered_noise = filter(b,1,noise); - - sim_out = real(combined+filtered_noise); - snr3kHz_measured = 10*log10(var(real(combined))/var(real(filtered_noise))); -endfunction - diff --git a/raw/700d_end_over.raw b/raw/700d_end_over.raw deleted file mode 100644 index 2fe5e77..0000000 Binary files a/raw/700d_end_over.raw and /dev/null differ diff --git a/raw/big_dog.raw b/raw/big_dog.raw deleted file mode 100644 index 1716364..0000000 Binary files a/raw/big_dog.raw and /dev/null differ diff --git a/raw/cq_ref.raw b/raw/cq_ref.raw deleted file mode 100644 index 485703d..0000000 Binary files a/raw/cq_ref.raw and /dev/null differ diff --git a/raw/cross.raw b/raw/cross.raw deleted file mode 100644 index 1b2af6a..0000000 Binary files a/raw/cross.raw and /dev/null differ diff --git a/raw/f2400.raw b/raw/f2400.raw deleted file mode 100644 index 5f4427f..0000000 Binary files a/raw/f2400.raw and /dev/null differ diff --git a/raw/forig.raw b/raw/forig.raw deleted file mode 100644 index 4ba294d..0000000 Binary files a/raw/forig.raw and /dev/null differ diff --git a/raw/g3plx.raw b/raw/g3plx.raw deleted file mode 100644 index 9970c3f..0000000 Binary files a/raw/g3plx.raw and /dev/null differ diff --git a/raw/hts.raw b/raw/hts.raw deleted file mode 100644 index 79f869a..0000000 Binary files a/raw/hts.raw and /dev/null differ diff --git a/raw/hts2.raw b/raw/hts2.raw deleted file mode 100644 index 0bb9df1..0000000 Binary files a/raw/hts2.raw and /dev/null differ diff --git a/raw/hts2a.raw b/raw/hts2a.raw deleted file mode 100644 index 6d9cf17..0000000 Binary files a/raw/hts2a.raw and /dev/null differ diff --git a/raw/m2400.raw b/raw/m2400.raw deleted file mode 100644 index 1c0956d..0000000 Binary files a/raw/m2400.raw and /dev/null differ diff --git a/raw/mmt1.raw b/raw/mmt1.raw deleted file mode 100644 index 40638a5..0000000 Binary files a/raw/mmt1.raw and /dev/null differ diff --git a/raw/morig.raw b/raw/morig.raw deleted file mode 100644 index 4af0e8f..0000000 Binary files a/raw/morig.raw and /dev/null differ diff --git a/raw/sine1k_2Hz_spread.raw b/raw/sine1k_2Hz_spread.raw deleted file mode 100644 index 1b8ad9c..0000000 Binary files a/raw/sine1k_2Hz_spread.raw and /dev/null differ diff --git a/raw/sine1k_2ms_delay_2Hz_spread.raw b/raw/sine1k_2ms_delay_2Hz_spread.raw deleted file mode 100644 index 4d3e09e..0000000 Binary files a/raw/sine1k_2ms_delay_2Hz_spread.raw and /dev/null differ diff --git a/raw/speech_orig_16k.wav b/raw/speech_orig_16k.wav deleted file mode 100644 index 737d9a5..0000000 Binary files a/raw/speech_orig_16k.wav and /dev/null differ diff --git a/raw/vk5qi.raw b/raw/vk5qi.raw deleted file mode 100644 index fdfcd5d..0000000 Binary files a/raw/vk5qi.raw and /dev/null differ diff --git a/wav/all.wav b/wav/all.wav deleted file mode 100644 index ba37838..0000000 Binary files a/wav/all.wav and /dev/null differ diff --git a/wav/big_dog.wav b/wav/big_dog.wav deleted file mode 100644 index 22100f4..0000000 Binary files a/wav/big_dog.wav and /dev/null differ diff --git a/wav/cross.wav b/wav/cross.wav deleted file mode 100644 index f9f2d04..0000000 Binary files a/wav/cross.wav and /dev/null differ diff --git a/wav/f2400.wav b/wav/f2400.wav deleted file mode 100644 index 35c41d9..0000000 Binary files a/wav/f2400.wav and /dev/null differ diff --git a/wav/forig.wav b/wav/forig.wav deleted file mode 100644 index 81f3f9f..0000000 Binary files a/wav/forig.wav and /dev/null differ diff --git a/wav/hts1a.wav b/wav/hts1a.wav deleted file mode 100644 index f605089..0000000 Binary files a/wav/hts1a.wav and /dev/null differ diff --git a/wav/hts2a.wav b/wav/hts2a.wav deleted file mode 100644 index 644b536..0000000 Binary files a/wav/hts2a.wav and /dev/null differ diff --git a/wav/m2400.wav b/wav/m2400.wav deleted file mode 100644 index a1fe1a5..0000000 Binary files a/wav/m2400.wav and /dev/null differ diff --git a/wav/mmt1.wav b/wav/mmt1.wav deleted file mode 100644 index b0526cb..0000000 Binary files a/wav/mmt1.wav and /dev/null differ diff --git a/wav/morig.wav b/wav/morig.wav deleted file mode 100644 index eaf52d1..0000000 Binary files a/wav/morig.wav and /dev/null differ diff --git a/wav/ve9qrp.wav b/wav/ve9qrp.wav deleted file mode 100644 index 38454a5..0000000 Binary files a/wav/ve9qrp.wav and /dev/null differ diff --git a/wav/vk5qi.wav b/wav/vk5qi.wav deleted file mode 100644 index b1aaed9..0000000 Binary files a/wav/vk5qi.wav and /dev/null differ -- cgit v1.2.3 From 496710e562507ee1d3ca05cfe15a53a28c7e6135 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Fri, 14 Jul 2023 08:14:13 +0930 Subject: README.md pointing to legacy repo, bumped version to 1.2 --- CMakeLists.txt | 2 +- README.md | 25 +++++++------------------ 2 files changed, 8 insertions(+), 19 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index fefb120..ba7cdd5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,7 +13,7 @@ set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum OS X deployment ver cmake_minimum_required(VERSION 3.13) project(CODEC2 - VERSION 1.1.1 + VERSION 1.2.0 DESCRIPTION "Next-Generation Digital Voice for Two-Way Radio" HOMEPAGE_URL "https://www.rowetel.com/codec2.html" LANGUAGES C diff --git a/README.md b/README.md index 097a4de..0785a5e 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,13 @@ Codec 2 is an open source (LGPL 2.1) low bit rate speech codec: http://rowetel.c Also included: + The FreeDV API for digital voice over radio. FreeDV is an open source digital voice protocol that integrates modems, codecs, and FEC [README_freedv](README_freedv.md) - + APIs for raw and Ethernet packet data over radio [README_data](README_data.md) - + High performance coherent OFDM modem for HF channels [README_ofdm](README_ofdm.md) - + High performance non-coherent FSK modem [README_fsk](README_fsk.md) + + HF OFDM and FSK modems, FEC used in the FreeDV API + + APIs for packet data over radio [README_data](README_data.md) + An STM32 embedded version of FreeDV 1600/700D/700E for the [SM1000](stm32/README.md) - + Coherent PSK modem [README_cohpsk](README_cohpsk.md) for HF channels - + FDMDV DPSK modem [README_fdmdv](README_fdmdv.md) for HF channels + +## Older code + +In July 2023 this repo was refactored, older code can be found in https://github.com/drowe67/codec2-dev ## Quickstart @@ -154,10 +155,7 @@ CTest is used as a test framework, with support from [GNU Octave](https://www.gn ``` cmake - cmake support files demo - Simple Codec 2 and FreeDv API demo applications -misc - misc C programs that have been useful in development, - not reqd for Codec 2 release. Part of Debug build. -octave - Octave scripts used to support development -script - shell scripts for playing and converting raw files +octave - Octave scripts used to support ctests src - C source code for Codec 2, FDMDV modem, COHPSK modem, FreeDV API raw - speech files in raw format (16 bits signed linear 8 kHz) stm32 - STM32F4 microcontroller and SM1000 FreeDV Adaptor support @@ -175,15 +173,6 @@ wav - speech files in wave file format make ``` -1. For dump file support (dump data from c2sim for input to Octave development scripts): - ``` - cd ~/codec2 - rm -Rf build_linux && mkdir build_linux - cd build_linux - CFLAGS=-DDUMP cmake .. - make - ``` - ## Building for Windows on a Linux machine We recommend using Linux to cross compile for Windows. -- cgit v1.2.3