herosdevices.hardware.windfreak

Drivers for Windfreak Technologies devices.

Module Contents

class herosdevices.hardware.windfreak.SynthUSB(address: str, timeout: float = 1.0)[source]

Bases: herosdevices.interfaces.atomiq.RFSource, herosdevices.core.templates.SerialDeviceTemplate

Base class for Windfreak Synth USB RF generators.

Not for standalone use, use herosdevice.device.windfreak.SynthUSB2 or herosdevice.device.windfreak.SynthUSB3 instead.

amplitude: float = 0
freq_max: float = 6400000000.0
freq_min: float = 12500000.0
status
frequency: float = 1000000.0
phase: float = 0.0
amp_max: float = 1.0
amp_min: float = 0.0
default_ramp_steps: int = 30
blind: bool = False
address
connection
class herosdevices.hardware.windfreak.SynthUSBII(address: str, timeout: float = 1.0)[source]

Bases: SynthUSB

Windfreak SynthUSB2 RF generator driver.

amp_max: float = 3
amp_min: float = 0
on: int
high_rf: int
amplitude: int
frequency
freq_max: float = 6400000000.0
freq_min: float = 12500000.0
status
phase: float = 0.0
default_ramp_steps: int = 30
blind: bool = False
address
connection
class herosdevices.hardware.windfreak.SynthUSBIII(address: str, timeout: float = 1.0)[source]

Bases: SynthUSB

Windfreak SynthUSB3 RF generator driver.

amp_max: float = 10
amp_min: float = -50
frequency
amplitude
doubler
frequency_ramp_lower
frequency_ramp_upper
ramp_step_size
ramp_step_time
amplitude_ramp_lower
amplitude_ramp_upper
ramp_direction
run_sweep
sweep_cont
ramp(duration: float, frequency_start: float = float('nan'), frequency_end: float = float('nan'), amplitude_start: float = float('nan'), amplitude_end: float = float('nan'), ramp_timestep: float = float('nan'), ramp_steps: int = -1) None[source]

Ramp frequency and amplitude over a given duration.

Parameters default to -1 or nan to indicate no change. If the start frequency/amplitude is set to nan, the ramp starts from the last frequency/amplitude which was set. This method advances the timeline by duration

Parameters:
  • duration – ramp duration [s]

  • frequency_start – initial frequency [Hz]

  • frequency_end – end frequency [Hz]

  • amplitude_start – initial amplitude [0..1]

  • amplitude_end – end amplitude [0..1]

  • ramp_timesteps – time between steps in the ramp [s]

  • ramp_steps – number of steps the whole ramp should have. This takes precedence over ramp_timesteps

abstractmethod arb(duration: float, samples_amp: list[float], samples_freq: list[float], samples_phase: list[float], repetitions: int = 1, prepare_only: bool = False, run_prepared: bool = False, transform_amp: collections.abc.Callable[[float], float] = lambda x: ..., transform_freq: collections.abc.Callable[[float], float] = lambda x: ..., transform_phase: collections.abc.Callable[[float], float] = lambda x: ...) Never[source]

Play Arbitrary Samples from a List.

This method is currently not implemented on the Windfreak SynthUSB3. The device would be capable of this and drivers can be extended.

Parameters:
  • samples_amp – List of amplitude samples. If this list is empty (default), the amplitude is not modified.

  • samples_freq – List of frequency samples. If this list is empty (default), the frequency is not modified.

  • samples_phase – List of phase samples. If this list is empty (default), the phase is not modified.

  • duration – The time in which the whole sequence of samples should be played back [s].

  • repetitions – Number of times the sequence of all samples should be played. (default 1)

  • prepare_only – Only write the sequence to RAM, don’t play it.

  • run_prepared – Play arb sequence previously prepared with prepare_only.

  • transform_amp – Function to transform amplitude samples, must take a single argument of type float and return a single float.

  • transform_freq – Function to transform frequency samples (see transform_amp).

  • transform_phase – Function to transform phase samples (see transform_amp).

freq_max: float = 6400000000.0
freq_min: float = 12500000.0
status
phase: float = 0.0
default_ramp_steps: int = 30
blind: bool = False
address
connection