This project aims to create a command-line program that allows the creation of IQ modulated digital signals from different sources. These files can then be plaid back on SDRs or analyzed with other programs. Our goal is to make the generation of IQ signals easy for people using the command-line. We currently support the following kinds of modulation/synthesis:
- Amplitude Modulation (AM)
- Carrier Synthesis
- CW (Morse Code)
- Frequency Modulation (FM)
The AM module takes an input sound files, applies AM to it, then interpolates the resulting IQ samples. The following options are allowed:
-i,--in-file INPUT_FILE Input sound file -o,--out-file OUTPUT_FILE Output IQ file -m,--modulation-index MOD_INDEX Modulation index, value between 1-100 (default: 100) -u,--upsample-factor UPSAMPLE_FAC Upsample factor, outSR = inSR * UPSAMPLE_FAC (default: 10) -c,--cutoff-frequency CUTOFF_FREQ Cutoff frequency, value in Hz (default: 15000) -t,--transition-width TRANS_WIDTH Transition width, value in Hz (default: 10000) -h,--help Show this help text
For example, suppose you wanted to apply AM to test.flac
, with an
interpolation factor of 15, you could use:
$ ayeQ am -i ~/test.flac -o ~/out.iq -u 15
Thie module generates a carrier at baseband for the requested length of time. The following options are allowed:
-l,--length LENGTH Carrier length in seconds -o,--out-file OUTPUT_FILE Output IQ file -s,--sample-rate SAMPLE_RATE IQ Sample rate in Hz (default: 1000000) -h,--help Show this help text
For example, suppose you wanted to generate a baseband carrier for 10 seconds with at a sample rate of 1MHz:
$ ayeQ carrier -o ~/out.iq -l 10 -s 1000000
This module allows IQ files to be generated that encode textual data with the standard more code. The following options are allowed:
-s,--sample-rate SAMPLE_RATE Sample rate of the produced IQ file -w,--wpm WPM_RATE Rate of keying in Words per Minute (default: 25) -t,--in-text INPUT_TEXT Input text message -o,--out-file OUTPUT_FILE Output IQ file -h,--help Show this help text
For example, suppose you want to generate a CQ call at a sample rate of 600kHz:
$ ayeQ cw -o ~/cw.iq -s 600000 -t "cq cq cq de M0MLQ"
This module allows IQ files to be generated that moduleate a sound file using frequency modulation. The following options are allowed:
-i,--in-file INPUT_FILE Input sound file -o,--out-file OUTPUT_FILE Output IQ file -d,--deviation-ratio DEV_RATIO The raio of max_devation over max_mod_frequency. (default: 1.0) -u,--upsample-factor UPSAMPLE_FAC Upsample factor, outSR = inSR * UPSAMPLE_FAC (default: 10) -c,--cutoff-frequency CUTOFF_FREQ Cutoff frequency, value in Hz (default: 15000) -t,--transition-width TRANS_WIDTH Transition width, value in Hz (default: 10000) -h,--help Show this help text
For example, suppose you wanted to apply AM to test.flac
, with an
interpolation factor of 15 and a modulation ratio of 0.8, you could use:
$ ayeQ fm -i test.flac -u 15 -d 0.8 -o fm.iq