{"id":418,"date":"2024-09-03T18:32:43","date_gmt":"2024-09-03T18:32:43","guid":{"rendered":"https:\/\/metajack.org\/blog\/?p=418"},"modified":"2025-07-06T02:59:52","modified_gmt":"2025-07-06T02:59:52","slug":"compiling-phazorville","status":"publish","type":"post","link":"http:\/\/metajack.org\/blog\/2024\/09\/03\/compiling-phazorville\/","title":{"rendered":"Compiling phazorville"},"content":{"rendered":"\n<p>Notes on the steps I took to add my apps to phazorville.<\/p>\n\n\n\n<p>I believe the first time I used the arduino ide and the &#8220;old&#8221; method to create a firmware then likely manually uploaded it.<\/p>\n\n\n\n<p>I tried today to use the &#8220;new&#8221; way. I did the following:<br><\/p>\n\n\n\n<p><code>curl -fsSL -o get-platformio.py https:\/\/raw.githubusercontent.com\/platformio\/platformio-core-installer\/master\/get-platformio.py<br>python3 get-platformio.py<\/code><br><br>Which installed pio at :<br><br><code>~\/.platformio\/penv\/bin\/pio<\/code><br><br>I could then compile with:<br><br><code>~\/.platformio\/penv\/bin\/pio run -e pewpewpew<\/code><\/p>\n\n\n\n<p>This placed the compiled firmware at :<br><br><code>.pio\/build\/pewpewpew\/o_C-phazerville-v1.7_phz-410d674dirty.hex<\/code><\/p>\n\n\n\n<p>I added my own applets by putting the code into :<br><br>O_C-Phazerville\/software\/src\/applets<\/p>\n\n\n\n<p>and updating:<br><br><br><\/p>\n\n\n\n<p>Update July 5, 2025<br><br>start fresh on macos:<br><br>git clone https:\/\/github.com\/djphazer\/O_C-Phazerville.git<br>cd O_C-Phazerville<\/p>\n\n\n\n<p>ensure <code>~\/.platformio\/penv\/bin\/<\/code> exists<\/p>\n\n\n\n<p>cd software<br>complile with:<br>~\/.platformio\/penv\/bin\/pio run -e prod<br><br>or to upload after build<br><br>press the program button on the teensy on the module<br><br>~\/.platformio\/penv\/bin\/pio run -e prod -t upload <br><br>you&#8217;ll need the teensy loader installed on your computer.<br><br>To add a new applet:<br><br>1. Create a new AppletName.h file in :<br><br>O_C-Phazerville\/software\/src\/applets\/<br><br>all the code (yes, the code) will go in the .h file<br><br>2. edit O_C-Phazerville\/software\/src\/hemisphere_config.h<br><br>&#8211; add new lines for :<br><br>#include &#8220;applets\/AppletName.h&#8221;<br>DeclareApplet&lt;AppletName>{314, 0x02},<br><br><br>From Claude:<br><br><\/p>\n\n\n\n<p>Steps to Add a New Applet<br><\/p>\n\n\n\n<p>Create the applet file in \/software\/src\/applets\/YourAppletName.h<\/p>\n\n\n\n<p>Use the boilerplate template from software\/src\/applets\/Boilerplate.h.txt as your starting point<\/p>\n\n\n\n<p>Implement required methods:<\/p>\n\n\n\n<p>applet_name() &#8211; Return name (max 9 chars)<\/p>\n\n\n\n<p>Start(), Controller(), View()<\/p>\n\n\n\n<p>OnEncoderMove(), OnDataRequest(), OnDataReceive()<\/p>\n\n\n\n<p>SetHelp()<\/p>\n\n\n\n<p>Add include to software\/src\/hemisphere_config.h<\/p>\n\n\n\n<p>Register the applet in the AppletRegistry with a unique ID and category flags<\/p>\n\n\n\n<p>Optionally add documentation in docs\/_applets\/ The system uses inheritance from HemisphereApplet base class and template-based registration. Each applet gets a unique ID and category flags (0x01=Modulator, 0x02=Sequencer, etc.).<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Notes on the steps I took to add my apps to phazorville. I believe the first time I used the arduino ide and the &#8220;old&#8221; method to create a firmware then likely manually uploaded it. I tried today to use the &#8220;new&#8221; way. I did the following: curl -fsSL -o get-platformio.py https:\/\/raw.githubusercontent.com\/platformio\/platformio-core-installer\/master\/get-platformio.pypython3 get-platformio.py Which installed &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/metajack.org\/blog\/2024\/09\/03\/compiling-phazorville\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Compiling phazorville&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-418","post","type-post","status-publish","format-standard","hentry","category-uncategorized","entry"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/metajack.org\/blog\/wp-json\/wp\/v2\/posts\/418","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/metajack.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/metajack.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/metajack.org\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/metajack.org\/blog\/wp-json\/wp\/v2\/comments?post=418"}],"version-history":[{"count":5,"href":"http:\/\/metajack.org\/blog\/wp-json\/wp\/v2\/posts\/418\/revisions"}],"predecessor-version":[{"id":538,"href":"http:\/\/metajack.org\/blog\/wp-json\/wp\/v2\/posts\/418\/revisions\/538"}],"wp:attachment":[{"href":"http:\/\/metajack.org\/blog\/wp-json\/wp\/v2\/media?parent=418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/metajack.org\/blog\/wp-json\/wp\/v2\/categories?post=418"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/metajack.org\/blog\/wp-json\/wp\/v2\/tags?post=418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}