{"id":271,"date":"2010-12-02T21:19:30","date_gmt":"2010-12-02T21:19:30","guid":{"rendered":"http:\/\/aaronlevisohn.com\/wordpress\/?p=271"},"modified":"2016-03-03T07:52:06","modified_gmt":"2016-03-03T07:52:06","slug":"beatbender","status":"publish","type":"post","link":"https:\/\/levisohn.com\/portfolio\/archives\/271","title":{"rendered":"BeatBender"},"content":{"rendered":"<p align=\"left\">BeatBender is a computer music project that explores a new method for generating emergent rhythmic drum patterns using the subsumption architecture. Rather than explicitly coding symbolic intelligence into the system using procedural algorithms, BeatBender uses a behavior-based model to elicit emergent rhythmic output from six autonomous agents.<!--more--> From an artistic perspective, the rules used to define the agent behavior provide a simple but original composition language. This language allows the composer to express simple and meaningful constraints that direct the behavior of the agent-percussionists. From these simple rules emerge unexpected behavioral interactions that direct the formation of complex rhythmic output. What is striking is that these rhythmic patterns, whose complexity is beyond human grasp, are both musically interesting and aesthetically pleasing.<\/p>\n<p>The following section demonstrates an example of the complex rhythmic output the system is capable of generating. The composition below utilizes five rules applied to each of the six agents in the system. The rules make comparisons between adjacent agents and depending on their states (either on or off) the current agent&#8217;s state is changed.<\/p>\n<p>The rules used in the final composition are represented below in textual as well as both visual and audio format. The visual representation uses the characters &#8220;<strong>X<\/strong>&#8221; and &#8220;<strong>_<\/strong>&#8221; to represent ON and OFF states respectively. In the textual descriptions the following abbreviations are used:<\/p>\n<blockquote><p><strong>P = Previous Agent<\/strong><\/p>\n<p><strong>N = Next Agent<\/strong><\/p><\/blockquote>\n<h2><span style=\"color: #888888;\">final composition<\/span><\/h2>\n<p>The following composition results in a rhythm that plays 38,387 beats before repeating.<\/p>\n<p><strong><span style=\"color: #888888;\">Uses 5 subsumption layers with the following rules:<\/span><\/strong><\/p>\n<blockquote><p><a href=\"#one\">RULE ONE:<\/a>\u00a0IF P=OFF THEN ON<\/p>\n<p><a href=\"#two\">RULE TWO:<\/a>\u00a0IF N = OFF THEN ON<\/p>\n<p><a href=\"#three\">RULE THREE<\/a>: IF P = N THEN FLIP<\/p>\n<p><a href=\"#four\">RULE FOUR:<\/a>\u00a0IF P = OFF THEN FLIP<\/p>\n<p><a href=\"#five\">RULE FIVE:<\/a>\u00a0IF N = OFF THEN FLIP<\/p><\/blockquote>\n<p style=\"padding-left: 30px;\"><a title=\"Final Version\" href=\"http:\/\/levisohn.com\/audio\/FinalVersion.mp3\" target=\"_parent\">Listen to Rhythm<\/a>\u00a0(MP3)<br \/>\n<a href=\"http:\/\/levisohn.com\/audio\/FinalVersion.pdf\">Visual Representation of Rhythm<\/a><\/p>\n<hr \/>\n<h2><a name=\"one\"><\/a><span style=\"color: #999999;\">rule one<\/span><\/h2>\n<blockquote><p><strong>IF P=OFF THEN ON<\/strong><\/p>\n<p><strong><\/strong>Length of Cycling Pattern: 6 Beats<br \/>\nX _ X _ X _<\/p><\/blockquote>\n<p><a title=\"Audio Sample\" href=\"http:\/\/levisohn.com\/audio\/rule1.mp3\" target=\"_blank\">Listen to Rhythm<\/a>\u00a0(MP3)<\/p>\n<hr \/>\n<h2><a name=\"two\"><\/a><span style=\"color: #999999;\">rule two<\/span><\/h2>\n<blockquote><p><strong>\u00a0<\/strong><strong>IF N = OFF THEN ON<\/strong><\/p>\n<p>Length of Cycling Pattern: 6 Beats<\/p>\n<p>X X X X X _<\/p><\/blockquote>\n<p><a title=\"Audio Sample\" href=\"http:\/\/levisohn.com\/audio\/two.mp3\" target=\"_blank\">Listen to Rhythm<\/a>\u00a0(MP3)<\/p>\n<hr \/>\n<h2><span style=\"color: #999999;\"><a name=\"three\"><\/a>rule three<\/span><\/h2>\n<blockquote><p><strong>IF P = N THEN FLIP<\/strong><\/p>\n<p>Length of Cycling Pattern: 60 Beats<\/p>\n<p>X _ X _ X X<br \/>\nX X X X _ X<br \/>\n_ X _ _ _ _<br \/>\n_ _ X _ X _<br \/>\nX X X X X X<br \/>\n_ X _ X _ _<br \/>\n_ _ _ _ X _<br \/>\nX _ X X X X<br \/>\nX X _ X _ X<br \/>\n_ _ _ _ _ _<\/p><\/blockquote>\n<p><a title=\"Audio Sample\" href=\"http:\/\/levisohn.com\/audio\/rule3.mp3\" target=\"_blank\">Listen to Rhythm<\/a>\u00a0(MP3)<\/p>\n<hr \/>\n<h2><span style=\"color: #999999;\"><a name=\"four\"><\/a>rule four<\/span><\/h2>\n<blockquote><p><strong>IF P = OFF THEN\u00a0FLIP<\/strong><\/p>\n<p>Length of Cycling Pattern: 63 Beats<\/p>\n<p id=\"border2\">X _ X _ X _ _ X X<br \/>\n_ _ X _ _ _ X _ _<br \/>\nX _ X X _ X X _ _<br \/>\n_ X X X _ X _ _ _<br \/>\n_ X X _ X _ X X X<br \/>\n_ _ X X X X _ X X<br \/>\nX X X _ _ _ _ _ _<\/p>\n<\/blockquote>\n<p><a title=\"Audio Sample\" href=\"http:\/\/levisohn.com\/audio\/rule4.mp3\" target=\"_blank\">Listen to Rhythm\u00a0<\/a>(MP3)<\/p>\n<hr \/>\n<h2><span style=\"color: #999999;\"><a name=\"five\"><\/a>rule five<\/span><\/h2>\n<blockquote><p><strong>IF N = OFF THEN FLIP<\/strong><\/p>\n<p>Length of Cycling Pattern: 63 Beats<\/p>\n<p id=\"border2\">X X X X X _ X X X<br \/>\nX _ _ X X X _ X _<br \/>\nX X _ _ _ _ X _ X<br \/>\nX X _ _ _ X X _ X<br \/>\nX _ X _ _ X _ _ _<br \/>\nX _ _ X X _ _ X _<br \/>\nX _ X _ _ _ _ _ _<\/p>\n<\/blockquote>\n<p><a title=\"Audio Sample\" href=\"http:\/\/levisohn.com\/audio\/rule5.mp3\" target=\"_blank\">Listen to Rhythm<\/a>\u00a0(MP3)<\/p>\n<hr \/>\n<p><strong>Publication:<\/strong>\u00a0<a href=\"http:\/\/sfu.academia.edu\/AaronLevisohn\/Papers\/137005\/BeatBender_Subsumption_Architecture_for_Autonomous_Rhythm_Generation\">BeatBender: Subsumption Architecture for Autonomous Rhythm Generation<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<a href=\"https:\/\/levisohn.com\/portfolio\/archives\/271\"><img width=\"10\" height=\"10\" src=\"https:\/\/levisohn.com\/portfolio\/wp-content\/uploads\/beat_thumb_1501.gif\" class=\"alignleft tfe wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/a><p>BeatBender is a computer music project that explores a new method for generating emergent rhythmic drum patterns using the subsumption architecture. Rather than explicitly coding symbolic intelligence into the system using procedural algorithms, BeatBender uses a behavior-based model to elicit emergent rhythmic output from six autonomous agents.<\/p>\n","protected":false},"author":1,"featured_media":305,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[4],"tags":[],"class_list":["post-271","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-projects"],"_links":{"self":[{"href":"https:\/\/levisohn.com\/portfolio\/wp-json\/wp\/v2\/posts\/271","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/levisohn.com\/portfolio\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/levisohn.com\/portfolio\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/levisohn.com\/portfolio\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/levisohn.com\/portfolio\/wp-json\/wp\/v2\/comments?post=271"}],"version-history":[{"count":19,"href":"https:\/\/levisohn.com\/portfolio\/wp-json\/wp\/v2\/posts\/271\/revisions"}],"predecessor-version":[{"id":273,"href":"https:\/\/levisohn.com\/portfolio\/wp-json\/wp\/v2\/posts\/271\/revisions\/273"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/levisohn.com\/portfolio\/wp-json\/wp\/v2\/media\/305"}],"wp:attachment":[{"href":"https:\/\/levisohn.com\/portfolio\/wp-json\/wp\/v2\/media?parent=271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/levisohn.com\/portfolio\/wp-json\/wp\/v2\/categories?post=271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/levisohn.com\/portfolio\/wp-json\/wp\/v2\/tags?post=271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}