Search results

  1. B

    CW generator

    The spectrum of the F32 CW Modulator was measured by sending the alphabet in 5 character words along with some numbers. This was adequately random to suppress periodic spikes when averaged over a number of FFT. Measurements were done at a sample rates of 12 ksps and 48 ksps. The FFT size was...
  2. B

    CW generator

    (sent b4) These are all small enough that I don't plan anything further for time improvement, but there are things that could be done if anyone cares. I will pursue spectrum measurements, yet. Oh, also, I will update the F32 Design Tool. And, if you want to bring a hand key in through an I/O...
  3. B

    CW generator

    Hi All - just got back from weekend trip and got to the CW modulator. I re-fixed PR 31! Also I removed some unused variables and did the timing tests. At Sample rate = 12 ksps, the update uses 81 uSec which is less than 1% of the available processor time (0.76%). At 24 ksps it is 59 uSec...
  4. B

    CW generator

    Oops, sorry. I'll fix! Bob
  5. B

    CW generator

    Hi All - I had distractions, but did finally get a CW Modulator that runs with sample rates near 12, 24, 48 and 96 ksps. It does not have the efficient interpolation that I was hoping for, but more importantly, it works. I put it up on the OpenAudio_ArduinoLibrary github as a .h file and the...
  6. B

    CW generator

    No promises! But, I'll report back. Bob
  7. B

    CW generator

    Hi Pete - Do you have further thoughts on this? I have summertime activities under partial control, so I have some time, now. But I didn't want to duplicate your efforts. Bob
  8. B

    CW generator

    Hi Pete - Thanks for looking at this. Yes, the Gaussian filter was what drives the generation of the CW waveform at a lower frequency. If we want to support, say, 96 ksps it pushes the coefficient count up to 8*145, which seems big, but I guess is OK in that there is not a lot of other...
  9. B

    CW generator

    I don't see it either! Let me look at this. I have a weekend obligation, so it may be next week before I can address this. So, it looks like a problem for sample rates above 12K. The idea was that 12K is very adequate for any reasonable CW speed and the key-click reduction is already 145...
  10. B

    CW generator

    It was pulled - thanks! Also, Xtian, I will add more words to the Design Tool side notes. It has a list of allowable sample rates, but is not clear that it only changes the CW rate and tone frequency, and not the sample rate. It will be a little while, as I bunch up the Design Tool changes...
  11. B

    CW generator

    I just got here. Thanks, Mark. And it looks like all has been figured out. Great! Xtian, one other thought, unrelated to sample rates. You are using the uniform distribution white noise. I don't know the end goal, so that may be what you want. But, there is also a Gaussian noise generator...
  12. B

    Audio Adaptor PCM1808/5102A

    I was wondering about varying sample rates for the PCM1808 ADC. So, I used Pete's rate changer for the T4.x and it ran fine for 12, 44.1, 48, 96, 100, 120, 144, 180, 192, 216 and 240 ksps. At 384 it measured something but with noise all over the FFT. I did a careful comparison at 48 and 192...
  13. B

    Alternate 1024 FFT

    #TFTLCDCyg I'm not sure which file, but here is the ino that I used to dump the data for the graphs in post #1. It also has peak measurements that you can ignore. It has two sine waves, but the first is turned off by mixer4_1. The graphs were done in gnumeric (Linux). // #ifdef...
  14. B

    Audio Adaptor PCM1808/5102A

    Here is a board that might be of interest to those interested in alternatives to the SGTL5000 or that need Quad-channel audio. Here is a picture of the stereo version on the left and the quad on the right: They plug into T4.x. All parts are hand solderable. Much more information is available...
  15. B

    Alternate 1024 FFT

    I took a quick look at your FFT input data and there is an added impulse caused by r_buffer[0] and c_buffer[1] being zero. If there is a window being used, this will not be important but with rect_window it is. I think I just copied your files and tried to not change them!
  16. B

    Alternate 1024 FFT

    Mark, I installed your 32-bit FFT routines, including the window class and they run fine. But, when I tried to run the experiment in post #1 I ran into problems. This puts a single signal at 2497.85 Hz into the FFT with the window set to rect_window. The level is 0.9, or about 1 dB below FS...
  17. B

    Alternate 1024 FFT

    Mark, thanks for making me aware of your FFT work. We were sure working on the same issue. The F32 mantissa is 24 bits and this agrees with your 21 bit need in that F32 pushes the FFT noise down into the -130 dB region, or a bit lower. I plan to study your code with the 32 bit integer...
  18. B

    Alternate 1024 FFT

    I just noticed that in the previous post, the Kaiser window needs the Bessel function code. To solve that, you can paste the following into the.h file, and remove class reference from the call. /* float i0f(float x) Returns the modified Bessel function Io(x). * Algorithm is based on...
  19. B

    Alternate 1024 FFT

    Here is an 1024 point Fourier Transform that improves the dynamic range of the Teensy Audio library class AudioAnalyzeFFT1024. This increase is due to using floating point processing inside the update() function. As a library element it is pure I16 for the audio data. The standard I16 library...
  20. B

    Floating-Point Audio Library Extension

    There is no control class for the PCM5102. I have not tried it, but it should work fine if you select the SGTL5000. This is because there is no I2C or SPI control interface for the PCM5102 and the only programming is by a hardware pin. The I2S audio interface should send data to the DAC if...
  21. B

    Teensy 4.1: Lots of noise on higher gains + clipping/peaking

    In Teensy audio, including Tympan, variables are either I16 16-bit signed integers, -32768 to 32767 in range, or they are F32 floating point with practical limits to their range. The problem is that the hardware is always I16. Somehow, the signal going to the output hardware must be in that...
  22. B

    Help with a 4 band parametric eq

    Take a look at doing it with FIR filtering. The size of the FIR relates to the relative frequency width of the narrowest band in the equalizer. Traditional hardware and some DSP implementations used biquad or similar IIR filtering. The Teensy handles the load of the FIR approach with ease, and...
  23. B

    Floating-Point Audio Library Extension

    I have not attempted to run your sketch, but a couple of things: You do not have a control object, such as SGL5000 for the Teensy audio adapter. Also, there seems to be a data type issue. The AudioRecordQueue_F32 will produce an array of 128 float (aka float32_t). Each float is 4 bytes. I...
  24. B

    Floating-Point Audio Library Extension

    Hi Mike - I've been away and fallen behind. A couple of thoughts, though, on mixed USB / Teensy Codec audio. As I understand it, the USB audio must come with an implied sample rate. This might be 44100 sps. The Codec has a sample rate set (usually) by the Teensy clock. This might be 44110...
  25. B

    Audio compressor

    Hi All - In the speech compression, the original F32 classes came from the hearing aid designers via the classes written by Chip. To me, these were fine, but used a lot of lingo that was specific to the original applications. Rather than adapt, I wrote AudioEffectCompressor2_F32 that retains...
  26. B

    Floating-Point Audio Library Extension

    I have no experience with PlatformIO. But, git is an easy way to keep your external library up-to-date, independent of what IDE you are using. The internet is loaded with examples of this. Once you have your favorite few git commands it can be very smooth. I might mention, though, that if...
  27. B

    New audio class for generating waveforms from sines

    Holger, thanks for putting this together. Good thinking material. But, I don't see why you can't just generate, for instance, a triangular waveform and then run this through a linear-phase LP FIR filter. All components below the cut-off would align properly since the delay in the FIR is...
  28. B

    Floating-Point Audio Library Extension

    I suspect, for transmitting, the criteria for optimal should be carrier rejection. That is because most of the other problems can be dealt with in DSP software. But, the carrier balance comes from the hardware alone. That may not be helpful, as in my limited looking, I have not seen...
  29. B

    Floating-Point Audio Library Extension

    Hi Mike - I am not current in what is available for IQ hardware. I know K7MDL has used the RS-HFIQ that may be out of stock. But the schematics are available and a they should tell how to build just the pieces that you need. There must be more approaches to this, but I know the RS-HFIQ was...
  30. B

    Floating-Point Audio Library Extension

    Hi Mike - There are two ways to get to HF. They both have pros and cons. You can use radioCESSB_Z_transmit_F32 and you get a baseband SSB, either USB or LSB, ready to modulate an IQ mixer pair. No sharp filtering is needed. Or, you can use the radioCESSBtransmit_F32 and it has the Weaver...
  31. B

    Floating-Point Audio Library Extension

    I added another class to the OpenAudio_ArduinoLibrary to transmit Morse code. This is intended primarily for amateur radio. Called radioCWModulator_F32 it receives ASCII data into a 512 character circular buffer and makes the resulting audio available as an output. Most punctuation and...
  32. B

    Floating-Point Audio Library Extension

    Hi Frank - I think the idea of the Charlie Hill FT-8 communicator is fun. I know he operated from Hyde Park in London with success. Be aware that his code adds powers in dB, as I recollect, and it should be in pure power. Also, I don't think he did an estimate of snr. But those are details...
  33. B

    Floating-Point Audio Library Extension

    A quick note, un-related to radio architecture. I pushed a new class to the floating-point audio library for clipping of audio, and voice signals in particular. It is called radioVoiceClipper_F32. This is primarily intended for AM, FM and NBFM transmitters (not SSB---for that use the...
  34. B

    Floating-Point Audio Library Extension

    A couple of thoughts on superhet architecture. I'll keep this brief, or it would need a new thread. An assumption is that fine frequency RF hardware synthesizers have coherent spurious outputs at unacceptable levels (like -60 to -90 dBC). The DDS function implemented in software has a small...
  35. B

    Floating-Point Audio Library Extension

    Frank, I would like to chat about the architecture issues, like superhets and things. But, I'm almost out of time for today. The same for a pocket FT-8 in the Charlie Hill W5BAA spirit. That would be a fun item For now, though, the S/N calculation can be very wrong on busy bands. I do not...
  36. B

    Floating-Point Audio Library Extension

    Hi Frank and Mark - Frank, it is great that you were able to test the FT8 module. My experiments showed it to be within about 2 dB of the WSJT-X sensitivity and also to be able to do at least 15 decodes at once. So it seems OK. Frank, when you used the two Teensies you could run the FT8 at...
  37. B

    Floating-Point Audio Library Extension

    A note that the AudioPlayQueue_F32 class has been updated to have the same flexibility as in the Teensy Audio I16 library. Thanks much to Jonathan Oakley. This is reflected in the code and the OpenAudio F32 Design Tool.
  38. B

    Floating-Point Audio Library Extension

    The Controlled Envelope Single Sideband (CESSB), as implemented in the two classes above, is an improvement for a standard modulation used for amateur radio voice communications called Single Sideband. The CESSB addition involves some non-linear processing that is not obvious. For those...
  39. B

    Floating-Point Audio Library Extension

    The class for transmitting CESSB in #87 above does not work well with the simple I-Q Zero-IF type of radios. There is a weak tone due to the Weaver method of SSB generation, along with finite hardware mixer LO isolation. So, now there is a companion class, radioCESSB_Z_transmit_F32 that uses...
  40. B

    Floating-Point Audio Library Extension

    Added to the F32 Audio library is radioCESSBtransmit__F32. CESSB stands for Controlled Envelope Single Sideband, which is a process developed for ham radio by Dave Hershberger, W9GR. The include file for the class has the basic references to Dave's work Nutshell wise it allows the average...
  41. B

    Floating-Point Audio Library Extension

    Relative to the AudioPlaySDWav_F32, the sub-multiples for the WAV file sample rate are currently 1, 2, 4, or 8. Restricting this to not include, say 3 and 5, is historic and I believe no longer needed.. I have it on my list to make it "any integer."
  42. B

    Floating-Point Audio Library Extension

    AudioPlaySDWav_F32 Added - This reads a WAV file from an uSD card into the Teensy F32 audio stream. This has been in the Teensy I16 Audio library and is now available with floating point audio conversion. The basic use and functions are the same for both I16 and F32. But, in addition, the...
  43. B

    Teensyduino Loader with "Download ERROR"

    Thanks for the info on the inner workings. Currently, using 2.0.3 and TD0.58.3, under Linux Mint 20.04. The hex file needs to be more that 80K to 100K for failure. I have not been able to define a case that always works nor that always fails. It may depend on other USB activity, and I can't...
  44. B

    Teensyduino Loader with "Download ERROR"

    I spoke too soon. I have loading problems that come and go with the mood of Linux USB. I am trying to isolate the situations that cause this. More later. But, does anyone know where the hex load file, xxxx.ino.hex is under Arduino 2.0.3? Post #17 above needs it!
  45. B

    Floating-Point Audio Library Extension

    Questions have come up, from those building radio with Teensy's, about audio sample rates other than 44.1 ksps. I tried to summarize the current state of this in a short note. This particularly applies to the floating point audio library of this thread. This is hopefully helpful to people...
  46. B

    Teensyduino Loader with "Download ERROR"

    Good News! Loading looks good with Teensyduino 1.58 Beta #3. I used the USB3 port that has always failed loading of large hex files. I used Arduino 2.0.3 with TD1.57 along with a large hex file. Sure enough, it failed every time I tried, always in the same way, as in the past:11:13:56.024...
  47. B

    Teensyduino Loader with "Download ERROR"

    Paul, I sure will test that! Thanks, Bob
  48. B

    SDR A.M. Transmitter on I Q Mixer board RF harmonic problem

    That looks great Stefano!! Not to suggest that you need to change anything, but, if you want to explore this more, there is a library class, RadioIQMixer_F32 that is what you have, after "Mixer1". That includes the two oscillators and multipliers. I mention that because it also includes...
  49. B

    Teensyduino Loader with "Download ERROR"

    Update info. The Linux loading failure problem is not solved by a delay of 1 millisecond per 1024 bytes. It is solved by 1.5 millisecond or more. I am currently using 2.5 milliseconds which is barely observable over no delay. I had been running from a USB3 port on the PC. I switched to a...
  50. B

    Teensyduino Loader with "Download ERROR"

    That sounds fine. I will keep the 2 that have the problem, and also try to better define bounds of the problem, as that looks to be a useful effort.
Back
Top