{"id":6146,"date":"2024-03-15T21:55:58","date_gmt":"2024-03-15T20:55:58","guid":{"rendered":"https:\/\/www.pschatzmann.ch\/home\/?p=6146"},"modified":"2024-03-15T22:52:51","modified_gmt":"2024-03-15T21:52:51","slug":"mozzi-revisited","status":"publish","type":"post","link":"https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/","title":{"rendered":"Mozzi Revisited"},"content":{"rendered":"<p><a href=\"https:\/\/sensorium.github.io\/Mozzi\/\">Mozzi<\/a> brings your Arduino to life by allowing it to produce much more complex and interesting growls, sweeps and chorusing atmospherics. These sounds can be quickly and easily constructed from familiar synthesis units like oscillators, delays, filters and envelopes.<\/p>\n<p>Mozzi supports quite a lot of different Micro controllers, but it does not have any output method that would let you capture the audio to a <strong>stream of data<\/strong>, so I have added some simple integration layer for Mozzi to my <a href=\"https:\/\/github.com\/pschatzmann\/arduino-audio-tools\">AudioTools<\/a>: This lets you send the generated audio via the network or bluetooth, save it to a file or whatever you can imagine&#8230;<\/p>\n<h2>Example Sketch<\/h2>\n<p>Here is the sketch, inspired by <a href=\"https:\/\/sensorium.github.io\/Mozzi\/examples\/#01.Basics\">Mozzi\/examples\/#01.Basics<\/a> converted to use the AudioTools integration:<\/p>\n<pre><code>#include \"AudioTools.h\"\n#include \"AudioLibs\/AudioBoardStream.h\"\n#include \"AudioLibs\/MozziStream.h\"\n#include &lt;Oscil.h&gt;                \/\/ oscillator template\n#include &lt;tables\/sin2048_int8.h&gt;  \/\/ sine table for oscillator\n\nconst int sample_rate = 16000;\nAudioInfo info(sample_rate, 1, 16);\nAudioBoardStream i2s(AudioKitEs8388V1);  \/\/ audio sink\nMozziStream mozzi; \/\/ audio source\nStreamCopy copier(i2s, mozzi); \/\/ copy source to sink\n\/\/ use: Oscil &lt;table_size, update_rate&gt; oscilName (wavetable), look in .h file\n\/\/ of table #included above\nOscil&lt;SIN2048_NUM_CELLS, sample_rate&gt; aSin(SIN2048_DATA);\n\/\/ control variable, use the smallest data size you can for anything used in\n\/\/ audio\nbyte gain = 255;\n\nvoid setup() {\n  Serial.begin(115200);\n  AudioLogger::instance().begin(Serial, AudioLogger::Info);\n\n  \/\/ setup mozzi\n  auto cfg = mozzi.defaultConfig();\n  cfg.control_rate = CONTROL_RATE;\n  cfg.copyFrom(info);\n  mozzi.begin(cfg);\n\n  \/\/ setup output\n  auto out_cfg = i2s.defaultConfig();\n  out_cfg.copyFrom(info);\n  i2s.begin(out_cfg);\n\n  \/\/ setup mozzi sine\n  aSin.setFreq(3320);  \/\/ set the frequency\n}\n\nvoid loop() { copier.copy(); }\n\nvoid updateControl() {\n  \/\/ as byte, this will automatically roll around to 255 when it passes 0\n  gain = gain - 3;\n}\n\nint updateAudio() {\n  return (aSin.next() * gain) &gt;&gt;\n         8;  \/\/ shift back to STANDARD audio range, like \/256 but faster\n} \n\n<\/code><\/pre>\n<p>We just copy the audio from the <a href=\"https:\/\/pschatzmann.github.io\/arduino-audio-tools\/classaudio__tools_1_1_mozzi_stream.html\">MozziStream<\/a> source to the <a href=\"https:\/\/pschatzmann.github.io\/arduino-audio-tools\/classaudio__tools_1_1_audio_board_stream.html\">AudioBoardStream<\/a> audio sink which is the I2S output for an Audiokit.<\/p>\n<p>Compared with the <strong>original sketch<\/strong>, startMozzi() has been replaced with the mozzi.begin(cfg); and instead of calling audioHook() in the loop we use copier.copy();<\/p>\n<p>This and further examples can be found in the examples directory and <a href=\"https:\/\/github.com\/pschatzmann\/arduino-audio-tools\/tree\/main\/examples\/examples-dsp\/examples-mozzi\">on Github<\/a><\/p>\n<h2>Summary<\/h2>\n<p>With Mozzi I am supporting now quite a rich set of Audio DSP Libraries<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/pschatzmann\/Arduino-STK\">arduino-stk<\/a> Synthesis ToolKit in C++ (STK) <a href=\"https:\/\/github.com\/pschatzmann\/arduino-audio-tools\/tree\/main\/examples\/examples-stk\">examples<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/pschatzmann\/Maximilian\">Maximilian<\/a> cross-platform and multi-target audio synthesis and signal processing library <a href=\"https:\/\/github.com\/pschatzmann\/arduino-audio-tools\/tree\/main\/examples\/examples-maximilian\">examples<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/pschatzmann\/arduino-audio-tools\/wiki\/Faust\">Faust<\/a> A functional programming language for sound synthesis and audio<\/li>\n<li><a href=\"https:\/\/github.com\/pschatzmann\/arduino-audio-tools\/wiki\/Pure-Data\">Pure Data<\/a> Pure Data (or just &#8220;Pd&#8221;) is an open source visual <\/li>\n<li><a href=\"https:\/\/github.com\/pschatzmann\/Mozzi\">Mozzi<\/a> A sound synthesis library for Arduino<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Mozzi brings your Arduino to life by allowing it to produce much more complex and interesting growls, sweeps and chorusing atmospherics. These sounds can be quickly and easily constructed from familiar synthesis units like oscillators, delays, filters and envelopes. Mozzi supports quite a lot of different Micro controllers, but it [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3097,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[20,22],"tags":[],"class_list":["post-6146","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-machine-sound"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Mozzi Revisited - Phil Schatzmann<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mozzi Revisited - Phil Schatzmann\" \/>\n<meta property=\"og:description\" content=\"Mozzi brings your Arduino to life by allowing it to produce much more complex and interesting growls, sweeps and chorusing atmospherics. These sounds can be quickly and easily constructed from familiar synthesis units like oscillators, delays, filters and envelopes. Mozzi supports quite a lot of different Micro controllers, but it [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/\" \/>\n<meta property=\"og:site_name\" content=\"Phil Schatzmann\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T20:55:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-15T21:52:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/05\/mozzi.png\" \/>\n\t<meta property=\"og:image:width\" content=\"307\" \/>\n\t<meta property=\"og:image:height\" content=\"182\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"pschatzmann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"pschatzmann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2024\\\/03\\\/15\\\/mozzi-revisited\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2024\\\/03\\\/15\\\/mozzi-revisited\\\/\"},\"author\":{\"name\":\"pschatzmann\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#\\\/schema\\\/person\\\/73a53638a4e34e8373405fd737dac9b1\"},\"headline\":\"Mozzi Revisited\",\"datePublished\":\"2024-03-15T20:55:58+00:00\",\"dateModified\":\"2024-03-15T21:52:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2024\\\/03\\\/15\\\/mozzi-revisited\\\/\"},\"wordCount\":247,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#\\\/schema\\\/person\\\/73a53638a4e34e8373405fd737dac9b1\"},\"image\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2024\\\/03\\\/15\\\/mozzi-revisited\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/mozzi.png\",\"articleSection\":[\"Arduino\",\"Machine Sound\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2024\\\/03\\\/15\\\/mozzi-revisited\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2024\\\/03\\\/15\\\/mozzi-revisited\\\/\",\"url\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2024\\\/03\\\/15\\\/mozzi-revisited\\\/\",\"name\":\"Mozzi Revisited - Phil Schatzmann\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2024\\\/03\\\/15\\\/mozzi-revisited\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2024\\\/03\\\/15\\\/mozzi-revisited\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/mozzi.png\",\"datePublished\":\"2024-03-15T20:55:58+00:00\",\"dateModified\":\"2024-03-15T21:52:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2024\\\/03\\\/15\\\/mozzi-revisited\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2024\\\/03\\\/15\\\/mozzi-revisited\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2024\\\/03\\\/15\\\/mozzi-revisited\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/mozzi.png\",\"contentUrl\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/mozzi.png\",\"width\":307,\"height\":182},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2024\\\/03\\\/15\\\/mozzi-revisited\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mozzi Revisited\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#website\",\"url\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/\",\"name\":\"Phil Schatzmann Consulting\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#\\\/schema\\\/person\\\/73a53638a4e34e8373405fd737dac9b1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#\\\/schema\\\/person\\\/73a53638a4e34e8373405fd737dac9b1\",\"name\":\"pschatzmann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/pschatzmann.png\",\"url\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/pschatzmann.png\",\"contentUrl\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/pschatzmann.png\",\"width\":305,\"height\":305,\"caption\":\"pschatzmann\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/pschatzmann.png\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mozzi Revisited - Phil Schatzmann","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/","og_locale":"en_US","og_type":"article","og_title":"Mozzi Revisited - Phil Schatzmann","og_description":"Mozzi brings your Arduino to life by allowing it to produce much more complex and interesting growls, sweeps and chorusing atmospherics. These sounds can be quickly and easily constructed from familiar synthesis units like oscillators, delays, filters and envelopes. Mozzi supports quite a lot of different Micro controllers, but it [&hellip;]","og_url":"https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/","og_site_name":"Phil Schatzmann","article_published_time":"2024-03-15T20:55:58+00:00","article_modified_time":"2024-03-15T21:52:51+00:00","og_image":[{"width":307,"height":182,"url":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/05\/mozzi.png","type":"image\/png"}],"author":"pschatzmann","twitter_card":"summary_large_image","twitter_misc":{"Written by":"pschatzmann","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/#article","isPartOf":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/"},"author":{"name":"pschatzmann","@id":"https:\/\/www.pschatzmann.ch\/home\/#\/schema\/person\/73a53638a4e34e8373405fd737dac9b1"},"headline":"Mozzi Revisited","datePublished":"2024-03-15T20:55:58+00:00","dateModified":"2024-03-15T21:52:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/"},"wordCount":247,"commentCount":0,"publisher":{"@id":"https:\/\/www.pschatzmann.ch\/home\/#\/schema\/person\/73a53638a4e34e8373405fd737dac9b1"},"image":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/#primaryimage"},"thumbnailUrl":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/05\/mozzi.png","articleSection":["Arduino","Machine Sound"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/","url":"https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/","name":"Mozzi Revisited - Phil Schatzmann","isPartOf":{"@id":"https:\/\/www.pschatzmann.ch\/home\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/#primaryimage"},"image":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/#primaryimage"},"thumbnailUrl":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/05\/mozzi.png","datePublished":"2024-03-15T20:55:58+00:00","dateModified":"2024-03-15T21:52:51+00:00","breadcrumb":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/#primaryimage","url":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/05\/mozzi.png","contentUrl":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/05\/mozzi.png","width":307,"height":182},{"@type":"BreadcrumbList","@id":"https:\/\/www.pschatzmann.ch\/home\/2024\/03\/15\/mozzi-revisited\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pschatzmann.ch\/home\/"},{"@type":"ListItem","position":2,"name":"Mozzi Revisited"}]},{"@type":"WebSite","@id":"https:\/\/www.pschatzmann.ch\/home\/#website","url":"https:\/\/www.pschatzmann.ch\/home\/","name":"Phil Schatzmann Consulting","description":"","publisher":{"@id":"https:\/\/www.pschatzmann.ch\/home\/#\/schema\/person\/73a53638a4e34e8373405fd737dac9b1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.pschatzmann.ch\/home\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.pschatzmann.ch\/home\/#\/schema\/person\/73a53638a4e34e8373405fd737dac9b1","name":"pschatzmann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2022\/08\/pschatzmann.png","url":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2022\/08\/pschatzmann.png","contentUrl":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2022\/08\/pschatzmann.png","width":305,"height":305,"caption":"pschatzmann"},"logo":{"@id":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2022\/08\/pschatzmann.png"}}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/posts\/6146","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/comments?post=6146"}],"version-history":[{"count":7,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/posts\/6146\/revisions"}],"predecessor-version":[{"id":6153,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/posts\/6146\/revisions\/6153"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/media\/3097"}],"wp:attachment":[{"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/media?parent=6146"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/categories?post=6146"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/tags?post=6146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}