Skip to content

Instantly share code, notes, and snippets.

@marcusmueller
Created June 4, 2014 08:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marcusmueller/edfef568a92821261f9f to your computer and use it in GitHub Desktop.
Save marcusmueller/edfef568a92821261f9f to your computer and use it in GitHub Desktop.
Adjustable QT FFT
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
<timestamp>Wed Jun 4 10:07:10 2014</timestamp>
<block>
<key>variable_qtgui_range</key>
<param>
<key>id</key>
<value>fftlen</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>label</key>
<value></value>
</param>
<param>
<key>value</key>
<value>128</value>
</param>
<param>
<key>start</key>
<value>16</value>
</param>
<param>
<key>stop</key>
<value>4096</value>
</param>
<param>
<key>step</key>
<value>1</value>
</param>
<param>
<key>widget</key>
<value>counter_slider</value>
</param>
<param>
<key>orient</key>
<value>Qt.Horizontal</value>
</param>
<param>
<key>min_len</key>
<value>200</value>
</param>
<param>
<key>gui_hint</key>
<value></value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(135, 267)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>id</key>
<value>samp_rate</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>value</key>
<value>32000</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(10, 170)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>options</key>
<param>
<key>id</key>
<value>adjustable_qtgui_fft</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>title</key>
<value></value>
</param>
<param>
<key>author</key>
<value></value>
</param>
<param>
<key>description</key>
<value></value>
</param>
<param>
<key>window_size</key>
<value>1280, 1024</value>
</param>
<param>
<key>generate_options</key>
<value>qt_gui</value>
</param>
<param>
<key>category</key>
<value>Custom</value>
</param>
<param>
<key>run_options</key>
<value>prompt</value>
</param>
<param>
<key>run</key>
<value>True</value>
</param>
<param>
<key>max_nouts</key>
<value>0</value>
</param>
<param>
<key>realtime_scheduling</key>
<value></value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(5, 11)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>blocks_throttle</key>
<param>
<key>id</key>
<value>blocks_throttle_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>samples_per_second</key>
<value>samp_rate</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>ignoretag</key>
<value>True</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(447, 132)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>analog_fastnoise_source_x</key>
<param>
<key>id</key>
<value>analog_fastnoise_source_x_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>noise_type</key>
<value>analog.GR_GAUSSIAN</value>
</param>
<param>
<key>amp</key>
<value>1</value>
</param>
<param>
<key>seed</key>
<value>0</value>
</param>
<param>
<key>samples</key>
<value>8192</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>_coordinate</key>
<value>(197, 111)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<block>
<key>qtgui_freq_sink_x</key>
<param>
<key>id</key>
<value>qtgui_freq_sink_x_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>type</key>
<value>complex</value>
</param>
<param>
<key>name</key>
<value>QT GUI Plot</value>
</param>
<param>
<key>fftsize</key>
<value>fftlen</value>
</param>
<param>
<key>wintype</key>
<value>firdes.WIN_BLACKMAN_hARRIS</value>
</param>
<param>
<key>fc</key>
<value>0</value>
</param>
<param>
<key>bw</key>
<value>samp_rate</value>
</param>
<param>
<key>autoscale</key>
<value>False</value>
</param>
<param>
<key>average</key>
<value>1.0</value>
</param>
<param>
<key>ymin</key>
<value>-140</value>
</param>
<param>
<key>ymax</key>
<value>10</value>
</param>
<param>
<key>nconnections</key>
<value>1</value>
</param>
<param>
<key>update_time</key>
<value>0.10</value>
</param>
<param>
<key>gui_hint</key>
<value></value>
</param>
<param>
<key>label1</key>
<value></value>
</param>
<param>
<key>width1</key>
<value>1</value>
</param>
<param>
<key>color1</key>
<value>"blue"</value>
</param>
<param>
<key>alpha1</key>
<value>1.0</value>
</param>
<param>
<key>label2</key>
<value></value>
</param>
<param>
<key>width2</key>
<value>1</value>
</param>
<param>
<key>color2</key>
<value>"red"</value>
</param>
<param>
<key>alpha2</key>
<value>1.0</value>
</param>
<param>
<key>label3</key>
<value></value>
</param>
<param>
<key>width3</key>
<value>1</value>
</param>
<param>
<key>color3</key>
<value>"green"</value>
</param>
<param>
<key>alpha3</key>
<value>1.0</value>
</param>
<param>
<key>label4</key>
<value></value>
</param>
<param>
<key>width4</key>
<value>1</value>
</param>
<param>
<key>color4</key>
<value>"black"</value>
</param>
<param>
<key>alpha4</key>
<value>1.0</value>
</param>
<param>
<key>label5</key>
<value></value>
</param>
<param>
<key>width5</key>
<value>1</value>
</param>
<param>
<key>color5</key>
<value>"cyan"</value>
</param>
<param>
<key>alpha5</key>
<value>1.0</value>
</param>
<param>
<key>label6</key>
<value></value>
</param>
<param>
<key>width6</key>
<value>1</value>
</param>
<param>
<key>color6</key>
<value>"magenta"</value>
</param>
<param>
<key>alpha6</key>
<value>1.0</value>
</param>
<param>
<key>label7</key>
<value></value>
</param>
<param>
<key>width7</key>
<value>1</value>
</param>
<param>
<key>color7</key>
<value>"yellow"</value>
</param>
<param>
<key>alpha7</key>
<value>1.0</value>
</param>
<param>
<key>label8</key>
<value></value>
</param>
<param>
<key>width8</key>
<value>1</value>
</param>
<param>
<key>color8</key>
<value>"dark red"</value>
</param>
<param>
<key>alpha8</key>
<value>1.0</value>
</param>
<param>
<key>label9</key>
<value></value>
</param>
<param>
<key>width9</key>
<value>1</value>
</param>
<param>
<key>color9</key>
<value>"dark green"</value>
</param>
<param>
<key>alpha9</key>
<value>1.0</value>
</param>
<param>
<key>label10</key>
<value></value>
</param>
<param>
<key>width10</key>
<value>1</value>
</param>
<param>
<key>color10</key>
<value>"dark blue"</value>
</param>
<param>
<key>alpha10</key>
<value>1.0</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
<value>(644, 111)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
</block>
<connection>
<source_block_id>analog_fastnoise_source_x_0</source_block_id>
<sink_block_id>blocks_throttle_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_throttle_0</source_block_id>
<sink_block_id>qtgui_freq_sink_x_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
</flow_graph>
<?xml version="1.0"?>
<!--
###################################################
##QT GUI Sink
###################################################
-->
<block>
<name>QT GUI Frequency Sink</name>
<key>qtgui_freq_sink_x</key>
<import>from PyQt4 import Qt</import>
<import>from gnuradio import qtgui</import>
<import>from gnuradio.filter import firdes</import>
<import>import sip</import>
<make>#set $win = 'self._%s_win'%$id
qtgui.$(type.fcn)(
$fftsize, \#size
$wintype, \#wintype
$fc, \#fc
$bw, \#bw
$name, \#name
$nconnections \#number of inputs
)
self.$(id).set_update_time($update_time)
self.$(id).set_y_axis($ymin, $ymax)
self.$(id).enable_autoscale($autoscale)
self.$(id).set_fft_average($average)
labels = [$label1, $label2, $label3, $label4, $label5,
$label6, $label7, $label8, $label9, $label10]
widths = [$width1, $width2, $width3, $width4, $width5,
$width6, $width7, $width8, $width9, $width10]
colors = [$color1, $color2, $color3, $color4, $color5,
$color6, $color7, $color8, $color9, $color10]
alphas = [$alpha1, $alpha2, $alpha3, $alpha4, $alpha5,
$alpha6, $alpha7, $alpha8, $alpha9, $alpha10]
for i in xrange($nconnections):
if len(labels[i]) == 0:
self.$(id).set_line_label(i, "Data {0}".format(i))
else:
self.$(id).set_line_label(i, labels[i])
self.$(id).set_line_width(i, widths[i])
self.$(id).set_line_color(i, colors[i])
self.$(id).set_line_alpha(i, alphas[i])
self._$(id)_win = sip.wrapinstance(self.$(id).pyqwidget(), Qt.QWidget)
$(gui_hint()($win))</make>
<callback>set_frequency_range($fc, $bw)</callback>
<callback>set_update_time($update_time)</callback>
<callback>set_title($which, $title)</callback>
<callback>set_color($which, $color)</callback>
<callback>set_fft_size(max(int($fftsize),32))</callback>
<param_tab_order>
<tab>General</tab>
<tab>Config</tab>
</param_tab_order>
<param>
<name>Type</name>
<key>type</key>
<value>complex</value>
<type>enum</type>
<option><name>Complex</name><key>complex</key><opt>fcn:freq_sink_c</opt></option>
<option><name>Float</name><key>float</key><opt>fcn:freq_sink_f</opt></option>
</param>
<param>
<name>Name</name>
<key>name</key>
<value>QT GUI Plot</value>
<type>string</type>
</param>
<param>
<name>FFT Size</name>
<key>fftsize</key>
<value>1024</value>
<type>int</type>
</param>
<param>
<name>Window Type</name>
<key>wintype</key>
<value>firdes.WIN_BLACKMAN_hARRIS</value>
<type>enum</type>
<hide>part</hide>
<option>
<name>Blackman-harris</name>
<key>firdes.WIN_BLACKMAN_hARRIS</key>
</option>
<option>
<name>Hamming</name>
<key>firdes.WIN_HAMMING</key>
</option>
<option>
<name>Hann</name>
<key>firdes.WIN_HANN</key>
</option>
<option>
<name>Blackman</name>
<key>firdes.WIN_BLACKMAN</key>
</option>
<option>
<name>Rectangular</name>
<key>firdes.WIN_RECTANGULAR</key>
</option>
<option>
<name>Kaiser</name>
<key>firdes.WIN_KAISER</key>
</option>
<option>
<name>Flat-top</name>
<key>firdes.WIN_FLATTOP</key>
</option>
</param>
<param>
<name>Center Frequency (Hz)</name>
<key>fc</key>
<value>0</value>
<type>real</type>
</param>
<param>
<name>Bandwidth (Hz)</name>
<key>bw</key>
<value>samp_rate</value>
<type>real</type>
</param>
<param>
<name>Autoscale</name>
<key>autoscale</key>
<value>False</value>
<type>enum</type>
<hide>part</hide>
<option>
<name>Yes</name>
<key>True</key>
</option>
<option>
<name>No</name>
<key>False</key>
</option>
</param>
<param>
<name>Average</name>
<key>average</key>
<value>False</value>
<type>enum</type>
<hide>part</hide>
<option>
<name>None</name>
<key>1.0</key>
</option>
<option>
<name>Low</name>
<key>0.2</key>
</option>
<option>
<name>Medium</name>
<key>0.1</key>
</option>
<option>
<name>High</name>
<key>0.05</key>
</option>
</param>
<param>
<name>Y min</name>
<key>ymin</key>
<value>-140</value>
<type>real</type>
<hide>part</hide>
</param>
<param>
<name>Y max</name>
<key>ymax</key>
<value>10</value>
<type>real</type>
<hide>part</hide>
</param>
<param>
<name>Number of Inputs</name>
<key>nconnections</key>
<value>1</value>
<type>int</type>
<hide>part</hide>
</param>
<param>
<name>Update Period</name>
<key>update_time</key>
<value>0.10</value>
<type>real</type>
<hide>part</hide>
</param>
<param>
<name>GUI Hint</name>
<key>gui_hint</key>
<value></value>
<type>gui_hint</type>
<hide>part</hide>
</param>
<param>
<name>Line 1 Label</name>
<key>label1</key>
<type>string</type>
<hide>#if int($nconnections()) >= 1 then 'part' else 'all'#</hide>
<tab>Config</tab>
</param>
<param>
<name>Line 1 Width</name>
<key>width1</key>
<value>1</value>
<type>int</type>
<hide>#if int($nconnections()) >= 1 then 'part' else 'all'#</hide>
<tab>Config</tab>
</param>
<param>
<name>Line 1 Color</name>
<key>color1</key>
<type>enum</type>
<hide>#if int($nconnections()) >= 1 then 'part' else 'all'#</hide>
<option>
<name>Blue</name>
<key>"blue"</key>
</option>
<option>
<name>Red</name>
<key>"red"</key>
</option>
<option>
<name>Green</name>
<key>"green"</key>
</option>
<option>
<name>Black</name>
<key>"black"</key>
</option>
<option>
<name>Cyan</name>
<key>"cyan"</key>
</option>
<option>
<name>Magenta</name>
<key>"magenta"</key>
</option>
<option>
<name>Yellow</name>
<key>"yellow"</key>
</option>
<option>
<name>Dark Red</name>
<key>"dark red"</key>
</option>
<option>
<name>Dark Green</name>
<key>"dark green"</key>
</option>
<option>
<name>Dark Blue</name>
<key>"dark blue"</key>
</option>
<tab>Config</tab>
</param>
<param>
<name>Line 1 Alpha</name>
<key>alpha1</key>
<value>1.0</value>
<type>float</type>
<hide>#if int($nconnections()) >= 1 then 'part' else 'all'#</hide>
<tab>Config</tab>
</param>
<param>
<base_key>label1</base_key>
<name>Line 2 Label</name>
<key>label2</key>
<hide>#if int($nconnections()) >= 2 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>width1</base_key>
<name>Line 2 Width</name>
<key>width2</key>
<hide>#if int($nconnections()) >= 2 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>color1</base_key>
<name>Line 2 Color</name>
<key>color2</key>
<value>"red"</value>
<hide>#if int($nconnections()) >= 2 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>alpha1</base_key>
<name>Line 2 Alpha</name>
<key>alpha2</key>
<hide>#if int($nconnections()) >= 2 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>label1</base_key>
<name>Line 3 Label</name>
<key>label3</key>
<hide>#if int($nconnections()) >= 3 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>width1</base_key>
<name>Line 3 Width</name>
<key>width3</key>
<hide>#if int($nconnections()) >= 3 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>color1</base_key>
<name>Line 3 Color</name>
<key>color3</key>
<value>"green"</value>
<hide>#if int($nconnections()) >= 3 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>alpha1</base_key>
<name>Line 3 Alpha</name>
<key>alpha3</key>
<hide>#if int($nconnections()) >= 3 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>label1</base_key>
<name>Line 4 Label</name>
<key>label4</key>
<hide>#if int($nconnections()) >= 4 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>width1</base_key>
<name>Line 4 Width</name>
<key>width4</key>
<hide>#if int($nconnections()) >= 4 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>color1</base_key>
<name>Line 4 Color</name>
<key>color4</key>
<value>"black"</value>
<hide>#if int($nconnections()) >= 4 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>alpha1</base_key>
<name>Line 4 Alpha</name>
<key>alpha4</key>
<hide>#if int($nconnections()) >= 4 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>label1</base_key>
<name>Line 5 Label</name>
<key>label5</key>
<hide>#if int($nconnections()) >= 5 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>width1</base_key>
<name>Line 5 Width</name>
<key>width5</key>
<hide>#if int($nconnections()) >= 5 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>color1</base_key>
<name>Line 5 Color</name>
<key>color5</key>
<value>"cyan"</value>
<hide>#if int($nconnections()) >= 5 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>alpha1</base_key>
<name>Line 5 Alpha</name>
<key>alpha5</key>
<hide>#if int($nconnections()) >= 5 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>label1</base_key>
<name>Line 6 Label</name>
<key>label6</key>
<hide>#if int($nconnections()) >= 6 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>width1</base_key>
<name>Line 6 Width</name>
<key>width6</key>
<hide>#if int($nconnections()) >= 6 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>color1</base_key>
<name>Line 6 Color</name>
<key>color6</key>
<value>"magenta"</value>
<hide>#if int($nconnections()) >= 6 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>alpha1</base_key>
<name>Line 6 Alpha</name>
<key>alpha6</key>
<hide>#if int($nconnections()) >= 6 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>label1</base_key>
<name>Line 7 Label</name>
<key>label7</key>
<hide>#if int($nconnections()) >= 7 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>width1</base_key>
<name>Line 7 Width</name>
<key>width7</key>
<hide>#if int($nconnections()) >= 7 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>color1</base_key>
<name>Line 7 Color</name>
<key>color7</key>
<value>"yellow"</value>
<hide>#if int($nconnections()) >= 7 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>alpha1</base_key>
<name>Line 7 Alpha</name>
<key>alpha7</key>
<hide>#if int($nconnections()) >= 7 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>label1</base_key>
<name>Line 8 Label</name>
<key>label8</key>
<hide>#if int($nconnections()) >= 8 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>width1</base_key>
<name>Line 8 Width</name>
<key>width8</key>
<hide>#if int($nconnections()) >= 8 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>color1</base_key>
<name>Line 8 Color</name>
<key>color8</key>
<value>"dark red"</value>
<hide>#if int($nconnections()) >= 8 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>alpha1</base_key>
<name>Line 8 Alpha</name>
<key>alpha8</key>
<hide>#if int($nconnections()) >= 8 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>label1</base_key>
<name>Line 9 Label</name>
<key>label9</key>
<hide>#if int($nconnections()) >= 9 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>width1</base_key>
<name>Line 9 Width</name>
<key>width9</key>
<hide>#if int($nconnections()) >= 9 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>color1</base_key>
<name>Line 9 Color</name>
<key>color9</key>
<value>"dark green"</value>
<hide>#if int($nconnections()) >= 9 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>alpha1</base_key>
<name>Line 9 Alpha</name>
<key>alpha9</key>
<hide>#if int($nconnections()) >= 9 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>label1</base_key>
<name>Line 10 Label</name>
<key>label10</key>
<hide>#if int($nconnections()) >= 10 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>width1</base_key>
<name>Line 10 Width</name>
<key>width10</key>
<hide>#if int($nconnections()) >= 10 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>color1</base_key>
<name>Line 10 Color</name>
<key>color10</key>
<value>"dark blue"</value>
<hide>#if int($nconnections()) >= 10 then 'part' else 'all'#</hide>
</param>
<param>
<base_key>alpha1</base_key>
<name>Line 10 Alpha</name>
<key>alpha10</key>
<hide>#if int($nconnections()) >= 10 then 'part' else 'all'#</hide>
</param>
<sink>
<name>in</name>
<type>$type</type>
<nports>$nconnections</nports>
</sink>
<doc>
The GUI hint can be used to position the widget within the application. \
The hint is of the form [tab_id@tab_index]: [row, col, row_span, col_span]. \
Both the tab specification and the grid position are optional.
</doc>
</block>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment