{"id":3738,"date":"2021-11-09T19:42:41","date_gmt":"2021-11-09T18:42:41","guid":{"rendered":"https:\/\/www.pschatzmann.ch\/home\/?p=3738"},"modified":"2021-12-12T01:44:57","modified_gmt":"2021-12-12T00:44:57","slug":"arduino-audio-tools-adding-input-from-the-ads1015","status":"publish","type":"post","link":"https:\/\/www.pschatzmann.ch\/home\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/","title":{"rendered":"Arduino Audio Tools:  Adding Input from the ADS1015 (or Using a Timer Based Stream)"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>In <a href=\"https:\/\/www.pschatzmann.ch\/home\/2021\/11\/04\/arduino-sound-recording-from-an-electric-guitar-with-an-adc\/\">one of my last blogs<\/a> I made a small test-sketch to print some audio data from an <strong>ADS1015 Analog to Digital Converter (ADC)<\/strong> capturing the input from an <strong>electric guitar<\/strong> using the Arduino loop(). In real life however, we want to drive the capturing of the samples with a <strong>timer<\/strong>. A first naive implementation was awfully failing because the ESP32 does not allow I2C calls in the timer interrupts. The solution is to create a separate task and drive the processing from the interrupt.<\/p>\n<p>This sounds awfully complicated and therefore I decided to package the solution in a reusable class: that&#8217;s how the <a href=\"https:\/\/pschatzmann.github.io\/arduino-audio-tools\/html\/classaudio__tools_1_1_timer_callback_audio_stream.html\">TimerCallbackAudioStream<\/a> was born:<\/p>\n<h2>The Arduino Sketch<\/h2>\n<pre><code>#include \"AudioTools.h\"\n#include &lt;Adafruit_ADS1X15.h&gt;\n\nusing namespace audio_tools;  \n\nconst int sample_rate = 3000;\nconst int channels = 1;\nconst int bits_per_sample = 16;\n\nAdafruit_ADS1015 ads1015; \/\/ ads1015 device  \nTimerCallbackAudioStream in; \nCsvStream&lt;int16_t&gt; out(Serial);                        \nStreamCopy copier(out, in); \/\/ copy in to out\n\n\/\/ Provides the data from the ADS1015\nuint16_t IRAM_ATTR getADS1015(uint8_t *data, uint16_t len){\n    int16_t sample = ads1015.readADC_Differential_0_1();\n    memcpy(data,(void*) &amp;sample, sizeof(int16_t));\n    return sizeof(int16_t);\n}\n\n\/\/ Arduino Setup\nvoid setup(void) {\n  Serial.begin(115200);\n  AudioLogger::instance().begin(Serial, AudioLogger::Warning);\n\n  \/\/ setup gain and start ads1015 \n  ads1015.setGain(GAIN_SIXTEEN);\n  ads1015.begin();\n\n  \/\/ Open stream from ads1015  \n  auto cfg = in.defaultConfig();\n  cfg.rx_tx_mode = RX_MODE;\n  cfg.sample_rate = sample_rate;\n  cfg.channels = channels;\n  cfg.bits_per_sample = bits_per_sample;\n  cfg.callback = getADS1015;\n  cfg.secure_timer = true;\n  in.setNotifyAudioChange(out);\n  in.begin(cfg);\n\n  \/\/ Output as CSV to serial \n  out.begin();\n\n}\n\n\/\/ Arduino loop - copy data \nvoid loop() {\n  copier.copy();\n}\n\n<\/code><\/pre>\n<p>The solution is very simple: The data is provided with the help of a <strong>simple callback method<\/strong>: In our example this is <code>getADS1015()<\/code>.<\/p>\n<p>As usual, we also need to <strong>setup the ADS1015<\/strong> and <a href=\"https:\/\/pschatzmann.github.io\/arduino-audio-tools\/html\/structaudio__tools_1_1_timer_callback_audio_stream_info.html\">configure the input class<\/a> with <strong>the audio data<\/strong>, a <strong>callback method<\/strong> and we need to indicate that we want to execute the processing <strong>in a separate task<\/strong>: This is done by setting the <code>secure_timer<\/code> to true.<\/p>\n<p>Finally we set up the output and copy the input data to the output&#8230;<\/p>\n<h2>Wirings<\/h2>\n<p>No change, so please consult <a href=\"https:\/\/www.pschatzmann.ch\/home\/2021\/11\/04\/arduino-sound-recording-from-an-electric-guitar-with-an-adc\/\">my last blog<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction In one of my last blogs I made a small test-sketch to print some audio data from an ADS1015 Analog to Digital Converter (ADC) capturing the input from an electric guitar using the Arduino loop(). In real life however, we want to drive the capturing of the samples with [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2586,"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":[29],"class_list":["post-3738","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-machine-sound","tag-guitarpedals"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Arduino Audio Tools: Adding Input from the ADS1015 (or Using a Timer Based Stream) - 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\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Arduino Audio Tools: Adding Input from the ADS1015 (or Using a Timer Based Stream) - Phil Schatzmann\" \/>\n<meta property=\"og:description\" content=\"Introduction In one of my last blogs I made a small test-sketch to print some audio data from an ADS1015 Analog to Digital Converter (ADC) capturing the input from an electric guitar using the Arduino loop(). In real life however, we want to drive the capturing of the samples with [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pschatzmann.ch\/home\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/\" \/>\n<meta property=\"og:site_name\" content=\"Phil Schatzmann\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-09T18:42:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-12-12T00:44:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/02\/ADS1015-12-Bit-ADC-4-Channel-with-Programmable-Gain-Amplifier-1000x750-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"750\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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\\\/2021\\\/11\\\/09\\\/arduino-audio-tools-adding-input-from-the-ads1015\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/11\\\/09\\\/arduino-audio-tools-adding-input-from-the-ads1015\\\/\"},\"author\":{\"name\":\"pschatzmann\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#\\\/schema\\\/person\\\/73a53638a4e34e8373405fd737dac9b1\"},\"headline\":\"Arduino Audio Tools: Adding Input from the ADS1015 (or Using a Timer Based Stream)\",\"datePublished\":\"2021-11-09T18:42:41+00:00\",\"dateModified\":\"2021-12-12T00:44:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/11\\\/09\\\/arduino-audio-tools-adding-input-from-the-ads1015\\\/\"},\"wordCount\":217,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#\\\/schema\\\/person\\\/73a53638a4e34e8373405fd737dac9b1\"},\"image\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/11\\\/09\\\/arduino-audio-tools-adding-input-from-the-ads1015\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/ADS1015-12-Bit-ADC-4-Channel-with-Programmable-Gain-Amplifier-1000x750-1.jpg\",\"keywords\":[\"GuitarPedals\"],\"articleSection\":[\"Arduino\",\"Machine Sound\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/11\\\/09\\\/arduino-audio-tools-adding-input-from-the-ads1015\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/11\\\/09\\\/arduino-audio-tools-adding-input-from-the-ads1015\\\/\",\"url\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/11\\\/09\\\/arduino-audio-tools-adding-input-from-the-ads1015\\\/\",\"name\":\"Arduino Audio Tools: Adding Input from the ADS1015 (or Using a Timer Based Stream) - Phil Schatzmann\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/11\\\/09\\\/arduino-audio-tools-adding-input-from-the-ads1015\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/11\\\/09\\\/arduino-audio-tools-adding-input-from-the-ads1015\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/ADS1015-12-Bit-ADC-4-Channel-with-Programmable-Gain-Amplifier-1000x750-1.jpg\",\"datePublished\":\"2021-11-09T18:42:41+00:00\",\"dateModified\":\"2021-12-12T00:44:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/11\\\/09\\\/arduino-audio-tools-adding-input-from-the-ads1015\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/11\\\/09\\\/arduino-audio-tools-adding-input-from-the-ads1015\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/11\\\/09\\\/arduino-audio-tools-adding-input-from-the-ads1015\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/ADS1015-12-Bit-ADC-4-Channel-with-Programmable-Gain-Amplifier-1000x750-1.jpg\",\"contentUrl\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/ADS1015-12-Bit-ADC-4-Channel-with-Programmable-Gain-Amplifier-1000x750-1.jpg\",\"width\":1000,\"height\":750},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2021\\\/11\\\/09\\\/arduino-audio-tools-adding-input-from-the-ads1015\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Arduino Audio Tools: Adding Input from the ADS1015 (or Using a Timer Based Stream)\"}]},{\"@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":"Arduino Audio Tools: Adding Input from the ADS1015 (or Using a Timer Based Stream) - 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\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/","og_locale":"en_US","og_type":"article","og_title":"Arduino Audio Tools: Adding Input from the ADS1015 (or Using a Timer Based Stream) - Phil Schatzmann","og_description":"Introduction In one of my last blogs I made a small test-sketch to print some audio data from an ADS1015 Analog to Digital Converter (ADC) capturing the input from an electric guitar using the Arduino loop(). In real life however, we want to drive the capturing of the samples with [&hellip;]","og_url":"https:\/\/www.pschatzmann.ch\/home\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/","og_site_name":"Phil Schatzmann","article_published_time":"2021-11-09T18:42:41+00:00","article_modified_time":"2021-12-12T00:44:57+00:00","og_image":[{"width":1000,"height":750,"url":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/02\/ADS1015-12-Bit-ADC-4-Channel-with-Programmable-Gain-Amplifier-1000x750-1.jpg","type":"image\/jpeg"}],"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\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/#article","isPartOf":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/"},"author":{"name":"pschatzmann","@id":"https:\/\/www.pschatzmann.ch\/home\/#\/schema\/person\/73a53638a4e34e8373405fd737dac9b1"},"headline":"Arduino Audio Tools: Adding Input from the ADS1015 (or Using a Timer Based Stream)","datePublished":"2021-11-09T18:42:41+00:00","dateModified":"2021-12-12T00:44:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/"},"wordCount":217,"commentCount":0,"publisher":{"@id":"https:\/\/www.pschatzmann.ch\/home\/#\/schema\/person\/73a53638a4e34e8373405fd737dac9b1"},"image":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/#primaryimage"},"thumbnailUrl":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/02\/ADS1015-12-Bit-ADC-4-Channel-with-Programmable-Gain-Amplifier-1000x750-1.jpg","keywords":["GuitarPedals"],"articleSection":["Arduino","Machine Sound"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.pschatzmann.ch\/home\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/","url":"https:\/\/www.pschatzmann.ch\/home\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/","name":"Arduino Audio Tools: Adding Input from the ADS1015 (or Using a Timer Based Stream) - Phil Schatzmann","isPartOf":{"@id":"https:\/\/www.pschatzmann.ch\/home\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/#primaryimage"},"image":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/#primaryimage"},"thumbnailUrl":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/02\/ADS1015-12-Bit-ADC-4-Channel-with-Programmable-Gain-Amplifier-1000x750-1.jpg","datePublished":"2021-11-09T18:42:41+00:00","dateModified":"2021-12-12T00:44:57+00:00","breadcrumb":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pschatzmann.ch\/home\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/#primaryimage","url":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/02\/ADS1015-12-Bit-ADC-4-Channel-with-Programmable-Gain-Amplifier-1000x750-1.jpg","contentUrl":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2021\/02\/ADS1015-12-Bit-ADC-4-Channel-with-Programmable-Gain-Amplifier-1000x750-1.jpg","width":1000,"height":750},{"@type":"BreadcrumbList","@id":"https:\/\/www.pschatzmann.ch\/home\/2021\/11\/09\/arduino-audio-tools-adding-input-from-the-ads1015\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pschatzmann.ch\/home\/"},{"@type":"ListItem","position":2,"name":"Arduino Audio Tools: Adding Input from the ADS1015 (or Using a Timer Based Stream)"}]},{"@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\/3738","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=3738"}],"version-history":[{"count":23,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/posts\/3738\/revisions"}],"predecessor-version":[{"id":3765,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/posts\/3738\/revisions\/3765"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/media\/2586"}],"wp:attachment":[{"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/media?parent=3738"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/categories?post=3738"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/tags?post=3738"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}