{"id":4525,"date":"2018-04-26T05:05:08","date_gmt":"2018-04-26T04:05:08","guid":{"rendered":"https:\/\/andyland.info\/wordpress\/?p=4525"},"modified":"2021-10-21T09:05:46","modified_gmt":"2021-10-21T08:05:46","slug":"midi-timecode-generator-with-tempo-tap-and-nudge","status":"publish","type":"post","link":"https:\/\/andyland.info\/wordpress\/midi-timecode-generator-with-tempo-tap-and-nudge\/","title":{"rendered":"Midi Timecode Generator with Tempo-tap and Nudge"},"content":{"rendered":"<p>This post is about building an arduino-based Midi Timecode generator. It incorporates tempo-tap, nudge and a granular tempo-control via an endless encoder. It aims to providing nudge-funtionality (and improved tempo-control) for Native Instruments Maschine MK2 but can easily be used with other\u00a0devices and programs\u00a0as well.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4560\" src=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020202.jpg\" alt=\"\" width=\"1024\" height=\"576\" srcset=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020202.jpg 1024w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020202-300x169.jpg 300w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020202-768x432.jpg 768w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020202-150x84.jpg 150w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020202-250x141.jpg 250w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><!--more--><\/p>\n<p>Some time ago my G.A.S (Gear Aquisition Syndrome) struck me hard and made my buy a <strong>Native Instruments Maschine MK2<\/strong>. Having to leave it untouched for too long because of other projects I finally found a way of spending fun time with it even though one of\u00a0the main problems between &#8220;me&#8221; and &#8220;being musically creative&#8221; has always been\u00a0that inspiration normally stops in the second that I touch the Controller. Though I am generally not too much into electronic music (Deep House or Trance, especially)\u00a0I realized that simply playing along with\u00a0tracks of that stlye\u00a0leads to fun results and quite easily brings me into\u00a0that creative flow where everything &#8220;just happens&#8221;.<\/p>\n<p><iframe loading=\"lazy\" title=\"Ron Flatter - Narcissus by Pour La Vie Rec.\" width=\"1580\" height=\"400\" scrolling=\"no\" frameborder=\"no\" src=\"https:\/\/w.soundcloud.com\/player\/?visual=true&#038;url=https%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F401972709&#038;show_artwork=true&#038;maxheight=1000&#038;maxwidth=1580\"><\/iframe><\/p>\n<p>(Maybe this is also due to the fact that this kind of music is easy to &#8230; well, let&#8217;s just not discuss this right now.)<\/p>\n<p>First approach would probably be to get myself some tracks, hit them up into Maschine (or Ableton, or Traktor, or &#8230;),\u00a0press the magic sync-button and just go for it. But that one thing I want to achieve here is being able to adopt to music regardless of the medium\u00a0it&#8217;s being played from:\u00a0 radio, smartphone, youtube\u00a0&#8211; and maybe just the dream of simply being able to spontaneously \u00a0perform with others without having to worry about syncing, master-slave. cables, incompatibilities, etc.<\/p>\n<p>Maschine (MK2) does offer some sort of transport control, of course, but it lacks huge amounts of usability when trying to use it in a non-synced just-play-along situation: Tempo-Tap needs two button-presses (Shift+Tap) and nudging the transport is just missing completely. The technique of &#8220;riding the pitch&#8221; is just plainly out of reach from the perspective of usability.<\/p>\n<p>There are basically two ways of controlling Maschine&#8217;s transport section from external sources: Midi Timecode and Ableton Link. My first approach was based on Ableton Link but I ditched it because I ran into\u00a0problems on setting the correct downbeat. That&#8217;s why I chose transport-control via Midi Timecode with a taylor-made interface built around an arduino.<\/p>\n<p>The arduino code is based on the work of Github-User <a href=\"https:\/\/github.com\/DieterVDW\/arduino-midi-clock\">DieterVDW<\/a>. He basically did everything you need to create Midi Timecode with an arduino, including tempo-tapping and some finetuning with a potentiometer. The code, however,\u00a0 needed some make-over since I found there were some flaws (it hung up three times within the first minutes, tempo-tap was too slow, display not needed, endless encoder instead of potentiometer, etc.). You will later find my version of the code over at my new <a href=\"https:\/\/github.com\/Andymann\/Arduino_TapTempo_Midiclock\">Github-Repository<\/a>.<\/p>\n<p>The circuit itself is simple enough to be realized on perfboard. In the end it&#8217;s just 5 buttons and an encoder attached to an arduino. Layout surely -does- play a major role here: you don&#8217;t want &#8216;dangerous&#8217; buttons (i.e. STOP, RESTART) within accidental reach.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4549\" src=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020190.jpg\" alt=\"\" width=\"1024\" height=\"576\" srcset=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020190.jpg 1024w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020190-300x169.jpg 300w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020190-768x432.jpg 768w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020190-150x84.jpg 150w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020190-250x141.jpg 250w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>The perfboard acts as the pattern for marking the holes which need to be drilled.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4550\" src=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020191.jpg\" alt=\"\" width=\"1024\" height=\"576\" srcset=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020191.jpg 1024w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020191-300x169.jpg 300w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020191-768x432.jpg 768w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020191-150x84.jpg 150w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020191-250x141.jpg 250w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4551\" src=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020192.jpg\" alt=\"\" width=\"1024\" height=\"576\" srcset=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020192.jpg 1024w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020192-300x169.jpg 300w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020192-768x432.jpg 768w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020192-150x84.jpg 150w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020192-250x141.jpg 250w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4555\" src=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020197.jpg\" alt=\"\" width=\"1024\" height=\"576\" srcset=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020197.jpg 1024w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020197-300x169.jpg 300w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020197-768x432.jpg 768w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020197-150x84.jpg 150w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020197-250x141.jpg 250w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>OF COURSE I messed up while drilling and had to use another perfboard.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4556\" src=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020198.jpg\" alt=\"\" width=\"1024\" height=\"576\" srcset=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020198.jpg 1024w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020198-300x169.jpg 300w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020198-768x432.jpg 768w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020198-150x84.jpg 150w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020198-250x141.jpg 250w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>&#8220;Congrats, you just played yourself&#8221;. Sometimes I think I should just ask someone else to do this.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4558\" src=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020200.jpg\" alt=\"\" width=\"1024\" height=\"576\" srcset=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020200.jpg 1024w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020200-300x169.jpg 300w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020200-768x432.jpg 768w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020200-150x84.jpg 150w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020200-250x141.jpg 250w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Towards the end I became a little impatient and whipped everything together in a quick rush (after attaching a connector for a footswitch).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4612\" src=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020214_1.jpg\" alt=\"\" width=\"1024\" height=\"576\" srcset=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020214_1.jpg 1024w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020214_1-300x169.jpg 300w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020214_1-768x432.jpg 768w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020214_1-150x84.jpg 150w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020214_1-250x141.jpg 250w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>However, let&#8217;s talk about the layout of the buttons and their functionality: The arcade button will be used for tempo-tapping (&#8220;Flipperbuttons, Alter, da kannst Du mit&#8217;m Lastwagen dr\u00fcberfahren, die gehen nicht kaputt&#8221;). The blue buttons on top provide the nudge-functionality: +\/-5% in each direction. The rotary encoder allows to fine-tune the tempo (or to\u00a0ultra-fine-tune it\u00a0while twisting and holding it down at the same time). The yellow button sends a (re-)start message. The LED will display the tempo, the black button stops the transport.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4560\" src=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020202.jpg\" alt=\"\" width=\"1024\" height=\"576\" srcset=\"https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020202.jpg 1024w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020202-300x169.jpg 300w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020202-768x432.jpg 768w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020202-150x84.jpg 150w, https:\/\/andyland.info\/wordpress\/wp-content\/uploads\/1020202-250x141.jpg 250w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Connection to the outside world is <a href=\"http:\/\/shiftmore.blogspot.de\/2010\/01\/quick-and-dirty-arduino-midi-over-usb.html\">achieved<\/a> via a cheap USB-to-Midi-Interface. Not that I don&#8217;t have\u00a0enough of these boxed as new lying around but I\u00a0still managed\u00a0to salvage one of these from an <a href=\"https:\/\/andyland.info\/wordpress\/?p=344\">old project<\/a>.<\/p>\n<p>The original design is based on the intention\u00a0to use it in a horizontal position but it quickly turned out that a vertical orientation works a little better. The following video allows you to get a glimpse of the ease of operation: Adopting to different tempos, fixing complete trainwrecks and re-syncing. Keep in mind that it&#8217;s not about the style or sound and that I intentionally kept the metronome on to make it easier to get an idea about the effects of nudging, etc.<\/p>\n<p>While making the video I got COMPLETELY lost because it&#8217;s so much fun playing around with the device. Didn&#8217;t expect it to turn out that brilliant.<\/p>\n<p><iframe loading=\"lazy\" title=\"Midi Timecode Generator with Tempo-Tap, Nudge and Pitchcontrol via endless Encoder\" width=\"1580\" height=\"889\" src=\"https:\/\/www.youtube.com\/embed\/cq5z2ty6aNQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This post is about building an arduino-based Midi Timecode generator. It incorporates tempo-tap, nudge and a granular tempo-control via an endless encoder. It aims to providing nudge-funtionality (and improved tempo-control) for Native Instruments Maschine MK2 but can easily be used with other\u00a0devices and programs\u00a0as well.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[19,5],"tags":[54,332,336,335,329,333,331,330],"class_list":["post-4525","post","type-post","status-publish","format-standard","hentry","category-musik","category-projekte","tag-arduino","tag-external-control","tag-midi-timecode","tag-mtc","tag-native-instruments-maschine-mk2","tag-nudge","tag-pitch","tag-tempo","odd"],"_links":{"self":[{"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/posts\/4525","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/comments?post=4525"}],"version-history":[{"count":0,"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/posts\/4525\/revisions"}],"wp:attachment":[{"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/media?parent=4525"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/categories?post=4525"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/andyland.info\/wordpress\/wp-json\/wp\/v2\/tags?post=4525"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}