# LuaRadio Reference Manual Generated from LuaRadio `v0.11.0`. ## Table of contents * [Example](#example) * [Running](#running) * [`luaradio` runner](#luaradio-runner) * [Environment Variables](#environment-variables) * [Blocks](#blocks) * [Composition](#composition) * [CompositeBlock](#compositeblock) * [Sources](#sources) * [AirspyHFSource](#airspyhfsource) * [AirspySource](#airspysource) * [BladeRFSource](#bladerfsource) * [HackRFSource](#hackrfsource) * [IQFileSource](#iqfilesource) * [JSONSource](#jsonsource) * [NetworkClientSource](#networkclientsource) * [NetworkServerSource](#networkserversource) * [PortAudioSource](#portaudiosource) * [PulseAudioSource](#pulseaudiosource) * [RawFileSource](#rawfilesource) * [RealFileSource](#realfilesource) * [RtlSdrSource](#rtlsdrsource) * [SDRplaySource](#sdrplaysource) * [SignalSource](#signalsource) * [SoapySDRSource](#soapysdrsource) * [UHDSource](#uhdsource) * [UniformRandomSource](#uniformrandomsource) * [WAVFileSource](#wavfilesource) * [ZeroSource](#zerosource) * [Sinks](#sinks) * [BenchmarkSink](#benchmarksink) * [BladeRFSink](#bladerfsink) * [GnuplotPlotSink](#gnuplotplotsink) * [GnuplotSpectrumSink](#gnuplotspectrumsink) * [GnuplotWaterfallSink](#gnuplotwaterfallsink) * [GnuplotXYPlotSink](#gnuplotxyplotsink) * [HackRFSink](#hackrfsink) * [IQFileSink](#iqfilesink) * [JSONSink](#jsonsink) * [NetworkClientSink](#networkclientsink) * [NetworkServerSink](#networkserversink) * [NopSink](#nopsink) * [PortAudioSink](#portaudiosink) * [PrintSink](#printsink) * [PulseAudioSink](#pulseaudiosink) * [RawFileSink](#rawfilesink) * [RealFileSink](#realfilesink) * [SoapySDRSink](#soapysdrsink) * [UHDSink](#uhdsink) * [WAVFileSink](#wavfilesink) * [Filtering](#filtering) * [BandpassFilterBlock](#bandpassfilterblock) * [BandstopFilterBlock](#bandstopfilterblock) * [ComplexBandpassFilterBlock](#complexbandpassfilterblock) * [ComplexBandstopFilterBlock](#complexbandstopfilterblock) * [FIRFilterBlock](#firfilterblock) * [FMDeemphasisFilterBlock](#fmdeemphasisfilterblock) * [FMPreemphasisFilterBlock](#fmpreemphasisfilterblock) * [HighpassFilterBlock](#highpassfilterblock) * [IIRFilterBlock](#iirfilterblock) * [LowpassFilterBlock](#lowpassfilterblock) * [ManchesterMatchedFilterBlock](#manchestermatchedfilterblock) * [PulseMatchedFilterBlock](#pulsematchedfilterblock) * [RootRaisedCosineFilterBlock](#rootraisedcosinefilterblock) * [SinglepoleHighpassFilterBlock](#singlepolehighpassfilterblock) * [SinglepoleLowpassFilterBlock](#singlepolelowpassfilterblock) * [Math Operations](#math-operations) * [AbsoluteValueBlock](#absolutevalueblock) * [AddBlock](#addblock) * [AddConstantBlock](#addconstantblock) * [ComplexConjugateBlock](#complexconjugateblock) * [ComplexMagnitudeBlock](#complexmagnitudeblock) * [ComplexPhaseBlock](#complexphaseblock) * [MultiplyBlock](#multiplyblock) * [MultiplyConjugateBlock](#multiplyconjugateblock) * [MultiplyConstantBlock](#multiplyconstantblock) * [SubtractBlock](#subtractblock) * [Level Control](#level-control) * [AGCBlock](#agcblock) * [PowerSquelchBlock](#powersquelchblock) * [Sample Rate Manipulation](#sample-rate-manipulation) * [DecimatorBlock](#decimatorblock) * [DownsamplerBlock](#downsamplerblock) * [InterpolatorBlock](#interpolatorblock) * [RationalResamplerBlock](#rationalresamplerblock) * [UpsamplerBlock](#upsamplerblock) * [Spectrum Manipulation](#spectrum-manipulation) * [FrequencyTranslatorBlock](#frequencytranslatorblock) * [HilbertTransformBlock](#hilberttransformblock) * [TunerBlock](#tunerblock) * [Carrier and Clock Recovery](#carrier-and-clock-recovery) * [PLLBlock](#pllblock) * [ZeroCrossingClockRecoveryBlock](#zerocrossingclockrecoveryblock) * [Digital](#digital) * [BinaryPhaseCorrectorBlock](#binaryphasecorrectorblock) * [DifferentialDecoderBlock](#differentialdecoderblock) * [ManchesterDecoderBlock](#manchesterdecoderblock) * [PreambleSamplerBlock](#preamblesamplerblock) * [SamplerBlock](#samplerblock) * [SlicerBlock](#slicerblock) * [Type Conversion](#type-conversion) * [ComplexToFloatBlock](#complextofloatblock) * [ComplexToImagBlock](#complextoimagblock) * [ComplexToRealBlock](#complextorealblock) * [FloatToComplexBlock](#floattocomplexblock) * [RealToComplexBlock](#realtocomplexblock) * [Miscellaneous](#miscellaneous) * [DeinterleaveBlock](#deinterleaveblock) * [DelayBlock](#delayblock) * [InterleaveBlock](#interleaveblock) * [NopBlock](#nopblock) * [ThrottleBlock](#throttleblock) * [Modulation](#modulation) * [FrequencyModulatorBlock](#frequencymodulatorblock) * [PulseAmplitudeModulatorBlock](#pulseamplitudemodulatorblock) * [QuadratureAmplitudeModulatorBlock](#quadratureamplitudemodulatorblock) * [SSBModulator](#ssbmodulator) * [Demodulation](#demodulation) * [AMEnvelopeDemodulator](#amenvelopedemodulator) * [AMSynchronousDemodulator](#amsynchronousdemodulator) * [FrequencyDiscriminatorBlock](#frequencydiscriminatorblock) * [NBFMDemodulator](#nbfmdemodulator) * [SSBDemodulator](#ssbdemodulator) * [WBFMMonoDemodulator](#wbfmmonodemodulator) * [WBFMStereoDemodulator](#wbfmstereodemodulator) * [Protocol](#protocol) * [AX25FramerBlock](#ax25framerblock) * [AX25FramerBlock.AX25FrameType](#ax25framerblockax25frametype) * [IDMFramerBlock](#idmframerblock) * [IDMFramerBlock.IDMFrameType](#idmframerblockidmframetype) * [POCSAGDecoderBlock](#pocsagdecoderblock) * [POCSAGDecoderBlock.POCSAGMessageType](#pocsagdecoderblockpocsagmessagetype) * [POCSAGFramerBlock](#pocsagframerblock) * [POCSAGFramerBlock.POCSAGFrameType](#pocsagframerblockpocsagframetype) * [RDSDecoderBlock](#rdsdecoderblock) * [RDSDecoderBlock.RDSPacketType](#rdsdecoderblockrdspackettype) * [RDSFramerBlock](#rdsframerblock) * [RDSFramerBlock.RDSFrameType](#rdsframerblockrdsframetype) * [SCMFramerBlock](#scmframerblock) * [SCMFramerBlock.SCMFrameType](#scmframerblockscmframetype) * [SCMPlusFramerBlock](#scmplusframerblock) * [SCMPlusFramerBlock.SCMPlusFrameType](#scmplusframerblockscmplusframetype) * [VaricodeDecoderBlock](#varicodedecoderblock) * [Receivers](#receivers) * [AX25Receiver](#ax25receiver) * [BPSK31Receiver](#bpsk31receiver) * [ERTReceiver](#ertreceiver) * [POCSAGReceiver](#pocsagreceiver) * [RDSReceiver](#rdsreceiver) * [Infrastructure](#infrastructure) * [Package](#package) * [Basic Types](#basic-types) * [ComplexFloat32](#complexfloat32) * [Float32](#float32) * [Bit](#bit) * [Byte](#byte) * [Type Factories](#type-factories) * [CStructType](#cstructtype) * [ObjectType](#objecttype) * [Vector](#vector) * [Vector](#vector-1) * [ObjectVector](#objectvector) * [Block](#block) * [Input](#input) * [Output](#output) * [Block](#block-1) * [Debug](#debug) * [Platform](#platform) ## Example

