{"id":2514,"date":"2012-12-13T22:39:03","date_gmt":"2012-12-14T05:39:03","guid":{"rendered":"http:\/\/mcclanahoochie.com\/blog\/?post_type=portfolio&#038;p=2514"},"modified":"2023-06-10T10:32:41","modified_gmt":"2023-06-10T17:32:41","slug":"music-visualization-with-an-arduino","status":"publish","type":"post","link":"https:\/\/mcclanahoochie.com\/blog\/2012\/12\/music-visualization-with-an-arduino\/","title":{"rendered":"Music Visualization with an Arduino"},"content":{"rendered":"<h1>Audio Frequency Spectrum Analyzer &amp;\u00a0Spectrogram<\/h1>\n<p>As a followup to a previous post on <strong><a title=\"Music Visualization with Processing\" href=\"http:\/\/mcclanahoochie.com\/blog\/portfolio\/music-visualization-with-processing\/\" target=\"_blank\" rel=\"noopener\">Music Visualization with Processing<\/a> <\/strong>(and a good excuse to play with my Arduino), I decided to convert my <em>Processing music visualizer<\/em> into hardware. The project is not finished yet, but I wanted to post a quick update and how-to on making what I have so far.<\/p>\n<p>&nbsp;<\/p>\n<h1>Media<\/h1>\n<p>Here a picture and video of the current working setup:<\/p>\n<figure id=\"attachment_2545\" aria-describedby=\"caption-attachment-2545\" style=\"width: 219px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mcclanahoochie.com\/blog\/portfolio\/music-visualization-with-an-arduino\/_dsc2334\/\" rel=\"attachment wp-att-2545\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"2545\" data-permalink=\"https:\/\/mcclanahoochie.com\/blog\/2012\/12\/music-visualization-with-an-arduino\/_dsc2334\/#main\" data-orig-file=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/DSC2334.jpg?fit=1467%2C1920&amp;ssl=1\" data-orig-size=\"1467,1920\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;3.8&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;NIKON D7000&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1355392518&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;24&quot;,&quot;iso&quot;:&quot;400&quot;,&quot;shutter_speed&quot;:&quot;0.05&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"_DSC2334\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/DSC2334.jpg?fit=782%2C1024&amp;ssl=1\" class=\"size-medium wp-image-2545\" src=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/DSC2334-229x300.jpg?resize=229%2C300\" alt=\"_DSC2334\" width=\"229\" height=\"300\" srcset=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/DSC2334.jpg?resize=229%2C300&amp;ssl=1 229w, https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/DSC2334.jpg?resize=782%2C1024&amp;ssl=1 782w, https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/DSC2334.jpg?w=1467&amp;ssl=1 1467w\" sizes=\"(max-width: 229px) 100vw, 229px\" \/><\/a><figcaption id=\"caption-attachment-2545\" class=\"wp-caption-text\">visualizing music from my phone<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><span class=\"embed-youtube\" style=\"text-align:center; display: block;\"><iframe loading=\"lazy\" class=\"youtube-player\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/eZbT5Qls7ts?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\"><\/iframe><\/span><\/p>\n<p><a title=\"Video\" href=\"https:\/\/www.youtube.com\/watch?v=eZbT5Qls7ts\" target=\"_blank\" rel=\"noopener\">Video<\/a><\/p>\n<p>&nbsp;<\/p>\n<h1>Info<\/h1>\n<p>An Arduino Duemilanove is used to sample sound through an anlog pin, compute the FFT of the sample, and visualize the audio on an LCD display. The center of the display shows the current <em>frequency waveform plot<\/em>, while a small-scale <em>spectrogram<\/em> is drawn on the left.<\/p>\n<p>The original idea for this project was to make an\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/Spectrogram\" target=\"_blank\" rel=\"noopener\">audio spectrogram<\/a>\u00a0using an Arduino and an LCD. I wanted to use the full LCD for a nice big spectrogram graph. You will notice, though, in the picture and video above, that the spectrogram is a bit tiny and shares screen space with a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Frequency_spectrum\" target=\"_blank\" rel=\"noopener\">frequency spectrum<\/a> visualizer.<\/p>\n<p>The spectrogram portion drawn is currently <em>as large as can be<\/em> because of memory limitations on the ATMega328 chip! (well, at least in the current version of the code). The spectrogram is stored as a 64&#215;12 matrix where each column (12) is a stores the values (64) of the signal&#8217;s frequencies. 64 is the height of the screen, but 12 is far from the width (128), so I decided to fill the blank space with the waveform plot.<\/p>\n<p>The spectrogram driver code is simply a modified version of my <a title=\"Music Visualization with Processing\" href=\"http:\/\/mcclanahoochie.com\/blog\/portfolio\/music-visualization-with-processing\/\" target=\"_blank\" rel=\"noopener\">Processing app<\/a>, and the frequency spectrum waveform plot is a modified version of\u00a0<a href=\"http:\/\/blurtime.blogspot.com\/2010\/11\/arduino-realtime-audio-spectrum.html\" target=\"_blank\" rel=\"noopener\">this project&#8217;s<\/a>\u00a0code.<\/p>\n<p><iframe loading=\"lazy\" style=\"width: 120px; height: 240px;\" src=\"\/\/ws-na.amazon-adsystem.com\/widgets\/q?ServiceVersion=20070822&amp;OneJS=1&amp;Operation=GetAdHtml&amp;MarketPlace=US&amp;source=ac&amp;ref=tf_til&amp;ad_type=product_link&amp;tracking_id=mcclanahoosbl-20&amp;marketplace=amazon&amp;region=US&amp;placement=B009UKZV0A&amp;asins=B009UKZV0A&amp;linkId=XHY5PAO5QJCRDRWE&amp;show_border=true&amp;link_opens_in_new_window=true\" width=\"300\" height=\"150\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><br \/>\n<\/iframe><\/p>\n<h1>Mic pre-amp<\/h1>\n<p>This is a modified circuit from <a href=\"http:\/\/electronics.stackexchange.com\/questions\/16595\/how-to-make-a-clean-amplified-microphone-analog-to-digital-conversion\" target=\"_blank\" rel=\"noopener\">[here]<\/a>, with an added\u00a0potentiometer (R5)\u00a0for gain control.<\/p>\n<figure id=\"attachment_2527\" aria-describedby=\"caption-attachment-2527\" style=\"width: 290px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mcclanahoochie.com\/blog\/portfolio\/music-visualization-with-an-arduino\/mic-preamp\/\" rel=\"attachment wp-att-2527\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"2527\" data-permalink=\"https:\/\/mcclanahoochie.com\/blog\/2012\/12\/music-visualization-with-an-arduino\/mic-preamp\/#main\" data-orig-file=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/mic-preamp.png?fit=686%2C362&amp;ssl=1\" data-orig-size=\"686,362\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"mic-preamp\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/mic-preamp.png?fit=686%2C362&amp;ssl=1\" class=\"size-medium wp-image-2527\" src=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/mic-preamp-300x158.png?resize=300%2C158\" alt=\"mic-preamp\" width=\"300\" height=\"158\" srcset=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/mic-preamp.png?resize=300%2C158&amp;ssl=1 300w, https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/mic-preamp.png?resize=500%2C263&amp;ssl=1 500w, https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/mic-preamp.png?w=686&amp;ssl=1 686w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-2527\" class=\"wp-caption-text\">Simple microphone preamp.<\/figcaption><\/figure>\n<p style=\"text-align: left;\"><em>R5:<\/em> controls the gain. \u00a0\u00a0<em>Vout:<\/em>\u00a0to Arduino Analog Pin 5. \u00a0\u00a0<em>OP1:<\/em> LM741 op-amp.<\/p>\n<p>&nbsp;<\/p>\n<h1>LCD<\/h1>\n<p>Buy from Adafruit:\u00a0<a href=\"http:\/\/www.adafruit.com\/products\/188\" target=\"_blank\" rel=\"noopener\">KS0108<\/a>, and use the following wiring pinout:<\/p>\n<figure id=\"attachment_2528\" aria-describedby=\"caption-attachment-2528\" style=\"width: 160px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mcclanahoochie.com\/blog\/portfolio\/music-visualization-with-an-arduino\/glcd-pinout-ks0108\/\" rel=\"attachment wp-att-2528\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"2528\" data-permalink=\"https:\/\/mcclanahoochie.com\/blog\/2012\/12\/music-visualization-with-an-arduino\/glcd-pinout-ks0108\/#main\" data-orig-file=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/GLCD-pinout-KS0108.png?fit=530%2C931&amp;ssl=1\" data-orig-size=\"530,931\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"GLCD-pinout-KS0108\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/GLCD-pinout-KS0108.png?fit=530%2C931&amp;ssl=1\" class=\"size-medium wp-image-2528\" src=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/GLCD-pinout-KS0108-170x300.png?resize=170%2C300\" alt=\"GLCD-pinout-KS0108\" width=\"170\" height=\"300\" srcset=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/GLCD-pinout-KS0108.png?resize=170%2C300&amp;ssl=1 170w, https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/GLCD-pinout-KS0108.png?w=530&amp;ssl=1 530w\" sizes=\"(max-width: 170px) 100vw, 170px\" \/><\/a><figcaption id=\"caption-attachment-2528\" class=\"wp-caption-text\">KS0108 Arduino Pinout<\/figcaption><\/figure>\n<p>More info:\u00a0<a href=\"http:\/\/playground.arduino.cc\/Code\/GLCDks0108\">KS0108 Documentation<\/a><\/p>\n<p>&nbsp;<\/p>\n<h1>Code<\/h1>\n<p>Get My<em> Arduino frequency analyzer + spectrogram <strong><a href=\"https:\/\/github.com\/mcclanahoochie\/from_google_code\/tree\/master\/processing\/Spectrogram\">source code<\/a><\/strong>\u00a0<\/em>and try it out for yourself!<\/p>\n<p>You will also need:\u00a0<a href=\"http:\/\/code.google.com\/p\/arduino-integer-fft\/\">Arduino FFT<\/a> source code &amp; the\u00a0<a href=\"https:\/\/github.com\/railsbob\/KS0108\/blob\/master\/ks0108.cpp\" target=\"_blank\" rel=\"noopener\">GLCD\/KS0108 Library<\/a>.<\/p>\n<p>Similar Project:\u00a0<a href=\"http:\/\/blurtime.blogspot.com\/2010\/11\/arduino-realtime-audio-spectrum.html\">Arduino audio analyzer (w\/ VGA out)<\/a><\/p>\n<p>&nbsp;<\/p>\n<h1>Pics<\/h1>\n<figure style=\"width: 290px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mcclanahoochie.com\/blog\/portfolio\/music-visualization-with-an-arduino\/screen-shot-2012-12-11-at-10-14-56-pm-png\/\" target=\"_blank\" rel=\"attachment wp-att-2525 noopener\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/Screen-Shot-2012-12-11-at-10.14.56-PM.png-300x169.jpg?resize=300%2C169\" alt=\"Screen Shot 2012-12-11 at 10.14.56 PM.png\" width=\"300\" height=\"169\" \/><\/a><figcaption class=\"wp-caption-text\">listening to music from my comp<\/figcaption><\/figure>\n<figure style=\"width: 290px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/12\/Screen-Shot-2012-12-11-at-10.07.23-PM.png-300x167.jpg?resize=300%2C167\" alt=\"Screen Shot 2012-12-11 at 10.07.23 PM.png\" width=\"300\" height=\"167\" \/><figcaption class=\"wp-caption-text\">Testing out a new subwoofer<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<h1>Future work<\/h1>\n<p>This project is far from done!\u00a0I plan to eventually move everything off the breadboard, re-wire and solder the components to a real circuit board, and fit everything nicely into a small box. Meanwhile, it would be nice to find a workaround for the non-fullscreen spectrogram; if I can&#8217;t, it is fun to experiment with different ways of visualizing sound on this device. Maybe adding the ability to choose between a mic or &#8216;line-in&#8217; jack would be cool too.<\/p>\n<p>Thanks for reading &#8211; Please share if you enjoyed this post, and good luck if you plan to try it out yourself!<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Audio Frequency Spectrum Analyzer &amp;\u00a0Spectrogram As a followup to a previous post on Music Visualization with Processing (and a good excuse to play with my Arduino), I decided to convert my Processing music visualizer into hardware. The project is not finished yet, but I wanted to post a quick update and how-to on making what &#8230; <a title=\"Music Visualization with an Arduino\" class=\"read-more\" href=\"https:\/\/mcclanahoochie.com\/blog\/2012\/12\/music-visualization-with-an-arduino\/\" aria-label=\"Read more about Music Visualization with an Arduino\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1],"tags":[78,79,83,77,84,82,80,101,29,81],"class_list":["post-2514","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-arduino","tag-audio","tag-circuit","tag-diy","tag-fft","tag-microcontroller","tag-music","tag-programming","tag-projects","tag-visualization"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pZdXI-Ey","jetpack-related-posts":[{"id":1762,"url":"https:\/\/mcclanahoochie.com\/blog\/2011\/09\/music-visualization-with-processing\/","url_meta":{"origin":2514,"position":0},"title":"Music Visualization with Processing","author":"mcclanahoochie","date":"September 5, 2011","format":false,"excerpt":"Live Spectrogram Re-Inspired by the awesome artistic works in\u00a0Resonance the Film, a TED talk on generative music videos,\u00a0and then remembering the good ol' days of MilkDrop\u00a0magic, I found myself captivated and wanting to learn more about music visualization\u00a0and how I could create my own. Since I will be using Processing\u2026","rel":"","context":"In \"music\"","block_context":{"text":"music","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/music\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/09\/spect-bmsr-milkskates.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":2614,"url":"https:\/\/mcclanahoochie.com\/blog\/2012\/12\/last-post-of-2012\/","url_meta":{"origin":2514,"position":1},"title":"Last Post of 2012","author":"mcclanahoochie","date":"December 31, 2012","format":false,"excerpt":"Nothing important here, just a few highlights reflecting back on 2012... January\u00a0- Started my first 365 photo project February\u00a0- My photo on display in a random art show on campus March\u00a0- Went to SXSW in Austin TX April\u00a0- Upgraded to a Nikon D7000\u00a0\u00a0| \u00a0created PyrDetail May\u00a0- Finished\u00a0MSCS degree from GaTech\u2026","rel":"","context":"In \"life\"","block_context":{"text":"life","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/life\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":877,"url":"https:\/\/mcclanahoochie.com\/blog\/2011\/01\/mpguino\/","url_meta":{"origin":2514,"position":2},"title":"MPGuino (Arduino for Car MPG)","author":"mcclanahoochie","date":"January 1, 2011","format":false,"excerpt":"August 2009 This is an\u00a0Arduino microcontroller that I wired into my car's ECU and programmed to calculate the instantaneous\/average miles per gallon of my 2002 Honda Civic. The circuit reads pulses from the Vehicle Speed Sensor and Fuel Injector wires. It\u00a0is wired into my car via a USB cable. It's\u2026","rel":"","context":"In \"arduino\"","block_context":{"text":"arduino","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/arduino\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/01\/mpguino.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":3709,"url":"https:\/\/mcclanahoochie.com\/blog\/2016\/10\/many-hours-day\/","url_meta":{"origin":2514,"position":3},"title":"Only So Many Hours in the Day","author":"mcclanahoochie","date":"October 15, 2016","format":false,"excerpt":"In an effort to simplify my life and establish more balance, I've decided to write down everything that I spend a significant amount of time doing. This started with just a list of hobbies, to help me narrow-down and prioritize my \"free time\" \u00a0[free-time is almost not a word in\u2026","rel":"","context":"In \"hobbies\"","block_context":{"text":"hobbies","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/hobbies\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":884,"url":"https:\/\/mcclanahoochie.com\/blog\/2011\/01\/sprime\/","url_meta":{"origin":2514,"position":4},"title":"SPRIME","author":"mcclanahoochie","date":"January 1, 2011","format":false,"excerpt":"April 2010 Simple Powerline Remote Interactive Monitor and Enforcer SPRIME\u00a0 is an outlet that allows\u00a0you to monitor power consumption and control power usage remotely, using a\u00a0computer or even an Android phone. SPRIME is an open-source smart-grid technology. \u00a0 \u00a0 SPRIME GT-RNOC\u00a0poster: \u00a0 SPRIME\u00a0pictures: \u00a0 \u00a0 Awards SPRIME has made it\u2026","rel":"","context":"In \"arduino\"","block_context":{"text":"arduino","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/arduino\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/01\/sprime-icon.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":882,"url":"https:\/\/mcclanahoochie.com\/blog\/2011\/01\/uroc-gpgpu-poster\/","url_meta":{"origin":2514,"position":5},"title":"UROC GPGPU Poster","author":"mcclanahoochie","date":"January 1, 2011","format":false,"excerpt":"April 2010 I find\u00a0graphics card programming fascinating. I presented a\u00a0UROC Poster on GPGPU Molecular Dynamics\u00a0analysis and visualization on the GPU at the 2010 Georgia Tech Undergraduate\u00a0Research\u00a0Symposium. I also had a cool demo set up of the system running (above), along with my Android bonds\u00a0visualization client. \u00a0 \u00a0","rel":"","context":"In \"bonds\"","block_context":{"text":"bonds","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/bonds\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/01\/bonds.png?resize=350%2C200","width":350,"height":200},"classes":[]}],"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/posts\/2514","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/comments?post=2514"}],"version-history":[{"count":0,"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/posts\/2514\/revisions"}],"wp:attachment":[{"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/media?parent=2514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/categories?post=2514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/tags?post=2514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}