Generate signal datasets directly from your code. Connect a client, describe your receiver and signals, and stream the results.
#include "sigtera.h"
int main() {
// narrowband — one file per signal
sigtera::Client client;
auto& nb = client.narrowband();
nb.sample_rate = 100000;
nb.noise = -20;
nb.format = sigtera::Format::raw_float32;
nb.Tone({.duration=0.05, .center_frequency=10000, .power=-6, .signal_count=3});
nb.PSK({.baud=9600, .duration=0.1, .modulation_order=8, .signal_count=2});
for (auto& [params, data] : client.simulate())
std::cout << params["signal"].get<std::string>() << ": " << data.size() << " bytes\n";
// wideband — all signals composited into one recording
sigtera::Client client2;
auto& wb = client2.wideband();
wb.sample_rate = 200000;
wb.length = 1.0;
wb.noise = -30;
wb.Tone({.duration=0.2, .center_frequency=-40000, .signal_start_time=0.0});
wb.Iridium({.duration=0.09, .center_frequency=20000, .signal_start_time=0.5});
auto results = client2.simulate();
auto& [params, data] = results[0];
// environment simulation — propagation delay and path loss between platforms
sigtera::Client client3;
auto& env = client3.environment();
env.length = 5.0;
env.speed_of_propagation = 343;
env.path_loss_exponent = 1;
auto tx = env.Platform({.position_x=0, .position_y=0});
tx.Transmitter().Tone({.duration=2.0, .center_frequency=5000, .power=-2, .transmitter_start_time=0.0});
auto rx = env.Platform({.position_x=343, .position_y=0});
rx.Receiver({.sample_rate=50000, .noise=-20});
auto env_results = client3.simulate();
std::cout << "env sim output: " << env_results[0].second.size() << " bytes\n";
}
from sigtera import SigteraClient, Format
# narrowband — one file per signal
client = SigteraClient()
nb = client.narrowband(sample_rate=100000, noise=-20, format=Format.raw_float32)
nb.Tone(duration=0.05, center_frequency=10000, power=-6, signal_count=3)
nb.PSK(baud=9600, duration=0.1, modulation_order=8, signal_count=2)
for params, raw in client.simulate():
print(params['signal'], len(raw), 'bytes')
# wideband — all signals composited into one recording
client = SigteraClient()
wb = client.wideband(sample_rate=200000, length=1.0, noise=-30)
wb.Tone(duration=0.2, center_frequency=-40000, signal_start_time=0.0)
wb.Iridium(duration=0.09, center_frequency=20000, signal_start_time=0.5)
params, raw = next(client.simulate())
# environment simulation — propagation delay and path loss between platforms
client = SigteraClient()
env = client.environment(length=5.0, speed_of_propagation=343, path_loss_exponent=1)
tx_platform = env.Platform(position_x=0, position_y=0)
tx_platform.Transmitter().Tone(duration=2.0, center_frequency=5000, power=-2, transmitter_start_time=0.0)
rx_platform = env.Platform(position_x=343, position_y=0)
rx_platform.Receiver(sample_rate=50000, noise=-20)
params, raw = next(client.simulate())
print('env sim output:', len(raw), 'bytes')