Hi all, During the last few weeks I had some more time available than expected (working from home for obvious reasons) and finally got around to do an experiment I wanted to do for a while now: implement and test a new mode for use on VHF/UHF. I really liked the idea of mode 2400B, but it is relativly wastfull with bandwidth, and I also wanted to have a bit higher quality codec2 mode so it can actually compete with analog FM. So I tried something different: a 6000baud mode with raised cosine symbols. A zero is encoded as an inversion, ones as a continuous level. To prevent to much DC in the signal after each 9 bits a zero is inserted.
Originally I wanted to use a higher bitrate LPCNet mode, but couldn't figure out how to set it to anything other than 1733bps yet. So for the time being I am using mode 3200, but can still swap it out later as there is 4666bps available. I used a frame length of 120ms, partially to reduce overhead, but also to make it easier to switch to another codec later, 120ms can handle all the current codec sizes: 20ms, 30ms, 40ms etc... In order to make each identification more standardised and to always have a data channel available each frame has data. Either 64bits in case of a voice frame, or 608 in case of a full data frame. Yesterday I did some on-air tests between my home and our local 70cm repeater (the discriminator output is connected to the controller and can be sampled directly). At home I used the packet input of my ft-817. Using 5W this resulted in a near perfect (might need some finetuning) signal over a distance of 11km. My current status can be found at https://github.com/JeroenVreeken/codec2 in the m6000 branch. Be aware that I have not extensively tested with real audio data yet, my tests were with artificial voice data to be able to test easily. Next step is to use the new lib for the actual repeater. It is currently configured to receive both analog FM and mode 2400B, but it should not be hard to switch 2400B out for 6000. Just need to check that the correct amount of samples is used everywhere. That should enable some real world tests. 73s, Jeroen p.s. some values from the README: | second | frame ----------------|---------|------ baud | 6000 | 720 inserted 0s | 600 | 72 sync bits | 133.33 | 16 --------------------------------- voice bits | 4666.67 | 560 used voice bits | 3200 | 384 codec2 frames | 50 | 6 extra data bits | 533.33 | 64 control bits | 50 | 6 reserved bits | 16.67 | 2 --------------------------------- data frame bits | 5066.67 | 608 control bits | 83.33 | 10 reserved bits | | 14
_______________________________________________ Freetel-codec2 mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/freetel-codec2
