Dessiner dans le spectre radio
L’ingénieur logiciel Gokberk Yaltirakli, actuellement basé au Royaume-Uni a eu une idée qui devrait plaire aux radios amateurs qui lisent cet article.
Si vous avez déjà utilisé un logiciel SDR (Software Defined Radio), vous êtes forcement tombé sur la vue spectrogramme qui ressemble à ceci :
Le spectrogramme affiche l'amplitude des fréquences au fil du temps, ce qui a donné l'idée à Gokberk de jouer avec plusieurs fréquences pour dessiner le spectrogramme à partir d'[un simple émetteur radio (HackRF)](https://amzn.to/3k1LDdn?source=korben.info) et un peu de code Python.Voici ce que ça donne dans le logiciel gqrx :
#!/usr/bin/env python3 import struct import os from PIL import Image import sys import math dsp = os.fdopen(1, "wb") def write(i, q): i = int(i * 127) q = int(q * 127) data = struct.pack("bb", i, q) dsp.write(data) RATE = 4_000_000 # 4M sample rate TRANSMIT_TIME = 2 # 2 Seconds FREQ_DEV = 15_000 # 15 KHz im = Image.open(sys.argv[1]) im.convert("1") # 1 means 1-bit image t = 0 for y in range(im.height)[::-1]: target = t + TRANSMIT_TIME / im.height line = [im.getpixel((x, y)) for x in range(im.width)] while t < target: i = 0 q = 0 for x, pix in enumerate(line): if not pix: continue offs = x / im.width offs *= FREQ_DEV i += math.cos(2 * math.pi * offs * t) * 0.01 q += math.sin(2 * math.pi * offs * t) * 0.01 write(i, q) t += 1.0 / RATE
Bravo Gokberk !