``` lua local radio = require('radio') -- RTL-SDR Source, frequency 88.5 MHz - 250 kHz, sample rate 1102500 Hz local source = radio.RtlSdrSource(88.5e6 - 250e3, 1102500) -- Tuner block, translate -250 kHz, filter 200 kHz, decimate by 5 local tuner = radio.TunerBlock(-250e3, 200e3, 5) -- Wideband FM Stereo Demodulator block local demodulator = radio.WBFMStereoDemodulator() -- Left and right AF downsampler blocks local l_downsampler = radio.DownsamplerBlock(5) local r_downsampler = radio.DownsamplerBlock(5) -- Audio sink, 2 channels for left and right audio local sink = radio.PulseAudioSink(2) -- Top-level block local top = radio.CompositeBlock() -- Connect blocks in top block top:connect(source, tuner, demodulator) top:connect(demodulator, 'left', l_downsampler, 'in') top:connect(demodulator, 'right', r_downsampler, 'in') top:connect(l_downsampler, 'out', sink, 'in1') top:connect(r_downsampler, 'out', sink, 'in2') -- Run top block top:run() ``` ``` $ luaradio example.lua ``` ## Running LuaRadio scripts can be run with the `luaradio` runner, or directly with `luajit`, if the `radio` package is installed in your Lua path. ### `luaradio` runner The `luaradio` runner is a simple wrapper script for running LuaRadio scripts. It can also print version information, dump relevant platform information, and adjust the runtime debug verbosity of scripts. The runner modifies the Lua path to support importing the `radio` package locally, so it can be used to run LuaRadio scripts directly from the repository without installation. ``` $ ./luaradio Usage: luaradio [options]