Software Defined Radio — как это работает? Часть 9

    Привет, Хабр.

    В предыдущей части было рассмотрено декодирование сигналов RDS для FM-радиостанций, и идея следующей статьи возникла сама собой — нужно сделать свой собственный FM-трансмиттер.

    Вариантов будет два — простой, и более сложный, с RDS.



    Как и в предыдущих случаях, сделаем мы все это в GNU Radio, не написав ни одной строчки кода. Для тех кому интересно, продолжение под катом.

    Итак, приступим. Разумеется, для тестов нам понадобится SDR с возможностью передачи (HackRF, USRP, LimeSDR).

    FM трансмиттер


    Схема простого трансмиттера делается практически в два клика, и надеюсь, никаких сложностей в понимании не представляет. В качестве источника я использую WAV-file, хотя при желании можно использовать и другой источник, например вход звуковой карты.



    Собственно, ключевых блоков в этой схеме два — WBFM-трансмиттер и Resampler, преобразующий частоту дискретизации потока. Все значения частоты дискретизации должны соответствовать друг другу, иначе будет пропуск семплов, что на слух будет слышно как щелчки. Блок Multiply Const используется для регулировки входного уровня. Также важно не перепутать, в GNU Radio есть два разных блока для FM — WBFM и NBFM. Нам нужен именно первый, Wide Band FM. Модуляция NFM используется для портативных радиостанций.

    В общем, все просто, запускаем, работает. Никаких UI-блоков в схеме нет, так что использовать ее можно и из командной строки (подробнее в 4й части).

    Кстати, если посмотреть спектр, то можно убедиться, что передается простой моно сигнал, без каких-либо каналов, пилот-тонов и прочего.



    Пора перейти к более сложному варианту.

    Трансмиттер с RDS


    Схема передатчика с RDS будет разумеется, посложнее. Ее оригинал был взят из примеров gr-rds с небольшими изменениями (оригинальная версия под Windows не заработала, «правильная» версия внизу статьи), рассмотрим, из каких компонентов она состоит.



    (оригинал в полном разрешении)

    Верхяя треть схемы — это передача RDS. На входе имеется RDS-энкодер, который исходя из имеющихся данных (имя станции, код страны и пр) формирует RDS-пакеты. Затем битовый поток подвергается дифференциальному кодированию, идея которого — убрать повторяющиеся последовательности вида 001000001. Затем сигнал обрабатывается, и им модулируется «несущая» на 57КГц. Центральная часть — создание звука. Тут формируются каналы L+R и L-R. Снизу в качестве источника звука указан WAV-файл. И наконец, блок Add складывает все это вместе, также к сигналу добавляется пилот-тон на 19КГц и второй тон на 38КГц. Весь этот суммарный сигнал отправляется на частотный модулятор, все это с помощью SDR отправляется в эфир.

    По идее, эта схема не является 100% полной, например нет блока предыскажений, фазы тонов на 19, 38 и 57КГц не синхронизированы. С другой стороны, для понимания того, как вообще звук передается в эфир, такой схемы вполне достаточно, желающие могут доработать ее самостоятельно.

    При запуске открывается окно, часть параметров можно менять.



    Было желание протестировать RDS с реальным приемником, но оказалось что FM-радио — это уже атавизм, и у меня дома его нет. Даже в смартфоне последней модели оно тоже отсутствует. Так что пришлось использовать RTL-SDR V3 и GQRX в качестве контрольного приемника, результат на КДПВ.

    Разумеется, перед тестированием необходимо выбрать свободную частоту, чтобы на ней не было станций, ну и желательно не превышать разрешенную мощность. Для тех же, кто захочет получить максимум дальности можно докупить усилитель, желательно сделать антенну на нужную частоту, чтобы был хотя бы диполь 1/4 длины волны.

    Заключение


    Как можно видеть, в передаче FM-радио в принципе, нет ничего сверхсложного, все вполне реализуемо в GNU Radio (хотя без наличия примеров повторить такое было бы непросто, учитывая что система не документирована вообще никак). Ну теперь, по крайней мере, работающий пример у читателей есть.

    Исходные коды блоков под спойлером.

    fm_tx.grc
    <?xml version='1.0' encoding='utf-8'?>
    <?grc format='1' created='3.7.11'?>
    <flow_graph>
      <timestamp>Tue Jun 18 20:27:26 2019</timestamp>
      <block>
        <key>options</key>
        <param>
          <key>author</key>
          <value></value>
        </param>
        <param>
          <key>window_size</key>
          <value></value>
        </param>
        <param>
          <key>category</key>
          <value>[GRC Hier Blocks]</value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>description</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(16, 20)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>generate_options</key>
          <value>wx_gui</value>
        </param>
        <param>
          <key>hier_block_src_path</key>
          <value>.:</value>
        </param>
        <param>
          <key>id</key>
          <value>top_block</value>
        </param>
        <param>
          <key>max_nouts</key>
          <value>0</value>
        </param>
        <param>
          <key>qt_qss_theme</key>
          <value></value>
        </param>
        <param>
          <key>realtime_scheduling</key>
          <value></value>
        </param>
        <param>
          <key>run_command</key>
          <value>{python} -u {filename}</value>
        </param>
        <param>
          <key>run_options</key>
          <value>prompt</value>
        </param>
        <param>
          <key>run</key>
          <value>True</value>
        </param>
        <param>
          <key>thread_safe_setters</key>
          <value></value>
        </param>
        <param>
          <key>title</key>
          <value></value>
        </param>
      </block>
      <block>
        <key>analog_wfm_tx</key>
        <param>
          <key>audio_rate</key>
          <value>80000</value>
        </param>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(592, 76)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>analog_wfm_tx_0</value>
        </param>
        <param>
          <key>max_dev</key>
          <value>75e3</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>fh</key>
          <value>-1.0</value>
        </param>
        <param>
          <key>quad_rate</key>
          <value>320000</value>
        </param>
        <param>
          <key>tau</key>
          <value>75e-6</value>
        </param>
      </block>
      <block>
        <key>blocks_multiply_const_vxx</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>const</key>
          <value>0.45</value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(248, 108)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>blocks_multiply_const_vxx_0</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>vlen</key>
          <value>1</value>
        </param>
      </block>
      <block>
        <key>blocks_wavfile_source</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>file</key>
          <value>D:\MyProjects\GNURadio\sound.wav</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(24, 100)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>blocks_wavfile_source_0</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>nchan</key>
          <value>1</value>
        </param>
        <param>
          <key>repeat</key>
          <value>True</value>
        </param>
      </block>
      <block>
        <key>rational_resampler_xxx</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>decim</key>
          <value>3</value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>fbw</key>
          <value>0</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(408, 84)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>rational_resampler_xxx_0</value>
        </param>
        <param>
          <key>interp</key>
          <value>5</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>taps</key>
          <value></value>
        </param>
        <param>
          <key>type</key>
          <value>fff</value>
        </param>
      </block>
      <block>
        <key>uhd_usrp_sink</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>ant0</key>
          <value></value>
        </param>
        <param>
          <key>bw0</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq0</key>
          <value>95.6e6</value>
        </param>
        <param>
          <key>norm_gain0</key>
          <value>False</value>
        </param>
        <param>
          <key>gain0</key>
          <value>30</value>
        </param>
        <param>
          <key>ant10</key>
          <value></value>
        </param>
        <param>
          <key>bw10</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq10</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain10</key>
          <value>False</value>
        </param>
        <param>
          <key>gain10</key>
          <value>0</value>
        </param>
        <param>
          <key>ant11</key>
          <value></value>
        </param>
        <param>
          <key>bw11</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq11</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain11</key>
          <value>False</value>
        </param>
        <param>
          <key>gain11</key>
          <value>0</value>
        </param>
        <param>
          <key>ant12</key>
          <value></value>
        </param>
        <param>
          <key>bw12</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq12</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain12</key>
          <value>False</value>
        </param>
        <param>
          <key>gain12</key>
          <value>0</value>
        </param>
        <param>
          <key>ant13</key>
          <value></value>
        </param>
        <param>
          <key>bw13</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq13</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain13</key>
          <value>False</value>
        </param>
        <param>
          <key>gain13</key>
          <value>0</value>
        </param>
        <param>
          <key>ant14</key>
          <value></value>
        </param>
        <param>
          <key>bw14</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq14</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain14</key>
          <value>False</value>
        </param>
        <param>
          <key>gain14</key>
          <value>0</value>
        </param>
        <param>
          <key>ant15</key>
          <value></value>
        </param>
        <param>
          <key>bw15</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq15</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain15</key>
          <value>False</value>
        </param>
        <param>
          <key>gain15</key>
          <value>0</value>
        </param>
        <param>
          <key>ant16</key>
          <value></value>
        </param>
        <param>
          <key>bw16</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq16</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain16</key>
          <value>False</value>
        </param>
        <param>
          <key>gain16</key>
          <value>0</value>
        </param>
        <param>
          <key>ant17</key>
          <value></value>
        </param>
        <param>
          <key>bw17</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq17</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain17</key>
          <value>False</value>
        </param>
        <param>
          <key>gain17</key>
          <value>0</value>
        </param>
        <param>
          <key>ant18</key>
          <value></value>
        </param>
        <param>
          <key>bw18</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq18</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain18</key>
          <value>False</value>
        </param>
        <param>
          <key>gain18</key>
          <value>0</value>
        </param>
        <param>
          <key>ant19</key>
          <value></value>
        </param>
        <param>
          <key>bw19</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq19</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain19</key>
          <value>False</value>
        </param>
        <param>
          <key>gain19</key>
          <value>0</value>
        </param>
        <param>
          <key>ant1</key>
          <value></value>
        </param>
        <param>
          <key>bw1</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq1</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain1</key>
          <value>False</value>
        </param>
        <param>
          <key>gain1</key>
          <value>0</value>
        </param>
        <param>
          <key>ant20</key>
          <value></value>
        </param>
        <param>
          <key>bw20</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq20</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain20</key>
          <value>False</value>
        </param>
        <param>
          <key>gain20</key>
          <value>0</value>
        </param>
        <param>
          <key>ant21</key>
          <value></value>
        </param>
        <param>
          <key>bw21</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq21</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain21</key>
          <value>False</value>
        </param>
        <param>
          <key>gain21</key>
          <value>0</value>
        </param>
        <param>
          <key>ant22</key>
          <value></value>
        </param>
        <param>
          <key>bw22</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq22</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain22</key>
          <value>False</value>
        </param>
        <param>
          <key>gain22</key>
          <value>0</value>
        </param>
        <param>
          <key>ant23</key>
          <value></value>
        </param>
        <param>
          <key>bw23</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq23</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain23</key>
          <value>False</value>
        </param>
        <param>
          <key>gain23</key>
          <value>0</value>
        </param>
        <param>
          <key>ant24</key>
          <value></value>
        </param>
        <param>
          <key>bw24</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq24</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain24</key>
          <value>False</value>
        </param>
        <param>
          <key>gain24</key>
          <value>0</value>
        </param>
        <param>
          <key>ant25</key>
          <value></value>
        </param>
        <param>
          <key>bw25</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq25</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain25</key>
          <value>False</value>
        </param>
        <param>
          <key>gain25</key>
          <value>0</value>
        </param>
        <param>
          <key>ant26</key>
          <value></value>
        </param>
        <param>
          <key>bw26</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq26</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain26</key>
          <value>False</value>
        </param>
        <param>
          <key>gain26</key>
          <value>0</value>
        </param>
        <param>
          <key>ant27</key>
          <value></value>
        </param>
        <param>
          <key>bw27</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq27</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain27</key>
          <value>False</value>
        </param>
        <param>
          <key>gain27</key>
          <value>0</value>
        </param>
        <param>
          <key>ant28</key>
          <value></value>
        </param>
        <param>
          <key>bw28</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq28</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain28</key>
          <value>False</value>
        </param>
        <param>
          <key>gain28</key>
          <value>0</value>
        </param>
        <param>
          <key>ant29</key>
          <value></value>
        </param>
        <param>
          <key>bw29</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq29</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain29</key>
          <value>False</value>
        </param>
        <param>
          <key>gain29</key>
          <value>0</value>
        </param>
        <param>
          <key>ant2</key>
          <value></value>
        </param>
        <param>
          <key>bw2</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq2</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain2</key>
          <value>False</value>
        </param>
        <param>
          <key>gain2</key>
          <value>0</value>
        </param>
        <param>
          <key>ant30</key>
          <value></value>
        </param>
        <param>
          <key>bw30</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq30</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain30</key>
          <value>False</value>
        </param>
        <param>
          <key>gain30</key>
          <value>0</value>
        </param>
        <param>
          <key>ant31</key>
          <value></value>
        </param>
        <param>
          <key>bw31</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq31</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain31</key>
          <value>False</value>
        </param>
        <param>
          <key>gain31</key>
          <value>0</value>
        </param>
        <param>
          <key>ant3</key>
          <value></value>
        </param>
        <param>
          <key>bw3</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq3</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain3</key>
          <value>False</value>
        </param>
        <param>
          <key>gain3</key>
          <value>0</value>
        </param>
        <param>
          <key>ant4</key>
          <value></value>
        </param>
        <param>
          <key>bw4</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq4</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain4</key>
          <value>False</value>
        </param>
        <param>
          <key>gain4</key>
          <value>0</value>
        </param>
        <param>
          <key>ant5</key>
          <value></value>
        </param>
        <param>
          <key>bw5</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq5</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain5</key>
          <value>False</value>
        </param>
        <param>
          <key>gain5</key>
          <value>0</value>
        </param>
        <param>
          <key>ant6</key>
          <value></value>
        </param>
        <param>
          <key>bw6</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq6</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain6</key>
          <value>False</value>
        </param>
        <param>
          <key>gain6</key>
          <value>0</value>
        </param>
        <param>
          <key>ant7</key>
          <value></value>
        </param>
        <param>
          <key>bw7</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq7</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain7</key>
          <value>False</value>
        </param>
        <param>
          <key>gain7</key>
          <value>0</value>
        </param>
        <param>
          <key>ant8</key>
          <value></value>
        </param>
        <param>
          <key>bw8</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq8</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain8</key>
          <value>False</value>
        </param>
        <param>
          <key>gain8</key>
          <value>0</value>
        </param>
        <param>
          <key>ant9</key>
          <value></value>
        </param>
        <param>
          <key>bw9</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq9</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain9</key>
          <value>False</value>
        </param>
        <param>
          <key>gain9</key>
          <value>0</value>
        </param>
        <param>
          <key>clock_rate</key>
          <value>0.0</value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>dev_addr</key>
          <value>""</value>
        </param>
        <param>
          <key>dev_args</key>
          <value>""</value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(848, 68)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>uhd_usrp_sink_0</value>
        </param>
        <param>
          <key>type</key>
          <value>fc32</value>
        </param>
        <param>
          <key>clock_source0</key>
          <value></value>
        </param>
        <param>
          <key>sd_spec0</key>
          <value></value>
        </param>
        <param>
          <key>time_source0</key>
          <value></value>
        </param>
        <param>
          <key>clock_source1</key>
          <value></value>
        </param>
        <param>
          <key>sd_spec1</key>
          <value></value>
        </param>
        <param>
          <key>time_source1</key>
          <value></value>
        </param>
        <param>
          <key>clock_source2</key>
          <value></value>
        </param>
        <param>
          <key>sd_spec2</key>
          <value></value>
        </param>
        <param>
          <key>time_source2</key>
          <value></value>
        </param>
        <param>
          <key>clock_source3</key>
          <value></value>
        </param>
        <param>
          <key>sd_spec3</key>
          <value></value>
        </param>
        <param>
          <key>time_source3</key>
          <value></value>
        </param>
        <param>
          <key>clock_source4</key>
          <value></value>
        </param>
        <param>
          <key>sd_spec4</key>
          <value></value>
        </param>
        <param>
          <key>time_source4</key>
          <value></value>
        </param>
        <param>
          <key>clock_source5</key>
          <value></value>
        </param>
        <param>
          <key>sd_spec5</key>
          <value></value>
        </param>
        <param>
          <key>time_source5</key>
          <value></value>
        </param>
        <param>
          <key>clock_source6</key>
          <value></value>
        </param>
        <param>
          <key>sd_spec6</key>
          <value></value>
        </param>
        <param>
          <key>time_source6</key>
          <value></value>
        </param>
        <param>
          <key>clock_source7</key>
          <value></value>
        </param>
        <param>
          <key>sd_spec7</key>
          <value></value>
        </param>
        <param>
          <key>time_source7</key>
          <value></value>
        </param>
        <param>
          <key>nchan</key>
          <value>1</value>
        </param>
        <param>
          <key>num_mboards</key>
          <value>1</value>
        </param>
        <param>
          <key>samp_rate</key>
          <value>320000</value>
        </param>
        <param>
          <key>hide_cmd_port</key>
          <value>False</value>
        </param>
        <param>
          <key>hide_lo_controls</key>
          <value>True</value>
        </param>
        <param>
          <key>stream_args</key>
          <value></value>
        </param>
        <param>
          <key>stream_chans</key>
          <value>[]</value>
        </param>
        <param>
          <key>sync</key>
          <value></value>
        </param>
        <param>
          <key>len_tag_name</key>
          <value></value>
        </param>
        <param>
          <key>otw</key>
          <value></value>
        </param>
      </block>
      <connection>
        <source_block_id>analog_wfm_tx_0</source_block_id>
        <sink_block_id>uhd_usrp_sink_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>blocks_multiply_const_vxx_0</source_block_id>
        <sink_block_id>rational_resampler_xxx_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>blocks_wavfile_source_0</source_block_id>
        <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>rational_resampler_xxx_0</source_block_id>
        <sink_block_id>analog_wfm_tx_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
    </flow_graph>
    

    fm_tx_rds.grc
    <?xml version='1.0' encoding='utf-8'?>
    <?grc format='1' created='3.7.11'?>
    <flow_graph>
      <timestamp>Thu Aug 28 08:28:15 2014</timestamp>
      <block>
        <key>options</key>
        <param>
          <key>author</key>
          <value></value>
        </param>
        <param>
          <key>window_size</key>
          <value>1600, 2048</value>
        </param>
        <param>
          <key>category</key>
          <value>RDS</value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>description</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(104, 4)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>generate_options</key>
          <value>wx_gui</value>
        </param>
        <param>
          <key>hier_block_src_path</key>
          <value>.:</value>
        </param>
        <param>
          <key>id</key>
          <value>rds_tx</value>
        </param>
        <param>
          <key>max_nouts</key>
          <value>0</value>
        </param>
        <param>
          <key>qt_qss_theme</key>
          <value></value>
        </param>
        <param>
          <key>realtime_scheduling</key>
          <value></value>
        </param>
        <param>
          <key>run_command</key>
          <value>{python} -u {filename}</value>
        </param>
        <param>
          <key>run_options</key>
          <value>prompt</value>
        </param>
        <param>
          <key>run</key>
          <value>True</value>
        </param>
        <param>
          <key>thread_safe_setters</key>
          <value></value>
        </param>
        <param>
          <key>title</key>
          <value></value>
        </param>
      </block>
      <block>
        <key>variable</key>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(352, 4)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>data_rate</value>
        </param>
        <param>
          <key>value</key>
          <value>380000</value>
        </param>
      </block>
      <block>
        <key>variable</key>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(440, 4)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>fm_max_dev</value>
        </param>
        <param>
          <key>value</key>
          <value>80e3</value>
        </param>
      </block>
      <block>
        <key>variable</key>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(264, 4)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>freq</value>
        </param>
        <param>
          <key>value</key>
          <value>95.6e6</value>
        </param>
      </block>
      <block>
        <key>variable_slider</key>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>converver</key>
          <value>float_converter</value>
        </param>
        <param>
          <key>value</key>
          <value>.75</value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(544, 4)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>grid_pos</key>
          <value></value>
        </param>
        <param>
          <key>id</key>
          <value>input_gain</value>
        </param>
        <param>
          <key>label</key>
          <value></value>
        </param>
        <param>
          <key>max</key>
          <value>10</value>
        </param>
        <param>
          <key>min</key>
          <value>0</value>
        </param>
        <param>
          <key>notebook</key>
          <value></value>
        </param>
        <param>
          <key>num_steps</key>
          <value>100</value>
        </param>
        <param>
          <key>style</key>
          <value>wx.SL_HORIZONTAL</value>
        </param>
      </block>
      <block>
        <key>variable_slider</key>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>converver</key>
          <value>float_converter</value>
        </param>
        <param>
          <key>value</key>
          <value>.09</value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(928, 4)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>grid_pos</key>
          <value></value>
        </param>
        <param>
          <key>id</key>
          <value>pilot_gain</value>
        </param>
        <param>
          <key>label</key>
          <value></value>
        </param>
        <param>
          <key>max</key>
          <value>3</value>
        </param>
        <param>
          <key>min</key>
          <value>0</value>
        </param>
        <param>
          <key>notebook</key>
          <value></value>
        </param>
        <param>
          <key>num_steps</key>
          <value>100</value>
        </param>
        <param>
          <key>style</key>
          <value>wx.SL_HORIZONTAL</value>
        </param>
      </block>
      <block>
        <key>variable_slider</key>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>converver</key>
          <value>float_converter</value>
        </param>
        <param>
          <key>value</key>
          <value>.05</value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(800, 4)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>grid_pos</key>
          <value></value>
        </param>
        <param>
          <key>id</key>
          <value>rds_gain</value>
        </param>
        <param>
          <key>label</key>
          <value></value>
        </param>
        <param>
          <key>max</key>
          <value>3</value>
        </param>
        <param>
          <key>min</key>
          <value>0</value>
        </param>
        <param>
          <key>notebook</key>
          <value></value>
        </param>
        <param>
          <key>num_steps</key>
          <value>100</value>
        </param>
        <param>
          <key>style</key>
          <value>wx.SL_HORIZONTAL</value>
        </param>
      </block>
      <block>
        <key>variable_slider</key>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>converver</key>
          <value>float_converter</value>
        </param>
        <param>
          <key>value</key>
          <value>.45</value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(672, 4)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>grid_pos</key>
          <value></value>
        </param>
        <param>
          <key>id</key>
          <value>stereo_gain</value>
        </param>
        <param>
          <key>label</key>
          <value></value>
        </param>
        <param>
          <key>max</key>
          <value>3</value>
        </param>
        <param>
          <key>min</key>
          <value>0</value>
        </param>
        <param>
          <key>notebook</key>
          <value></value>
        </param>
        <param>
          <key>num_steps</key>
          <value>100</value>
        </param>
        <param>
          <key>style</key>
          <value>wx.SL_HORIZONTAL</value>
        </param>
      </block>
      <block>
        <key>blocks_multiply_const_vxx</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>const</key>
          <value>input_gain</value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(392, 764)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>blocks_multiply_const_vxx_0</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>vlen</key>
          <value>1</value>
        </param>
      </block>
      <block>
        <key>blocks_multiply_const_vxx</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>const</key>
          <value>rds_gain</value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>1</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(948, 432)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>270</value>
        </param>
        <param>
          <key>id</key>
          <value>blocks_multiply_const_vxx_0_0</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>vlen</key>
          <value>1</value>
        </param>
      </block>
      <block>
        <key>blocks_multiply_const_vxx</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>const</key>
          <value>pilot_gain</value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(200, 300)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>blocks_multiply_const_vxx_0_0_1</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>vlen</key>
          <value>1</value>
        </param>
      </block>
      <block>
        <key>blocks_multiply_const_vxx</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>const</key>
          <value>input_gain</value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(400, 812)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>blocks_multiply_const_vxx_0_1</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>vlen</key>
          <value>1</value>
        </param>
      </block>
      <block>
        <key>blocks_repeat</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>1</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(1080, 172)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>blocks_repeat_0</value>
        </param>
        <param>
          <key>interp</key>
          <value>160</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>vlen</key>
          <value>1</value>
        </param>
      </block>
      <block>
        <key>blocks_socket_pdu</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>1</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(24, 148)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>host</key>
          <value></value>
        </param>
        <param>
          <key>id</key>
          <value>blocks_socket_pdu_0</value>
        </param>
        <param>
          <key>mtu</key>
          <value>10000</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>port</key>
          <value>52001</value>
        </param>
        <param>
          <key>tcp_no_delay</key>
          <value>False</value>
        </param>
        <param>
          <key>type</key>
          <value>"TCP_SERVER"</value>
        </param>
      </block>
      <block>
        <key>blocks_throttle</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(232, 764)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>blocks_throttle_1</value>
        </param>
        <param>
          <key>ignoretag</key>
          <value>True</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>samples_per_second</key>
          <value>48000</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>vlen</key>
          <value>1</value>
        </param>
      </block>
      <block>
        <key>blocks_throttle</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(240, 812)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>blocks_throttle_2</value>
        </param>
        <param>
          <key>ignoretag</key>
          <value>True</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>samples_per_second</key>
          <value>48000</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>vlen</key>
          <value>1</value>
        </param>
      </block>
      <block>
        <key>blocks_wavfile_source</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>1</value>
        </param>
        <param>
          <key>file</key>
          <value>D:\MyProjects\GNURadio\sound.wav</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(16, 768)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>blocks_wavfile_source_0</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>nchan</key>
          <value>2</value>
        </param>
        <param>
          <key>repeat</key>
          <value>True</value>
        </param>
      </block>
      <block>
        <key>blocks_add_xx</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(472, 552)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>gr_add_xx_0</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>num_inputs</key>
          <value>2</value>
        </param>
        <param>
          <key>vlen</key>
          <value>1</value>
        </param>
      </block>
      <block>
        <key>blocks_add_xx</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(840, 640)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>270</value>
        </param>
        <param>
          <key>id</key>
          <value>gr_add_xx_1</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>num_inputs</key>
          <value>4</value>
        </param>
        <param>
          <key>vlen</key>
          <value>1</value>
        </param>
      </block>
      <block>
        <key>blocks_char_to_float</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>1</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(944, 172)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>gr_char_to_float_0</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>scale</key>
          <value>1</value>
        </param>
        <param>
          <key>vlen</key>
          <value>1</value>
        </param>
      </block>
      <block>
        <key>digital_diff_encoder_bb</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>1</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(400, 172)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>gr_diff_encoder_bb_0</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>modulus</key>
          <value>2</value>
        </param>
      </block>
      <block>
        <key>analog_frequency_modulator_fc</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(944, 764)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>gr_frequency_modulator_fc_0</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>sensitivity</key>
          <value>2*math.pi*fm_max_dev/data_rate</value>
        </param>
      </block>
      <block>
        <key>digital_map_bb</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>1</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(824, 172)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>gr_map_bb_0</value>
        </param>
        <param>
          <key>map</key>
          <value>[-1,1]</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
      </block>
      <block>
        <key>digital_map_bb</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>1</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(576, 172)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>gr_map_bb_1</value>
        </param>
        <param>
          <key>map</key>
          <value>[1,2]</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
      </block>
      <block>
        <key>blocks_multiply_xx</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>1</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(1432, 232)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>gr_multiply_xx_0</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>num_inputs</key>
          <value>2</value>
        </param>
        <param>
          <key>vlen</key>
          <value>1</value>
        </param>
      </block>
      <block>
        <key>blocks_multiply_xx</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(768, 360)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>gr_multiply_xx_1</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>num_inputs</key>
          <value>2</value>
        </param>
        <param>
          <key>vlen</key>
          <value>1</value>
        </param>
      </block>
      <block>
        <key>gr_rds_encoder</key>
        <param>
          <key>af1</key>
          <value>89.8e6</value>
        </param>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>1</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(160, 96)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>gr_rds_encoder_0</value>
        </param>
        <param>
          <key>ms</key>
          <value>True</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>pi_country_code</key>
          <value>13</value>
        </param>
        <param>
          <key>pi_coverage_area</key>
          <value>0</value>
        </param>
        <param>
          <key>pi_reference_number</key>
          <value>147</value>
        </param>
        <param>
          <key>ps</key>
          <value>SDRRADIO</value>
        </param>
        <param>
          <key>pty_locale</key>
          <value>0</value>
        </param>
        <param>
          <key>pty</key>
          <value>0</value>
        </param>
        <param>
          <key>radiotext</key>
          <value>Hello HABR!</value>
        </param>
        <param>
          <key>ta</key>
          <value>False</value>
        </param>
        <param>
          <key>tp</key>
          <value>True</value>
        </param>
      </block>
      <block>
        <key>analog_sig_source_x</key>
        <param>
          <key>amp</key>
          <value>1</value>
        </param>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>freq</key>
          <value>38e3</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(24, 372)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>gr_sig_source_x_0</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>offset</key>
          <value>0</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>samp_rate</key>
          <value>data_rate</value>
        </param>
        <param>
          <key>waveform</key>
          <value>analog.GR_SIN_WAVE</value>
        </param>
      </block>
      <block>
        <key>analog_sig_source_x</key>
        <param>
          <key>amp</key>
          <value>1</value>
        </param>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>1</value>
        </param>
        <param>
          <key>freq</key>
          <value>57e3</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(1264, 100)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>gr_sig_source_x_0_0</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>offset</key>
          <value>0</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>samp_rate</key>
          <value>data_rate</value>
        </param>
        <param>
          <key>waveform</key>
          <value>analog.GR_SIN_WAVE</value>
        </param>
      </block>
      <block>
        <key>analog_sig_source_x</key>
        <param>
          <key>amp</key>
          <value>1</value>
        </param>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>freq</key>
          <value>19e3</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(24, 268)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>gr_sig_source_x_0_1</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>offset</key>
          <value>0</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>samp_rate</key>
          <value>data_rate</value>
        </param>
        <param>
          <key>waveform</key>
          <value>analog.GR_SIN_WAVE</value>
        </param>
      </block>
      <block>
        <key>blocks_sub_xx</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(448, 456)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>gr_sub_xx_0</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>num_inputs</key>
          <value>2</value>
        </param>
        <param>
          <key>vlen</key>
          <value>1</value>
        </param>
      </block>
      <block>
        <key>blocks_unpack_k_bits_bb</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>1</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(680, 172)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>gr_unpack_k_bits_bb_0</value>
        </param>
        <param>
          <key>k</key>
          <value>2</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
      </block>
      <block>
        <key>import</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(8, 4)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>import_0</value>
        </param>
        <param>
          <key>import</key>
          <value>import math</value>
        </param>
      </block>
      <block>
        <key>low_pass_filter</key>
        <param>
          <key>beta</key>
          <value>6.76</value>
        </param>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>cutoff_freq</key>
          <value>2.5e3</value>
        </param>
        <param>
          <key>decim</key>
          <value>1</value>
        </param>
        <param>
          <key>_enabled</key>
          <value>1</value>
        </param>
        <param>
          <key>type</key>
          <value>interp_fir_filter_fff</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(1248, 212)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>gain</key>
          <value>1</value>
        </param>
        <param>
          <key>id</key>
          <value>low_pass_filter_0</value>
        </param>
        <param>
          <key>interp</key>
          <value>1</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>samp_rate</key>
          <value>data_rate</value>
        </param>
        <param>
          <key>width</key>
          <value>.5e3</value>
        </param>
        <param>
          <key>win</key>
          <value>firdes.WIN_HAMMING</value>
        </param>
      </block>
      <block>
        <key>low_pass_filter</key>
        <param>
          <key>beta</key>
          <value>6.76</value>
        </param>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>cutoff_freq</key>
          <value>15e3</value>
        </param>
        <param>
          <key>decim</key>
          <value>1</value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>type</key>
          <value>interp_fir_filter_fff</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(584, 532)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>gain</key>
          <value>1</value>
        </param>
        <param>
          <key>id</key>
          <value>low_pass_filter_0_0</value>
        </param>
        <param>
          <key>interp</key>
          <value>1</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>samp_rate</key>
          <value>data_rate</value>
        </param>
        <param>
          <key>width</key>
          <value>2e3</value>
        </param>
        <param>
          <key>win</key>
          <value>firdes.WIN_HAMMING</value>
        </param>
      </block>
      <block>
        <key>low_pass_filter</key>
        <param>
          <key>beta</key>
          <value>6.76</value>
        </param>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>cutoff_freq</key>
          <value>15e3</value>
        </param>
        <param>
          <key>decim</key>
          <value>1</value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>type</key>
          <value>interp_fir_filter_fff</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(584, 396)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>gain</key>
          <value>1</value>
        </param>
        <param>
          <key>id</key>
          <value>low_pass_filter_0_0_0</value>
        </param>
        <param>
          <key>interp</key>
          <value>1</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>samp_rate</key>
          <value>data_rate</value>
        </param>
        <param>
          <key>width</key>
          <value>2e3</value>
        </param>
        <param>
          <key>win</key>
          <value>firdes.WIN_HAMMING</value>
        </param>
      </block>
      <block>
        <key>rational_resampler_xxx</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>decim</key>
          <value>6</value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>fbw</key>
          <value>0</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(168, 444)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>rational_resampler_xxx_0</value>
        </param>
        <param>
          <key>interp</key>
          <value>48</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>taps</key>
          <value></value>
        </param>
        <param>
          <key>type</key>
          <value>fff</value>
        </param>
      </block>
      <block>
        <key>rational_resampler_xxx</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>decim</key>
          <value>6</value>
        </param>
        <param>
          <key>_enabled</key>
          <value>True</value>
        </param>
        <param>
          <key>fbw</key>
          <value>0</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(160, 540)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>rational_resampler_xxx_0_0</value>
        </param>
        <param>
          <key>interp</key>
          <value>48</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>taps</key>
          <value></value>
        </param>
        <param>
          <key>type</key>
          <value>fff</value>
        </param>
      </block>
      <block>
        <key>rational_resampler_xxx</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>decim</key>
          <value>38</value>
        </param>
        <param>
          <key>_enabled</key>
          <value>1</value>
        </param>
        <param>
          <key>fbw</key>
          <value>0</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(1104, 740)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>rational_resampler_xxx_1</value>
        </param>
        <param>
          <key>interp</key>
          <value>50</value>
        </param>
        <param>
          <key>maxoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>minoutbuf</key>
          <value>0</value>
        </param>
        <param>
          <key>taps</key>
          <value></value>
        </param>
        <param>
          <key>type</key>
          <value>ccc</value>
        </param>
      </block>
      <block>
        <key>uhd_usrp_sink</key>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>ant0</key>
          <value>TX/RX</value>
        </param>
        <param>
          <key>bw0</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq0</key>
          <value>freq</value>
        </param>
        <param>
          <key>norm_gain0</key>
          <value>False</value>
        </param>
        <param>
          <key>gain0</key>
          <value>50</value>
        </param>
        <param>
          <key>ant10</key>
          <value></value>
        </param>
        <param>
          <key>bw10</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq10</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain10</key>
          <value>False</value>
        </param>
        <param>
          <key>gain10</key>
          <value>0</value>
        </param>
        <param>
          <key>ant11</key>
          <value></value>
        </param>
        <param>
          <key>bw11</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq11</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain11</key>
          <value>False</value>
        </param>
        <param>
          <key>gain11</key>
          <value>0</value>
        </param>
        <param>
          <key>ant12</key>
          <value></value>
        </param>
        <param>
          <key>bw12</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq12</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain12</key>
          <value>False</value>
        </param>
        <param>
          <key>gain12</key>
          <value>0</value>
        </param>
        <param>
          <key>ant13</key>
          <value></value>
        </param>
        <param>
          <key>bw13</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq13</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain13</key>
          <value>False</value>
        </param>
        <param>
          <key>gain13</key>
          <value>0</value>
        </param>
        <param>
          <key>ant14</key>
          <value></value>
        </param>
        <param>
          <key>bw14</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq14</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain14</key>
          <value>False</value>
        </param>
        <param>
          <key>gain14</key>
          <value>0</value>
        </param>
        <param>
          <key>ant15</key>
          <value></value>
        </param>
        <param>
          <key>bw15</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq15</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain15</key>
          <value>False</value>
        </param>
        <param>
          <key>gain15</key>
          <value>0</value>
        </param>
        <param>
          <key>ant16</key>
          <value></value>
        </param>
        <param>
          <key>bw16</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq16</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain16</key>
          <value>False</value>
        </param>
        <param>
          <key>gain16</key>
          <value>0</value>
        </param>
        <param>
          <key>ant17</key>
          <value></value>
        </param>
        <param>
          <key>bw17</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq17</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain17</key>
          <value>False</value>
        </param>
        <param>
          <key>gain17</key>
          <value>0</value>
        </param>
        <param>
          <key>ant18</key>
          <value></value>
        </param>
        <param>
          <key>bw18</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq18</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain18</key>
          <value>False</value>
        </param>
        <param>
          <key>gain18</key>
          <value>0</value>
        </param>
        <param>
          <key>ant19</key>
          <value></value>
        </param>
        <param>
          <key>bw19</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq19</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain19</key>
          <value>False</value>
        </param>
        <param>
          <key>gain19</key>
          <value>0</value>
        </param>
        <param>
          <key>ant1</key>
          <value></value>
        </param>
        <param>
          <key>bw1</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq1</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain1</key>
          <value>False</value>
        </param>
        <param>
          <key>gain1</key>
          <value>0</value>
        </param>
        <param>
          <key>ant20</key>
          <value></value>
        </param>
        <param>
          <key>bw20</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq20</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain20</key>
          <value>False</value>
        </param>
        <param>
          <key>gain20</key>
          <value>0</value>
        </param>
        <param>
          <key>ant21</key>
          <value></value>
        </param>
        <param>
          <key>bw21</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq21</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain21</key>
          <value>False</value>
        </param>
        <param>
          <key>gain21</key>
          <value>0</value>
        </param>
        <param>
          <key>ant22</key>
          <value></value>
        </param>
        <param>
          <key>bw22</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq22</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain22</key>
          <value>False</value>
        </param>
        <param>
          <key>gain22</key>
          <value>0</value>
        </param>
        <param>
          <key>ant23</key>
          <value></value>
        </param>
        <param>
          <key>bw23</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq23</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain23</key>
          <value>False</value>
        </param>
        <param>
          <key>gain23</key>
          <value>0</value>
        </param>
        <param>
          <key>ant24</key>
          <value></value>
        </param>
        <param>
          <key>bw24</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq24</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain24</key>
          <value>False</value>
        </param>
        <param>
          <key>gain24</key>
          <value>0</value>
        </param>
        <param>
          <key>ant25</key>
          <value></value>
        </param>
        <param>
          <key>bw25</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq25</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain25</key>
          <value>False</value>
        </param>
        <param>
          <key>gain25</key>
          <value>0</value>
        </param>
        <param>
          <key>ant26</key>
          <value></value>
        </param>
        <param>
          <key>bw26</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq26</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain26</key>
          <value>False</value>
        </param>
        <param>
          <key>gain26</key>
          <value>0</value>
        </param>
        <param>
          <key>ant27</key>
          <value></value>
        </param>
        <param>
          <key>bw27</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq27</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain27</key>
          <value>False</value>
        </param>
        <param>
          <key>gain27</key>
          <value>0</value>
        </param>
        <param>
          <key>ant28</key>
          <value></value>
        </param>
        <param>
          <key>bw28</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq28</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain28</key>
          <value>False</value>
        </param>
        <param>
          <key>gain28</key>
          <value>0</value>
        </param>
        <param>
          <key>ant29</key>
          <value></value>
        </param>
        <param>
          <key>bw29</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq29</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain29</key>
          <value>False</value>
        </param>
        <param>
          <key>gain29</key>
          <value>0</value>
        </param>
        <param>
          <key>ant2</key>
          <value></value>
        </param>
        <param>
          <key>bw2</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq2</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain2</key>
          <value>False</value>
        </param>
        <param>
          <key>gain2</key>
          <value>0</value>
        </param>
        <param>
          <key>ant30</key>
          <value></value>
        </param>
        <param>
          <key>bw30</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq30</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain30</key>
          <value>False</value>
        </param>
        <param>
          <key>gain30</key>
          <value>0</value>
        </param>
        <param>
          <key>ant31</key>
          <value></value>
        </param>
        <param>
          <key>bw31</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq31</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain31</key>
          <value>False</value>
        </param>
        <param>
          <key>gain31</key>
          <value>0</value>
        </param>
        <param>
          <key>ant3</key>
          <value></value>
        </param>
        <param>
          <key>bw3</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq3</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain3</key>
          <value>False</value>
        </param>
        <param>
          <key>gain3</key>
          <value>0</value>
        </param>
        <param>
          <key>ant4</key>
          <value></value>
        </param>
        <param>
          <key>bw4</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq4</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain4</key>
          <value>False</value>
        </param>
        <param>
          <key>gain4</key>
          <value>0</value>
        </param>
        <param>
          <key>ant5</key>
          <value></value>
        </param>
        <param>
          <key>bw5</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq5</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain5</key>
          <value>False</value>
        </param>
        <param>
          <key>gain5</key>
          <value>0</value>
        </param>
        <param>
          <key>ant6</key>
          <value></value>
        </param>
        <param>
          <key>bw6</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq6</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain6</key>
          <value>False</value>
        </param>
        <param>
          <key>gain6</key>
          <value>0</value>
        </param>
        <param>
          <key>ant7</key>
          <value></value>
        </param>
        <param>
          <key>bw7</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq7</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain7</key>
          <value>False</value>
        </param>
        <param>
          <key>gain7</key>
          <value>0</value>
        </param>
        <param>
          <key>ant8</key>
          <value></value>
        </param>
        <param>
          <key>bw8</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq8</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain8</key>
          <value>False</value>
        </param>
        <param>
          <key>gain8</key>
          <value>0</value>
        </param>
        <param>
          <key>ant9</key>
          <value></value>
        </param>
        <param>
          <key>bw9</key>
          <value>0</value>
        </param>
        <param>
          <key>center_freq9</key>
          <value>0</value>
        </param>
        <param>
          <key>norm_gain9</key>
          <value>False</value>
        </param>
        <param>
          <key>gain9</key>
          <value>0</value>
        </param>
        <param>
          <key>clock_rate</key>
          <value>0.0</value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>dev_addr</key>
          <value></value>
        </param>
        <param>
          <key>dev_args</key>
          <value>""</value>
        </param>
        <param>
          <key>_enabled</key>
          <value>1</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(1296, 724)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>id</key>
          <value>uhd_usrp_sink</value>
        </param>
        <param>
          <key>type</key>
          <value>fc32</value>
        </param>
        <param>
          <key>clock_source0</key>
          <value></value>
        </param>
        <param>
          <key>sd_spec0</key>
          <value></value>
        </param>
        <param>
          <key>time_source0</key>
          <value></value>
        </param>
        <param>
          <key>clock_source1</key>
          <value></value>
        </param>
        <param>
          <key>sd_spec1</key>
          <value></value>
        </param>
        <param>
          <key>time_source1</key>
          <value></value>
        </param>
        <param>
          <key>clock_source2</key>
          <value></value>
        </param>
        <param>
          <key>sd_spec2</key>
          <value></value>
        </param>
        <param>
          <key>time_source2</key>
          <value></value>
        </param>
        <param>
          <key>clock_source3</key>
          <value></value>
        </param>
        <param>
          <key>sd_spec3</key>
          <value></value>
        </param>
        <param>
          <key>time_source3</key>
          <value></value>
        </param>
        <param>
          <key>clock_source4</key>
          <value></value>
        </param>
        <param>
          <key>sd_spec4</key>
          <value></value>
        </param>
        <param>
          <key>time_source4</key>
          <value></value>
        </param>
        <param>
          <key>clock_source5</key>
          <value></value>
        </param>
        <param>
          <key>sd_spec5</key>
          <value></value>
        </param>
        <param>
          <key>time_source5</key>
          <value></value>
        </param>
        <param>
          <key>clock_source6</key>
          <value></value>
        </param>
        <param>
          <key>sd_spec6</key>
          <value></value>
        </param>
        <param>
          <key>time_source6</key>
          <value></value>
        </param>
        <param>
          <key>clock_source7</key>
          <value></value>
        </param>
        <param>
          <key>sd_spec7</key>
          <value></value>
        </param>
        <param>
          <key>time_source7</key>
          <value></value>
        </param>
        <param>
          <key>nchan</key>
          <value>1</value>
        </param>
        <param>
          <key>num_mboards</key>
          <value>1</value>
        </param>
        <param>
          <key>samp_rate</key>
          <value>500000</value>
        </param>
        <param>
          <key>hide_cmd_port</key>
          <value>False</value>
        </param>
        <param>
          <key>hide_lo_controls</key>
          <value>True</value>
        </param>
        <param>
          <key>stream_args</key>
          <value></value>
        </param>
        <param>
          <key>stream_chans</key>
          <value>[]</value>
        </param>
        <param>
          <key>sync</key>
          <value></value>
        </param>
        <param>
          <key>len_tag_name</key>
          <value></value>
        </param>
        <param>
          <key>otw</key>
          <value></value>
        </param>
      </block>
      <block>
        <key>wxgui_fftsink2</key>
        <param>
          <key>avg_alpha</key>
          <value>0</value>
        </param>
        <param>
          <key>average</key>
          <value>False</value>
        </param>
        <param>
          <key>baseband_freq</key>
          <value>0</value>
        </param>
        <param>
          <key>alias</key>
          <value></value>
        </param>
        <param>
          <key>comment</key>
          <value></value>
        </param>
        <param>
          <key>affinity</key>
          <value></value>
        </param>
        <param>
          <key>_enabled</key>
          <value>1</value>
        </param>
        <param>
          <key>fft_size</key>
          <value>1024</value>
        </param>
        <param>
          <key>freqvar</key>
          <value>None</value>
        </param>
        <param>
          <key>_coordinate</key>
          <value>(1104, 520)</value>
        </param>
        <param>
          <key>_rotation</key>
          <value>0</value>
        </param>
        <param>
          <key>grid_pos</key>
          <value></value>
        </param>
        <param>
          <key>id</key>
          <value>wxgui_fftsink2_0</value>
        </param>
        <param>
          <key>notebook</key>
          <value></value>
        </param>
        <param>
          <key>peak_hold</key>
          <value>False</value>
        </param>
        <param>
          <key>ref_level</key>
          <value>0</value>
        </param>
        <param>
          <key>ref_scale</key>
          <value>2.0</value>
        </param>
        <param>
          <key>fft_rate</key>
          <value>30</value>
        </param>
        <param>
          <key>samp_rate</key>
          <value>data_rate</value>
        </param>
        <param>
          <key>title</key>
          <value>FFT Plot</value>
        </param>
        <param>
          <key>type</key>
          <value>float</value>
        </param>
        <param>
          <key>win_size</key>
          <value></value>
        </param>
        <param>
          <key>win</key>
          <value>None</value>
        </param>
        <param>
          <key>y_divs</key>
          <value>10</value>
        </param>
        <param>
          <key>y_per_div</key>
          <value>20</value>
        </param>
      </block>
      <connection>
        <source_block_id>blocks_multiply_const_vxx_0</source_block_id>
        <sink_block_id>rational_resampler_xxx_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>blocks_multiply_const_vxx_0_0</source_block_id>
        <sink_block_id>gr_add_xx_1</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>blocks_multiply_const_vxx_0_0_1</source_block_id>
        <sink_block_id>gr_add_xx_1</sink_block_id>
        <source_key>0</source_key>
        <sink_key>1</sink_key>
      </connection>
      <connection>
        <source_block_id>blocks_multiply_const_vxx_0_1</source_block_id>
        <sink_block_id>rational_resampler_xxx_0_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>blocks_repeat_0</source_block_id>
        <sink_block_id>low_pass_filter_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>blocks_socket_pdu_0</source_block_id>
        <sink_block_id>gr_rds_encoder_0</sink_block_id>
        <source_key>pdus</source_key>
        <sink_key>rds in</sink_key>
      </connection>
      <connection>
        <source_block_id>blocks_throttle_1</source_block_id>
        <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>blocks_throttle_2</source_block_id>
        <sink_block_id>blocks_multiply_const_vxx_0_1</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>blocks_wavfile_source_0</source_block_id>
        <sink_block_id>blocks_throttle_1</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>blocks_wavfile_source_0</source_block_id>
        <sink_block_id>blocks_throttle_2</sink_block_id>
        <source_key>1</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>gr_add_xx_0</source_block_id>
        <sink_block_id>low_pass_filter_0_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>gr_add_xx_1</source_block_id>
        <sink_block_id>gr_frequency_modulator_fc_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>gr_add_xx_1</source_block_id>
        <sink_block_id>wxgui_fftsink2_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>gr_char_to_float_0</source_block_id>
        <sink_block_id>blocks_repeat_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>gr_diff_encoder_bb_0</source_block_id>
        <sink_block_id>gr_map_bb_1</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>gr_frequency_modulator_fc_0</source_block_id>
        <sink_block_id>rational_resampler_xxx_1</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>gr_map_bb_0</source_block_id>
        <sink_block_id>gr_char_to_float_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>gr_map_bb_1</source_block_id>
        <sink_block_id>gr_unpack_k_bits_bb_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>gr_multiply_xx_0</source_block_id>
        <sink_block_id>blocks_multiply_const_vxx_0_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>gr_multiply_xx_1</source_block_id>
        <sink_block_id>gr_add_xx_1</sink_block_id>
        <source_key>0</source_key>
        <sink_key>2</sink_key>
      </connection>
      <connection>
        <source_block_id>gr_rds_encoder_0</source_block_id>
        <sink_block_id>gr_diff_encoder_bb_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>gr_sig_source_x_0</source_block_id>
        <sink_block_id>gr_multiply_xx_1</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>gr_sig_source_x_0_0</source_block_id>
        <sink_block_id>gr_multiply_xx_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>gr_sig_source_x_0_1</source_block_id>
        <sink_block_id>blocks_multiply_const_vxx_0_0_1</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>gr_sub_xx_0</source_block_id>
        <sink_block_id>low_pass_filter_0_0_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>gr_unpack_k_bits_bb_0</source_block_id>
        <sink_block_id>gr_map_bb_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>low_pass_filter_0</source_block_id>
        <sink_block_id>gr_multiply_xx_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>1</sink_key>
      </connection>
      <connection>
        <source_block_id>low_pass_filter_0_0</source_block_id>
        <sink_block_id>gr_add_xx_1</sink_block_id>
        <source_key>0</source_key>
        <sink_key>3</sink_key>
      </connection>
      <connection>
        <source_block_id>low_pass_filter_0_0_0</source_block_id>
        <sink_block_id>gr_multiply_xx_1</sink_block_id>
        <source_key>0</source_key>
        <sink_key>1</sink_key>
      </connection>
      <connection>
        <source_block_id>rational_resampler_xxx_0</source_block_id>
        <sink_block_id>gr_add_xx_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>rational_resampler_xxx_0</source_block_id>
        <sink_block_id>gr_sub_xx_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
      <connection>
        <source_block_id>rational_resampler_xxx_0_0</source_block_id>
        <sink_block_id>gr_add_xx_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>1</sink_key>
      </connection>
      <connection>
        <source_block_id>rational_resampler_xxx_0_0</source_block_id>
        <sink_block_id>gr_sub_xx_0</sink_block_id>
        <source_key>0</source_key>
        <sink_key>1</sink_key>
      </connection>
      <connection>
        <source_block_id>rational_resampler_xxx_1</source_block_id>
        <sink_block_id>uhd_usrp_sink</sink_block_id>
        <source_key>0</source_key>
        <sink_key>0</sink_key>
      </connection>
    </flow_graph>
    

    И как обычно, всем удачных экспериментов. И не создавайте помехи другим радиостанциям.
    Поделиться публикацией

    Комментарии 15

      +1
      Прикольно. Жаль FM приёмника не было)
      Что на очереди? DVB-T2?
        0
        Да, есть мысль попробовать.
          0
          было бы круто. Всё равно FM рано или поздно отомрёт) ну я надеюсь
            0
            Не отомрет пока в каждом авто не будет цифрового приемника, что очень сомнительно.
              0
              Ну аналоговое ТВ загнулось
                +1
                Его принудительно загнули, а так локально в провинции ему жить и жить.
                А про ФМ много уже высказывалось в комментариях на такие темы. Вот, например, комментарий автора этой публикации DmitrySpb79:
                Насчет DAB — спрашивал знакомых автомобилистов (в Европе), пользуются или нет. Говорят нафиг надо, и 20 FM-станций за глаза хватает, нужны обычно 1-2, новости послушать. DAB больше нужен вещателям, т.к. там свободных каналов больше, а вот юзеров еще придется убедить на него перейти. Приемники кстати недорогие, от 30Евро на amazon, вроде и не деньги, только вот зачем… А в новых авто DAB-приемник часто уже встроен.

                и ряд еще подобных комментариев.
                  +2

                  Свободных каналов там влезает больше из-за того, что вещатели в погоне за дешевизной режут битрейт под ноль. И выходят в итоге такие приколы как радио "Джаз" в AAC mono 24kbps.

                    +4
                    Я писал статью про DAB+ как-то: habr.com/ru/post/448244

                    Если кратко, там все грустно, качество хуже чем FM.
                0
                Ага, как и АМ, который до сих пор вещается на КВ.
                  0
                  Не только КВ, в США популярны средневолновые радиостанции.
                    –1
                    FM как и AM никогда не отомрёт. Вопрос не правильный. Разная частота, разная длинна волны и свойства у них разные и известные всем радиолюбителям. Разные расстояния от передатчика до приёмника при условии уверенного приёма. Изменение связанные с временем суток. И так далее.
                    Вопрос просто связанный с коммерческим использованием, где деньги там и прогресс. Это понятно. FM радио, как и TV естественно будет заменено цифровым и очень скоро. Уже есть очень недорогие SDR приёмники (RTL2832U) как для приёма радио, так и для телевидения. Даже радиолюбители используют их не для приёма цифры, а для приёма аналогового сигнала и последующей его обработки, записи и хранения. Причём в очень широком диапазоне. То есть можно SDR приёмником принять и записать широкий спектр, а потом прослушать по очереди несколько передач которые шли одновременно в эфире. Возможности обработки вообще фантастические – программы SDRSharp, SDRSharper и др.
                    То есть вопрос модуляции и частоты, а также назначение: музыка, телевидение или военка: радары, передача данных, постановка помех.
                    Поэтому всегда будет и AM (SSB CW FM) на КВ и СВ, и цифра, как радио, так и телевидение на высокочастотных бендах. Между прочим, цифра была и будет и на КВ и достаточно давно.
              +1
              Не успел глубоко вникнуть в часть 7, а уже 9. 8 часть вообще мимо прошла. Не успеваю за автором. И это здорово, что автора не пропадает запал.
                +1
                А не подскажете, может ли GNU Radio декодировать CDMA-сигналы? Вижу какие-то исследовательские статьи на эту тему, но не более.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое