<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6127132400597215190</id><updated>2026-10-13T18:05:23.562-07:00</updated><category term="game"/><category term="XNA"/><category term="XBLIG"/><category term="graphics"/><category term="C#"/><category term="KFF"/><category term="audio"/><category term="terrain"/><category term="BlockZombies"/><category term="WPF"/><category term="Tunescape"/><category term="music"/><category term="HLSL"/><category term="Linux"/><category term="guitar"/><category term="WP7"/><category term="ld48"/><category term="Android"/><category term="art"/><category term="game design"/><category term="iOS"/><category term="TV3D"/><category term="arduino"/><category term="gadgets"/><category term="3DS"/><category term="Nintendo"/><category term="PSM"/><category term="Vita"/><category term="XML"/><category term="networking"/><category term="unmanaged"/><category term="vista"/><category term="water"/><category term="wireless"/><title type='text'>Nostatic Software Dev Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.nostatic.org/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>147</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-3044351186903629137</id><published>2026-05-23T08:26:20.993-07:00</published><updated>2026-05-23T08:26:20.994-07:00</updated><title type='text'>Building for Raspberry Pi using Github Actions</title><content type='html'>&lt;p&gt;While Raspberry Pi SBCs have gotten significantly more powerful over the years, they are still pretty limited compared to a PC when it come to compiling. Building a complicated project on a Pi4 or even a Pi5 can be slow, and it is easy to run out of memory when compiling on the smaller (ie: 1-2GB) versions.&lt;/p&gt;&lt;p&gt;I wanted to provide release binaries for Raspberry Pi for several of my GitHub projects, and didn&#39;t want to do a manual build and upload. Fortunately, with a bit of digging, I found and was able to use Pieter Pas&#39;&amp;nbsp;&amp;nbsp;&lt;a class=&quot;styles-module__contextCrumb__IzGIq prc-Breadcrumbs-Item-jcraJ&quot; data-component=&quot;Breadcrumbs.Item&quot; data-discover=&quot;true&quot; href=&quot;https://github.com/tttapa/docker-arm-cross-toolchain&quot;&gt;&lt;span class=&quot;styles-module__contextCrumbLast__tI2e3&quot;&gt;docker-arm-cross-toolchain&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;styles-module__contextCrumbLast__tI2e3&quot;&gt;&amp;nbsp;to build for Raspberry Pi using GitHub actions.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class=&quot;styles-module__contextCrumbLast__tI2e3&quot;&gt;Here is an example snippet for setting up a Pi4/Pi5 build matrix in a Github action:&lt;/span&gt;
&lt;/p&gt;&lt;pre class=&quot;csharpcode&quot;&gt;&lt;div style=&quot;overflow: auto; width: 670px;&quot;&gt;
name: Raspberry Pi Build

on:
  workflow_dispatch:
  
jobs:
  build-rpi:
    name: Build Raspberry Pi
    strategy:
      matrix:
        native_arch: [rpi4, rpi5]
    runs-on: ubuntu-latest
    container: 
      image: ghcr.io/tttapa/docker-arm-cross-toolchain:aarch64-rpi3-linux-gnu-gcc12
    steps:
      ...do something
&lt;/div&gt;&lt;/pre&gt;
&lt;p&gt;Note the &quot;gcc12&quot; at the end of the docker image path. This ensures that your RPi build will work on RPi OS versions going back to Bookworm.&lt;/p&gt;
&lt;p&gt;When you get to building, assuming that you are using CMake, you can specify the build tools by using:
&lt;/p&gt;&lt;pre class=&quot;csharpcode&quot;&gt;&lt;div style=&quot;overflow: auto; width: 670px;&quot;&gt;-DCMAKE_TOOLCHAIN_FILE=/home/develop/opt/x-tools/aarch64-rpi3-linux-gnu/aarch64-${{ matrix.native_arch }}-linux-gnu.toolchain.cmake&lt;/div&gt;&lt;/pre&gt;
&lt;p&gt;You can see this at work in my&lt;a class=&quot;styles-module__contextCrumb__IzGIq prc-Breadcrumbs-Item-jcraJ&quot; data-component=&quot;Breadcrumbs.Item&quot; data-discover=&quot;true&quot; href=&quot;https://github.com/mikeoliphant/neural-amp-modeler-lv2&quot;&gt;&lt;span class=&quot;styles-module__contextCrumbLast__tI2e3&quot;&gt;neural-amp-modeler-lv2&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;styles-module__contextCrumbLast__tI2e3&quot;&gt;&amp;nbsp;and&amp;nbsp;&lt;/span&gt;&lt;a class=&quot;styles-module__contextCrumb__IzGIq prc-Breadcrumbs-Item-jcraJ&quot; data-component=&quot;Breadcrumbs.Item&quot; data-discover=&quot;true&quot; href=&quot;https://github.com/mikeoliphant/NeuralAudio&quot;&gt;&lt;span class=&quot;styles-module__contextCrumbLast__tI2e3&quot;&gt;NeuralAudio&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;styles-module__contextCrumbLast__tI2e3&quot;&gt;&amp;nbsp;GitHub repositories. Have a look at the &quot;release&quot; GitHub actions.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/3044351186903629137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2026/05/building-for-raspberry-pi-using-github.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/3044351186903629137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/3044351186903629137'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2026/05/building-for-raspberry-pi-using-github.html' title='Building for Raspberry Pi using Github Actions'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-1336063304736091648</id><published>2025-02-10T09:42:00.000-08:00</published><updated>2025-02-10T11:17:15.016-08:00</updated><title type='text'>State of NAM on Raspberry Pi</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik3GiEjWxUNyxCAnjfaF46AK0bh57z6JR_pRShDW510QDnATx9WDe0XTayj87QVULCAbDMuAc8-Yh1VnPktg8D7i1OID85vBZqLUA3ctDOznZO1bQEwzRXvFA-NVwjji3SEpu_f71ZrqeNjT4deKY1p1iQe2Qn2CgaLMUxGmb9S2fHUVUImeBL3EDF5Vs/s1124/StompboxPi4.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;640&quot; data-original-width=&quot;1124&quot; height=&quot;364&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik3GiEjWxUNyxCAnjfaF46AK0bh57z6JR_pRShDW510QDnATx9WDe0XTayj87QVULCAbDMuAc8-Yh1VnPktg8D7i1OID85vBZqLUA3ctDOznZO1bQEwzRXvFA-NVwjji3SEpu_f71ZrqeNjT4deKY1p1iQe2Qn2CgaLMUxGmb9S2fHUVUImeBL3EDF5Vs/w640-h364/StompboxPi4.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;It&#39;s been almost two years now since I first posted a video of &lt;a href=&quot;https://blog.nostatic.org/2023/03/neural-amp-modeler-nam-running-on.html&quot;&gt;Neural Amp Modeler captures running on my Raspberry Pi 4&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A lot has changed since then.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Originally, the NAM playback code was extremely expensive. So much so that a Raspberry Pi 4 could only manage to run &quot;feather&quot; models.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Because I wanted to run more accurate models, NAM&amp;nbsp; optimization became a bit of a pet project. With some optimizations to the NAM Core codebase, we were able to increase performance by more than 2x. That, combined with more widespread availability of a 64bit OS for the Pi, made &quot;standard&quot; NAM captures possible - with plenty of headroom left for a cabinet IR and some light effects.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More recently, I have been working on &lt;a href=&quot;https://github.com/mikeoliphant/NeuralAudio&quot;&gt;my own implementation of WaveNet and LSTM models&lt;/a&gt;, with a focus on performance. The result of which, you can see running in the image above in my &lt;a href=&quot;https://github.com/mikeoliphant/StompboxUI&quot;&gt;Stompbox&lt;/a&gt; app.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note the numbers in the bottom left - that is the realtime CPU usage as reported by &lt;a href=&quot;https://jackaudio.org/&quot;&gt;Jack&lt;/a&gt;. This is running a &quot;standard&quot; NAM capture. Audio buffer size is 96 samples. CPU usage of &quot;standard&quot; models is now low enough that I can easily run two models at once, with plenty of CPU left over for IR and effects. I can even (just barely) run three models at once.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/1336063304736091648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2025/02/state-of-nam-on-raspberry-pi.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/1336063304736091648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/1336063304736091648'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2025/02/state-of-nam-on-raspberry-pi.html' title='State of NAM on Raspberry Pi'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEik3GiEjWxUNyxCAnjfaF46AK0bh57z6JR_pRShDW510QDnATx9WDe0XTayj87QVULCAbDMuAc8-Yh1VnPktg8D7i1OID85vBZqLUA3ctDOznZO1bQEwzRXvFA-NVwjji3SEpu_f71ZrqeNjT4deKY1p1iQe2Qn2CgaLMUxGmb9S2fHUVUImeBL3EDF5Vs/s72-w640-h364-c/StompboxPi4.png" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-6606729391153878544</id><published>2023-04-15T12:00:00.001-07:00</published><updated>2023-04-15T12:00:06.424-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="audio"/><category scheme="http://www.blogger.com/atom/ns#" term="guitar"/><title type='text'>This Boss SD-1 Pedal Does Not Exist</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA-MWiF80jFsFjGPOUB26maKUlAl4SKLV058pN3ITgpAyZi5rYQuRzNBHwO331J12FcLTuYPHnvV9NIR1HeZD0Ql9jFZBUZzVcejHZFifB9uAkO4gS-X1faAZQnLRTmDeE2yGC7999QdWMajXx20x5I3R9c_dQ8dsw7LNev8Rjjijqrzu2nJlSD1Yp/s743/BossSD1Circuit.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;393&quot; data-original-width=&quot;743&quot; height=&quot;339&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA-MWiF80jFsFjGPOUB26maKUlAl4SKLV058pN3ITgpAyZi5rYQuRzNBHwO331J12FcLTuYPHnvV9NIR1HeZD0Ql9jFZBUZzVcejHZFifB9uAkO4gS-X1faAZQnLRTmDeE2yGC7999QdWMajXx20x5I3R9c_dQ8dsw7LNev8Rjjijqrzu2nJlSD1Yp/w640-h339/BossSD1Circuit.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;I&#39;ve been messing around lately with combining &lt;a href=&quot;https://github.com/sdatkinson/neural-amp-modeler&quot;&gt;Neural Amp Modeler&lt;/a&gt; with another open source project I&#39;ve contributed to in the past - &lt;a href=&quot;https://github.com/dsharlet/LiveSPICE&quot;&gt;LiveSPICE&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;LiveSPICE allows you to simulate audio circuits in real-time, which is very cool. The disadvantage it has is that it is very CPU-heavy. It&#39;s CPU usage is also not super consistent, but can be spiky, which makes it hard to use in a live, low-latency environments without getting audio dropouts.&lt;/p&gt;&lt;p&gt;It *is* however, very easy to use it to generate training data for Neural Amp Modeler. So that&#39;s what I did.&lt;/p&gt;&lt;p&gt;Because it uses a simulation of the pedal circuit, the generated training audio has none of the added noise that is difficult to fully avoid when capturing actual pedals. This &quot;idealized&quot; version of the pedal should be even easier for the neural net model to learn.&lt;/p&gt;&lt;p&gt;And indeed, it is. Here is the ESR of a &quot;feather&quot; model (the smallest, least CPU-intensive default NAM model type).&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzmBE4ngGX229dnkTOfnCYUvHmX_M-F3fhvFY9ibkgal4OwNsK7LLlz_bIZMVQXD6MWQkUrgINUEk3_mn397mLmCfkqXbyPyZwWOMeHjgezJUTMMM7qKTdQbZcfXxIQ3qc-eRXyIz_j03B55MdTPP0Jkaj0VR53hatrS9ZeR0Uk_-BZaxhvdIRG-1M/s1303/BossSD1ESR.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;451&quot; data-original-width=&quot;1303&quot; height=&quot;222&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzmBE4ngGX229dnkTOfnCYUvHmX_M-F3fhvFY9ibkgal4OwNsK7LLlz_bIZMVQXD6MWQkUrgINUEk3_mn397mLmCfkqXbyPyZwWOMeHjgezJUTMMM7qKTdQbZcfXxIQ3qc-eRXyIz_j03B55MdTPP0Jkaj0VR53hatrS9ZeR0Uk_-BZaxhvdIRG-1M/w640-h222/BossSD1ESR.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;It shows 0.000, but it was actually around 0.0001.&lt;/p&gt;&lt;p&gt;You can get the resulting .nam model &lt;a href=&quot;https://tonehunt.org/MikeOliphant/2ad4f8d1-1710-403c-aab3-c44ff15c137f&quot;&gt;here on ToneHunt&lt;/a&gt;.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/6606729391153878544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2023/04/this-boss-sd-1-pedal-does-not-exist.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/6606729391153878544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/6606729391153878544'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2023/04/this-boss-sd-1-pedal-does-not-exist.html' title='This Boss SD-1 Pedal Does Not Exist'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA-MWiF80jFsFjGPOUB26maKUlAl4SKLV058pN3ITgpAyZi5rYQuRzNBHwO331J12FcLTuYPHnvV9NIR1HeZD0Ql9jFZBUZzVcejHZFifB9uAkO4gS-X1faAZQnLRTmDeE2yGC7999QdWMajXx20x5I3R9c_dQ8dsw7LNev8Rjjijqrzu2nJlSD1Yp/s72-w640-h339-c/BossSD1Circuit.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-6403086768845506748</id><published>2023-03-08T12:39:00.007-08:00</published><updated>2023-03-28T10:34:54.890-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="audio"/><category scheme="http://www.blogger.com/atom/ns#" term="guitar"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="music"/><title type='text'>Neural Amp Modeler (NAM) running on Raspberry Pi</title><content type='html'>&lt;div&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;360&quot; src=&quot;https://www.youtube.com/embed/2I_bxxzQs2s&quot; width=&quot;640&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;Recently I&#39;ve been messing around with, and contributing to the &lt;a href=&quot;https://github.com/sdatkinson/neural-amp-modeler&quot;&gt;Neural Amp Modeler&lt;/a&gt;&amp;nbsp;project. It uses machine learning (more specifically the &lt;a href=&quot;https://www.deepmind.com/blog/wavenet-a-generative-model-for-raw-audio&quot;&gt;WaveNet&lt;/a&gt;&amp;nbsp;model) to create captures of amplifiers and distortion pedals.&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;It has been gaining a lot of traction recently, with lots of people modeling their equipment. The resulting models are very good.&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;I&#39;ve now got it integrated into my &lt;a href=&quot;https://blog.nostatic.org/2020/11/guitar-amplifier-and-pedal-simulation.html&quot;&gt;Raspberry Pi pedalboard.&lt;/a&gt;&amp;nbsp;The audio for the above video was recorded on a Raspberry Pi 4.&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;The hardware on the pedalboard consists of:&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;- Raspberry Pi 4&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;- Hotone Jogg audio interface&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;- Hotone Ampero Control MIDI Controller&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;- Wio Terminal (used for a &lt;a href=&quot;https://github.com/mikeoliphant/SerialTFT&quot;&gt;serial-based display&lt;/a&gt;)&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;My pedalboard is using a custom app on top of Jack audio, but I have also made a &lt;a href=&quot;https://github.com/mikeoliphant/neural-amp-modeler-lv2&quot;&gt;Neural Amp Modeler LV2 plugin available&lt;/a&gt;.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/6403086768845506748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2023/03/neural-amp-modeler-nam-running-on.html#comment-form' title='26 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/6403086768845506748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/6403086768845506748'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2023/03/neural-amp-modeler-nam-running-on.html' title='Neural Amp Modeler (NAM) running on Raspberry Pi'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/2I_bxxzQs2s/default.jpg" height="72" width="72"/><thr:total>26</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-5142092793011997180</id><published>2022-09-13T09:15:00.005-07:00</published><updated>2022-09-13T09:16:53.061-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="music"/><title type='text'>Chord data for jazz standards</title><content type='html'>I recently started playing jazz on bass guitar. So naturally, I also recently started writing software for facilitating jazz practice.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As a basis for a number of my projects, I needed access to chord data from a corpus of jazz standards. The best source I found was the database of user-submitted scores for the IReal mobile app: &lt;a href=&quot;https://www.irealpro.com/main-playlists&quot;&gt;https://www.irealpro.com/main-playlists&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I&#39;ve been converting these to an easy-to parse json format. The current database of songs can be found here:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/mikeoliphant/JazzStandards&quot;&gt;https://github.com/mikeoliphant/JazzStandards&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is an example score:&amp;nbsp; &amp;nbsp;
  &lt;pre class=&quot;csharpcode&quot;&gt;  &lt;div style=&quot;overflow: auto; width: 670px;&quot;&gt;
  {
  &quot;Title&quot;: &quot;Alone Together&quot;,
  &quot;Composer&quot;: &quot;Schwartz Arthur&quot;,
  &quot;Key&quot;: &quot;D-&quot;,
  &quot;Rhythm&quot;: &quot;Medium Swing&quot;,
  &quot;Sections&quot;: [
    {
      &quot;Label&quot;: &quot;A&quot;,
      &quot;MainSegment&quot;: {
        &quot;Chords&quot;: &quot;Dm6|Em7b5,A7b9|Dm6|Em7b5,A7b9|Dm6|Am7b5,D7b9|Gm7|Gm7|Bm7,E7|Gm7,C7|Fmaj7|Em7b5,A7b9&quot;
      },
      &quot;Endings&quot;: [
        {
          &quot;Chords&quot;: &quot;Dmaj7|D(Em7b5),(A7b9)&quot;
        },
        {
          &quot;Chords&quot;: &quot;Dmaj7|Dmaj7&quot;
        }
      ]
    },
    {
      &quot;Label&quot;: &quot;B&quot;,
      &quot;MainSegment&quot;: {
        &quot;Chords&quot;: &quot;Am7b5|D7b9|Gm6|Gm6|Gm7b5|C7b9|Fmaj7|Em7b5,A7b9&quot;
      },
      &quot;Endings&quot;: []
    },
    {
      &quot;Label&quot;: &quot;A&quot;,
      &quot;MainSegment&quot;: {
        &quot;Chords&quot;: &quot;Dm6|Em7b5,A7b9|Dm6|Em7b5,A7b9|Dm6,Bm7b5|Bb7,A7b9|Dm6|Em7b5,A7b9&quot;
      },
      &quot;Endings&quot;: []
    }
  ]
}
&lt;/div&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/5142092793011997180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2022/09/chord-data-for-jazz-standards.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/5142092793011997180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/5142092793011997180'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2022/09/chord-data-for-jazz-standards.html' title='Chord data for jazz standards'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-5135722903450741043</id><published>2021-10-29T08:47:00.006-07:00</published><updated>2021-10-29T08:48:39.456-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="graphics"/><title type='text'>Arduino sketch for TFT display rendering using serial commands</title><content type='html'>&lt;p&gt;I&#39;ve been using a &lt;a href=&quot;https://www.seeedstudio.com/Wio-Terminal-p-4509.html&quot;&gt;Seeed Studio Wio Terminal&lt;/a&gt; as an external display for a Raspberry Pi. I initially wrote an Arduino sketch that took high level, application-specific commands over serial and rendered appropriate display elements. This has the disadvantage that adding UI features required updating the Arduino code, which is more of a pain and slower to iterate on.&lt;/p&gt;&lt;p&gt;Instead, I&#39;m now planning on sending rendering commands over the serial interface - turning the microcontroller into a general purpose rendering device.&lt;/p&gt;&lt;p&gt;I&#39;ve thrown my initial code up on GitHub here:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/mikeoliphant/SerialTFT&quot;&gt;github.com/mikeoliphant/SerialTFT&lt;/a&gt;&lt;/p&gt;&lt;p&gt;It currently only supports a small set of commands for rendering rectangles and text. I&#39;ll be adding more features as I need them.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/5135722903450741043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2021/10/arduino-sketch-for-tft-display.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/5135722903450741043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/5135722903450741043'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2021/10/arduino-sketch-for-tft-display.html' title='Arduino sketch for TFT display rendering using serial commands'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-3765700155940100726</id><published>2021-10-17T13:50:00.007-07:00</published><updated>2021-10-17T14:50:58.773-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="arduino"/><category scheme="http://www.blogger.com/atom/ns#" term="graphics"/><title type='text'>Speeding up Arduino TFT (TFT_eSPI) writes</title><content type='html'>&lt;p&gt;&amp;nbsp;I&#39;ve been recently playing around with &quot;Arduino&quot; microcontroller stuff - specifically a &lt;a href=&quot;https://www.seeedstudio.com/Wio-Terminal-p-4509.html&quot;&gt;Seeed Studio Wio Terminal&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Playing around with the TFT display, I noticed that drawing to it was pretty slow. After doing some research, I found out that direct TFT writes are indeed quite slow. But there is an easy way around it.&lt;/p&gt;&lt;p&gt;The &lt;a href=&quot;https://github.com/Bodmer/TFT_eSPI&quot;&gt;TFT_eSPI graphics library&lt;/a&gt;, a modified version of which is used by the Wio Terminal, provides a Sprite class that can be used to do quick TFT writes. If you have enough memory (which the Wio Terminal *just* barely does), you can create a full screen-sized sprite.&lt;/p&gt;&lt;p&gt;The Sprite class supports the same drawing API as the main TFT class, so it is pretty easy to convert code that is writing directly to the TFT to use a Sprite instead.&lt;/p&gt;&lt;p&gt;To initialize it, do this:&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;TFT_eSPI tft = TFT_eSPI();&lt;/div&gt;&lt;div&gt;TFT_eSprite screen = TFT_eSprite(&amp;amp;tft);&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;In your setup(), after initializing the TFT, do this:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;screen.createSprite(tft.width(), tft.height());&lt;/blockquote&gt;&lt;p&gt;Then, use &quot;screen&quot; instead of &quot;tft&quot; for all of your drawing calls. When you want to update the TFT with the current state of your sprite, do this:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&amp;nbsp;screen.pushSprite(0, 0);&lt;/blockquote&gt;&lt;p&gt;That&#39;s it! The result is a display that will update *much* faster.&lt;/p&gt;&lt;p&gt;One caveat is that this method uses up the vast majority of the Wio Terminal&#39;s RAM. It works fine for me, since my application is not otherwise particularly memory hungry. More complicated applications (using WiFi, for example) may run into problems. If that happens, a good (if more complicated) solution would be to use a smaller screen area sprite and do targeted writes to sub-areas of the screen.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/3765700155940100726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2021/10/speeding-up-arduino-tft-tftespi-writes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/3765700155940100726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/3765700155940100726'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2021/10/speeding-up-arduino-tft-tftespi-writes.html' title='Speeding up Arduino TFT (TFT_eSPI) writes'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-1520256895684620453</id><published>2021-10-04T16:00:00.002-07:00</published><updated>2021-10-17T13:56:10.219-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="audio"/><category scheme="http://www.blogger.com/atom/ns#" term="guitar"/><title type='text'>Fixing Hotone Jogg ASIO &quot;No devices connected&quot; issue</title><content type='html'>&lt;p&gt;I recently ordered a Hotone Jogg guitar audio interface pedal and had trouble getting the Windows 10 ASIO drivers to work. Turns out that ASIO support was added with a firmware update, and the pedal I got had the old firmware.&lt;/p&gt;&lt;p&gt;If you are having this problem, you need to get the updated firmware from here:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.hotoneaudio.com/support/2&quot;&gt;https://www.hotoneaudio.com/support/2&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Scroll down until you see &quot;Jogg firmware with Hotone ASIO driver support&quot; and click on the link to download the firmware.&lt;/p&gt;&lt;p&gt;Follow the included instructions (you have to open up the unit to flip a dip switch, which is not very user friendly) and you should soon be good to go.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/1520256895684620453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2021/10/fixing-hotone-jogg-asio-no-devices.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/1520256895684620453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/1520256895684620453'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2021/10/fixing-hotone-jogg-asio-no-devices.html' title='Fixing Hotone Jogg ASIO &quot;No devices connected&quot; issue'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-1013095658144606306</id><published>2021-10-04T15:53:00.003-07:00</published><updated>2021-10-17T13:55:44.795-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="audio"/><category scheme="http://www.blogger.com/atom/ns#" term="guitar"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>Hotone Jogg audio interface pedal works in Linux</title><content type='html'>&lt;p&gt;&amp;nbsp;After posting a number of previous posts about guitar audio interfaces that did not work out of the box, I am pleased to report that the Hotone Jogg works right out of the box in Linux. Pleasant surprise!&lt;/p&gt;&lt;p&gt;I couldn&#39;t find any information on using this device with Linux, so I thought I&#39;d do this brief post for any future people that may be looking.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/1013095658144606306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2021/10/hotone-jogg-audio-interface-pedal-works.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/1013095658144606306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/1013095658144606306'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2021/10/hotone-jogg-audio-interface-pedal-works.html' title='Hotone Jogg audio interface pedal works in Linux'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-3823589089636232112</id><published>2021-01-20T14:33:00.004-08:00</published><updated>2021-01-22T15:18:47.116-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="audio"/><category scheme="http://www.blogger.com/atom/ns#" term="guitar"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>NUX MG-300 Guitar Processor under Linux and Android</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6tLt9rdHMYIU2aQr4YBAOUSW-sRDZgrO8W2RduS86RYyz53qv_QeGHzC9lMWHlNLh4TKweQ5fgcNcFkRMqMjyYTfujptW8CO-xFPAvS_4SJwmn6KqhPTCE6TNO2Ah0FM-LSnUhTrcMII/s717/Nux.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;495&quot; data-original-width=&quot;717&quot; height=&quot;276&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6tLt9rdHMYIU2aQr4YBAOUSW-sRDZgrO8W2RduS86RYyz53qv_QeGHzC9lMWHlNLh4TKweQ5fgcNcFkRMqMjyYTfujptW8CO-xFPAvS_4SJwmn6KqhPTCE6TNO2Ah0FM-LSnUhTrcMII/w400-h276/Nux.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;I picked up a NUX MG-300 guitar effects unit with high hopes that it would work under Linux, since it is supposed to be a class-compliant USB audio device.&lt;/p&gt;&lt;p&gt;Unfortunately, it did not work out of the box. After some back and forth with the maintainer of the Linux kernel sound subsystem, we managed to get audio capture working, but never managed to get playback working. Everything seems to be operating correctly, but the device produces no audio output over USB.&lt;/p&gt;&lt;p&gt;I have admitted defeat and will be returning the device.&lt;/p&gt;&lt;p&gt;The discussion on the alsa-devel mailing list can be found here:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://mailman.alsa-project.org/pipermail/alsa-devel/2021-January/179348.html&quot;&gt;https://mailman.alsa-project.org/pipermail/alsa-devel/2021-January/179348.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;It at least resulted in a kernel patch to enable audio capture.&lt;/p&gt;&lt;p&gt;I also had no success getting it to work with Android - even with some of the apps that have their own custom USB audio implementation.&lt;/p&gt;&lt;p&gt;If anyone has more luck with this interface down the road, please let me know.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; As a last ditch effort, I gave the interface a try with the aforementioned kernel patch on my Raspberry Pi 4, which was running about a year old kernel version. And it worked. Sort of. It initially worked perfectly, but I found after more testing that it is sporadic. Sometimes it worked fine, sometimes only playback worked, and sometimes only capture worked. Not sure what needs to be done to get the interface working reliably.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/3823589089636232112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2021/01/nux-mg-300-guitar-processor-under-linux.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/3823589089636232112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/3823589089636232112'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2021/01/nux-mg-300-guitar-processor-under-linux.html' title='NUX MG-300 Guitar Processor under Linux and Android'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6tLt9rdHMYIU2aQr4YBAOUSW-sRDZgrO8W2RduS86RYyz53qv_QeGHzC9lMWHlNLh4TKweQ5fgcNcFkRMqMjyYTfujptW8CO-xFPAvS_4SJwmn6KqhPTCE6TNO2Ah0FM-LSnUhTrcMII/s72-w400-h276-c/Nux.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-6226085530309444390</id><published>2020-11-03T12:22:00.013-08:00</published><updated>2020-11-03T12:25:36.886-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="audio"/><category scheme="http://www.blogger.com/atom/ns#" term="guitar"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="WPF"/><title type='text'>Guitar amplifier and pedal simulation</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMX1WrrvbLxOqt_RD_VHZ7Q6Ii5-XlMZzXf2MD88PRdCgQNyGeZt8wDmXbqWeB82xbKr9b1rWt_eUZtZWh6PkCmEF2_bYqKjsvx0itCYmtBPnO4JmGLnWSOTuBAqIBzvzfYY7IURxzQB8/s1047/GuitarSim.png&quot; style=&quot;display: block; padding: 1em 0px; text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; data-original-height=&quot;449&quot; data-original-width=&quot;1047&quot; height=&quot;274&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMX1WrrvbLxOqt_RD_VHZ7Q6Ii5-XlMZzXf2MD88PRdCgQNyGeZt8wDmXbqWeB82xbKr9b1rWt_eUZtZWh6PkCmEF2_bYqKjsvx0itCYmtBPnO4JmGLnWSOTuBAqIBzvzfYY7IURxzQB8/w640-h274/GuitarSim.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

I&#39;ve been spending a lot of time lately playing guitar, and working on my own software for simulating guitar amplifiers and pedals. It is coming along nicely, and I have most of the important stuff covered.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I run it as a VST under Windows, but I also have a Linux version that I run on a Raspberry Pi 4. Coupled with a USB audio interface, a PA speaker, and a remote control app on my phone, it makes for a nice little portable rig.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Here is a little video of it in action (running as a VST in Reaper):&lt;div&gt;&lt;br /&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;iframe allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;360&quot; src=&quot;https://www.youtube.com/embed/5ScC4a8hoVs&quot; width=&quot;640&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/6226085530309444390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2020/11/guitar-amplifier-and-pedal-simulation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/6226085530309444390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/6226085530309444390'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2020/11/guitar-amplifier-and-pedal-simulation.html' title='Guitar amplifier and pedal simulation'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMX1WrrvbLxOqt_RD_VHZ7Q6Ii5-XlMZzXf2MD88PRdCgQNyGeZt8wDmXbqWeB82xbKr9b1rWt_eUZtZWh6PkCmEF2_bYqKjsvx0itCYmtBPnO4JmGLnWSOTuBAqIBzvzfYY7IURxzQB8/s72-w640-h274-c/GuitarSim.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-1816427161468225944</id><published>2020-08-22T13:53:00.014-07:00</published><updated>2020-08-25T11:16:45.741-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="audio"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>Starting JACK automatically when a USB audio device is connected</title><content type='html'>&lt;p&gt;I have a Raspberry Pi that I&#39;m using headless for audio, and I wanted to automatically start jackd when I connected my USB audio device.&lt;/p&gt;&lt;p&gt;There are a lot of ways to try to do this - after a few false starts, I ended up with this method. It took me long enough to sort out the details that I figured I&#39;d write up a little how-to.&lt;/p&gt;&lt;p&gt;This solution is composed of two parts: 1) set up jackd as a systemd service, and 2) use a udev rule to start the service when the sound card is connected.&lt;/p&gt;&lt;p&gt;First the service. Create a file called &#39;&lt;b&gt;/etc/systemd/system/jackd.service&lt;/b&gt;&#39; with the following:&lt;/p&gt;

&lt;pre class=&quot;csharpcode&quot;&gt;[Unit]
Description=JACK audio
After=network.target

[Service]
ExecStart=/usr/bin/jackd &amp;lt;your jack commandline arguments here&amp;gt;
WorkingDirectory=/usr/local/bin
StandardOutput=inherit
StandardError=inherit
Restart=always
User=root

[Install]
WantedBy=multi-user.target&lt;/pre&gt;

&lt;p&gt;Now (or at least after you reboot, or do &#39;&lt;b&gt;sudo systemctl daemon-reload&lt;/b&gt;&#39;, you can start and stop jackd with &#39;&lt;b&gt;sudo systemctl start jackd.service&lt;/b&gt;&#39; and &#39;&lt;b&gt;sudo systemctl stop jackd.service&lt;/b&gt;&#39;. I&#39;m running the service as root - if you want to use a different user, change the &quot;User=&quot; line.&lt;/p&gt;&lt;p&gt;We want this to happen automatically, though, so it is time to use udev - the system for managing Linux device events.&lt;/p&gt;&lt;p&gt;First, you need to know some information about your USB audio device. Plug it in, and run &#39;lsusb&#39;. You should see something like this:&lt;/p&gt;
&lt;pre class=&quot;csharpcode&quot;&gt;Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0582:01d6 Roland Corp.
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;/pre&gt;

&lt;p&gt;Look for your sound card device in the list (mine is showing as &quot;Roland Corp.&quot;), and note the two hex numbers after ID. They are the USB Vender and Product IDs for your device.&lt;/p&gt;&lt;p&gt;Create a file called something like &#39;&lt;b&gt;/etc/udev/rules.d/80-local.rules&lt;/b&gt;&#39; with the following in it:&lt;/p&gt;

&lt;pre class=&quot;csharpcode&quot;&gt;&lt;div style=&quot;width:670px;overflow:auto;&quot;&gt;ACTION==&quot;add&quot;, ATTR{idVendor}==&quot;0582&quot;, ATTR{idProduct}==&quot;01d6&quot;, TAG+=&quot;systemd&quot;, ENV{SYSTEMD_WANTS}=&quot;jackd.service&quot;&lt;/div&gt;&lt;/pre&gt;

&lt;p&gt;Where the values for &#39;&lt;b&gt;ATTR{idVendor}&lt;/b&gt;&#39; and &#39;&lt;b&gt;ATTR{idProduct}&lt;/b&gt;&#39; are the Vendor and Product IDs you got from lsusb.&lt;/p&gt;&lt;p&gt;After your next reboot, or after running &#39;&lt;b&gt;sudo udevadm control --reload&lt;/b&gt;&#39;, you new rule should be ready. When you plug in your sound card, the udev rule will fire and request your service, which will then start jackd.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/1816427161468225944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2020/08/starting-jack-automatically-when-usb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/1816427161468225944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/1816427161468225944'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2020/08/starting-jack-automatically-when-usb.html' title='Starting JACK automatically when a USB audio device is connected'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-3482110966587981211</id><published>2020-01-30T09:37:00.000-08:00</published><updated>2020-01-30T09:43:49.943-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="audio"/><category scheme="http://www.blogger.com/atom/ns#" term="guitar"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="music"/><title type='text'>Using the Mod Devices guitar effects interface on Raspberry Pi 4</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisZVQFpRlPvAiboBrQ-ak8ukNBt2TkJOgf7ryUQKVZmRU0Fd9-2oZzHle8lv2B9MkWdpSzzQ3o7KgRuJny4RjmFMru4WwX3Zv0H9_Ts6xjsJoNcGS4sCExEIHiMeTqDx42hEouT7rSfpo/s1600/ModPedalboard.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;652&quot; data-original-width=&quot;1186&quot; height=&quot;348&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisZVQFpRlPvAiboBrQ-ak8ukNBt2TkJOgf7ryUQKVZmRU0Fd9-2oZzHle8lv2B9MkWdpSzzQ3o7KgRuJny4RjmFMru4WwX3Zv0H9_Ts6xjsJoNcGS4sCExEIHiMeTqDx42hEouT7rSfpo/s640/ModPedalboard.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
My last post was about getting my&amp;nbsp;&lt;a href=&quot;http://blog.nostatic.org/2020/01/getting-boss-gt-1-effects-processor-to.html&quot;&gt;Boss GT-1 guitar effects floorboard to work in Linux&lt;/a&gt;. The reason I wanted to do this was to couple it with a Raspberry Pi to create a more configurable effect chain using &lt;a href=&quot;https://lv2plug.in/&quot;&gt;LV2 plugins&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Once I had audio working, I installed &lt;a href=&quot;https://guitarix.org/&quot;&gt;Guitarix&lt;/a&gt;, an open-source guitar effects stack for Linux, and I was quickly off to the races. Guitarix works really well, but the interface is designed for desktop use - not ideal for my needs.&lt;br /&gt;
&lt;br /&gt;
I had been aware of &lt;a href=&quot;https://www.moddevices.com/&quot;&gt;Mod Devices&lt;/a&gt; for a while, with their Mod Duo multi-effects hardware pedals built on top of Linux. They have added a slick, web-based pedalboard interface running on top of LV2 plugins. It is primarily designed for their hardware devices, but the project is open source.&lt;br /&gt;
&lt;br /&gt;
The folks over at blokas.io have a project called &lt;a href=&quot;https://blokas.io/modep/&quot;&gt;MODEP&lt;/a&gt;, which provides a custom Raspberry Pi image for running the Mod Devices interface. Unfortunately, it currently does not work on Raspberry Pi 4, which is what I have.&lt;br /&gt;
&lt;br /&gt;
So, I went straight to the &lt;a href=&quot;https://github.com/moddevices&quot;&gt;Mod Devices GitHub&lt;/a&gt; and built it myself. It turned out to be pretty straightforward, and I was up and running after about a half an hour of tinkering. I&#39;m going to try to outline what I did here in case anyone else wants to give it a try:&lt;br /&gt;
&lt;br /&gt;
Get&amp;nbsp;&lt;a href=&quot;https://jackaudio.org/&quot;&gt;Jack&lt;/a&gt; running with audio capture and playback - there is plenty of information out there on this&lt;br /&gt;
&lt;br /&gt;
Get the Mod software from GitHub:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp; git clone --depth 1 https://github.com/moddevices/mod-host&lt;br /&gt;
&amp;nbsp; git clone --depth 1 https://github.com/moddevices/mod-ui&lt;/blockquote&gt;
Install the tools you need to build the mod software. You&#39;ll need at least:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
sudo apt-get install virtualenv python3-pip python3-dev git build-essential libasound2-dev libjack-jackd2-dev liblilv-dev libjpeg-dev zlib1g-dev&lt;/blockquote&gt;
Build mod-host from the mod-host directory:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
cd mod-ui&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;/blockquote&gt;
Make sure Jack is running, and start mod-host:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
mod-host -n -p 5555 -f 5556&lt;/blockquote&gt;
In another shell, build mod-ui from the mod-ui directory:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
virtualenv modui-env&lt;br /&gt;
source modui-env/bin/activate&lt;br /&gt;
pip3 install -r requirements.txt&lt;br /&gt;
make -C utils&lt;/blockquote&gt;
Run mod-ui from the mod-ui directory (you will also need to do &quot;source modui-env/bin/activate&quot; first if you did not just do it in the above build step):&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
export MOD_DEV_HOST=0&lt;br /&gt;
export MOD_DEV_ENVIRONMENT=1&lt;br /&gt;
export MOD_APP=1&lt;br /&gt;
export MOD_LIVE_ISO=1&lt;br /&gt;
python3 ./server.py&lt;/blockquote&gt;
The mod-ui web server should now be running on port 8888. To access it, find out the IP address of your Raspberry Pi, and go to:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
http://YOUR-PI-IP:8888/&lt;/blockquote&gt;
You should see the Mod pedalboard interface. It should load whatever LV2 plugins you have in /usr/lib/lv2 with a generic look. In my case, I had Guitarix installed and all of its plugins were there and ready to be used.&lt;br /&gt;
&lt;br /&gt;
The Mod folks have custom UI overlays for most popular plugins. You can grab them here:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
git clone --depth 1 https://github.com/moddevices/mod-lv2-data&lt;/blockquote&gt;
Look in the &quot;plugins&quot; and &quot;plugins-fixed&quot; sub-folders for your plugins. If you copy a plugin folder over your existing plugin in /usr/lib/lv2, you will install the custom UI for the plugin.&lt;br /&gt;
&lt;br /&gt;
My Pi 4 has no trouble at all running a decently complex guitar effect stack, complete with multiple pedals and pre-amp and cabinet simulation, all at very low latency.</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/3482110966587981211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2020/01/using-mod-devices-guitar-effects.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/3482110966587981211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/3482110966587981211'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2020/01/using-mod-devices-guitar-effects.html' title='Using the Mod Devices guitar effects interface on Raspberry Pi 4'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisZVQFpRlPvAiboBrQ-ak8ukNBt2TkJOgf7ryUQKVZmRU0Fd9-2oZzHle8lv2B9MkWdpSzzQ3o7KgRuJny4RjmFMru4WwX3Zv0H9_Ts6xjsJoNcGS4sCExEIHiMeTqDx42hEouT7rSfpo/s72-c/ModPedalboard.jpg" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-8950146977754264909</id><published>2020-01-25T10:11:00.010-08:00</published><updated>2021-09-27T12:23:24.583-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="audio"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>Getting the Boss GT-1 effects processor to work in Linux</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhesRZNQk4prYkbtOyXPy0VvgA32obVmgQhT3u8Y0N3NFfDiweWvJk7xNE9LgyAJY-JbxxUd6CxhUXLyokrlsH-ug4k5E2t6a2g1pdcNlfdtSPnhdlsg5PhAa-vx2RvONBzrVCppaixzsc/s1600/gt-1_main.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;215&quot; data-original-width=&quot;431&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhesRZNQk4prYkbtOyXPy0VvgA32obVmgQhT3u8Y0N3NFfDiweWvJk7xNE9LgyAJY-JbxxUd6CxhUXLyokrlsH-ug4k5E2t6a2g1pdcNlfdtSPnhdlsg5PhAa-vx2RvONBzrVCppaixzsc/s1600/gt-1_main.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;b&gt;** Latest Update: The Boss GT-1 should be working out of the box as of Linux kernel v5.14.&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;/b&gt;&lt;hr /&gt;
&lt;br /&gt;
I recently picked up a Boss GT-1 guitar digital effects floorboard to use directly, and also to play with connecting it up to the Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
A month later, I have everything working well. As is often the case with niche gear and Linux, though, it was a bumpy road to get there. I&#39;m going to document the process here, in case it is helpful for anyone with a similar issue.&lt;br /&gt;
&lt;br /&gt;
I booted up my Pi, connected the GT-1 via USB, ran lsusb to list the available USB devices, and there it was. Great - that was easy!&lt;br /&gt;
&lt;br /&gt;
Next, I tried playing a .wav file with aplay. No go. No audio at all. Not so great.&lt;br /&gt;
&lt;br /&gt;
Time to start scouring the internet. After a while, I came across this thread on linuxmusicians.com:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://linuxmusicians.com/viewtopic.php?f=6&amp;amp;t=17180&quot;&gt;https://linuxmusicians.com/viewtopic.php?f=6&amp;amp;t=17180&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
It had a fix for another Boss device. It also turned out to work for &lt;a href=&quot;https://includeguitar.home.blog/2019/06/18/boss-katana-linux-%E2%9D%A4%EF%B8%8F/&quot;&gt;Boss Katana Amplifiers&lt;/a&gt;, which have a software setup that is very similar to my GT-1 device.&lt;br /&gt;
&lt;br /&gt;
I grabbed the kernel source code, applied the fix (with a tweak for my device), and soon I had working audio! Well, kind of working. I was getting pops and crackles every second or so - enough to make things unusable.&lt;br /&gt;
&lt;br /&gt;
To understand this fix, and why it wasn&#39;t quite working requires a bit of explanation on how USB audio works. There are a number of methods that devices use to synchronize audio timing. The one used by the Boss GT-1 (and many similar devices) is called &quot;implicit feedback&quot;. In simple terms, what this does is, on devices that have both a capture and playback that are controlled by the same clock, the capture source is used to determine the output data rate. Essentially, the host is in a USB feedback loop - outputting the same number of samples it receives - generally after doing some processing.&lt;br /&gt;
&lt;br /&gt;
The fix that got my interface working basically disables the implicit feedback mechanism. This got audio moving through the system, but because there was no timing feedback it was slightly off - resulting in the pops and crackles I was experiencing.&lt;br /&gt;
&lt;br /&gt;
A while later, I came across this post in the Line 6 forums about getting the Helix (another guitar processing device) working in Linux:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://line6.com/support/topic/4426-line-6-with-linux/?tab=comments#comment-240302&quot;&gt;https://line6.com/support/topic/4426-line-6-with-linux/?tab=comments#comment-240302&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The additional fix here was to hack the sample rate slightly to try to match the real timing of the device. I gave it a try, and it turned out that if I nudged the sample rate to 44105 (instead of 44100), my pops and crackles mostly went away - happening every few minutes instead of constantly.&lt;br /&gt;
&lt;br /&gt;
This fix was obviously a hack, and not perfect, but it at least made my interface usable. The core problem still existed - the device should be operating using implicit feedback, but when this was enabled it didn&#39;t work at all.&lt;br /&gt;
&lt;br /&gt;
I had posted about these issues on the &lt;a href=&quot;https://mailman.alsa-project.org/mailman/listinfo/alsa-devel&quot;&gt;alsa-devel&lt;/a&gt; mailing list, and a while later I got a helpful email suggesting that some Roland devices waited to send capture data until they had received some playback data. The kernel implicit feedback code, on the other hand, was waiting for some capture data before it send any playback data. The result was a standoff - with nothing getting sent either way.&lt;br /&gt;
&lt;br /&gt;
Simply disabling the code that caused playback to wait on capture resulted in working audio with implicit feedback enabled, and a perfectly solid audio stream with no pops or crackles!&lt;br /&gt;
&lt;br /&gt;
I outlined this fix on the alsa-devel mailing list here:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://mailman.alsa-project.org/pipermail/alsa-devel/2020-January/161951.html&quot;&gt;https://mailman.alsa-project.org/pipermail/alsa-devel/2020-January/161951.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I hope to get a patch for this into the kernel eventually - right now I am doing some poking around to see if I can find out what other similar devices this fix might work for.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;** UPDATE **&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A series of patches to implicit feedback handling made it into the kernel (5.11) a while back. I had thought that these changes were fully working on the BOSS GT-1, but it turns out that I just hadn&#39;t tested well enough.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Audio playback and capture works, but with periodic dropouts. I get the exact same behavior as I did with the quirk to completely disable implicit feedback.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Changing the GT-1 playback feedback handling from IMPLICIT_FB_SKIP_DEV(0x0582, 0x01d6)&amp;nbsp; to&amp;nbsp;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;IMPLICIT_FB_GENERIC_DEV(0x0582, 0x01d6) and applying the endpoint.c patch outlined earlier in this post results in perfect playback and capture for me.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Here is my post on the alsa-devel mailing list about this:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;&lt;a href=&quot;https://mailman.alsa-project.org/pipermail/alsa-devel/2021-April/183274.html&quot;&gt;https://mailman.alsa-project.org/pipermail/alsa-devel/2021-April/183274.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;** UPDATE 4/14/2021 **&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A version of the above fix has now been submitted as a patch and should eventually get into the mainline kernel. The fix is also being applied to other BOSS devices, such as the rest of the GT family, and the BOSS Katana. Here is the patch:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/tiwai/sound/commit/ebe8dc5afb3912e2d4f5c62cf7c492a13143a77a&quot;&gt;https://github.com/tiwai/sound/commit/ebe8dc5afb3912e2d4f5c62cf7c492a13143a77a&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;** LATEST UPDATE **&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The above fix was released with Linux kernel v5.14.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/8950146977754264909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2020/01/getting-boss-gt-1-effects-processor-to.html#comment-form' title='31 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/8950146977754264909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/8950146977754264909'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2020/01/getting-boss-gt-1-effects-processor-to.html' title='Getting the Boss GT-1 effects processor to work in Linux'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhesRZNQk4prYkbtOyXPy0VvgA32obVmgQhT3u8Y0N3NFfDiweWvJk7xNE9LgyAJY-JbxxUd6CxhUXLyokrlsH-ug4k5E2t6a2g1pdcNlfdtSPnhdlsg5PhAa-vx2RvONBzrVCppaixzsc/s72-c/gt-1_main.jpg" height="72" width="72"/><thr:total>31</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-7627074842503665472</id><published>2016-09-12T15:18:00.001-07:00</published><updated>2016-09-12T16:50:58.590-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3DS"/><category scheme="http://www.blogger.com/atom/ns#" term="Nintendo"/><title type='text'>Coming soon to Nintendo 3DS</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL8_RO2E116HsyAeHowcWKxhZfcOrUwgnjT98LNiHKroZHPyFgqVDyDwYff0TULIH-FVctqi0ncgOi0DLbCfYgs4Fjq2WaAqP0-G5CHDtprVrcjaD0TW5z9Qd6bXyCLYpI0zfUMz_GXWg/s1600/Promo3DSHandset.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL8_RO2E116HsyAeHowcWKxhZfcOrUwgnjT98LNiHKroZHPyFgqVDyDwYff0TULIH-FVctqi0ncgOi0DLbCfYgs4Fjq2WaAqP0-G5CHDtprVrcjaD0TW5z9Qd6bXyCLYpI0zfUMz_GXWg/s1600/Promo3DSHandset.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
We&#39;ve been hard at work this year to bring support for our games and applications to the Nintendo 3DS. The recent support of the 3DS platform by the Unity engine (which we use for targeting most of our other platforms) made this possible.&lt;br /&gt;
&lt;br /&gt;
PixelMaker will be our first release on Nintendo 3DS. It works great on the 3DS handset - using the bottom screen to draw, while having an overview of the entire scene on the upper screen. We even leveraged our drawing layer feature to provide support for the stereoscopic 3D display. The effect is really quite fun, and we are looking forward to see how people use it.&lt;br /&gt;
&lt;br /&gt;
Even though Unity is primarily targeted at the New Nintendo 3DS, we worked hard to make PixelMaker run on the original 3DS as well. This wasn&#39;t easy, given the memory and CPU limitations of the original device, but we are very happy with the result we were able to achieve. I believe we will be the first Unity 3DS release to run on the original 3DS.&lt;br /&gt;
&lt;br /&gt;
We plan to bring our voxel editor VoxelMaker, as well as at least some of our games, to the 3DS soon.</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/7627074842503665472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2016/09/coming-soon-to-nintendo-3ds.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/7627074842503665472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/7627074842503665472'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2016/09/coming-soon-to-nintendo-3ds.html' title='Coming soon to Nintendo 3DS'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL8_RO2E116HsyAeHowcWKxhZfcOrUwgnjT98LNiHKroZHPyFgqVDyDwYff0TULIH-FVctqi0ncgOi0DLbCfYgs4Fjq2WaAqP0-G5CHDtprVrcjaD0TW5z9Qd6bXyCLYpI0zfUMz_GXWg/s72-c/Promo3DSHandset.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-8820774868506777517</id><published>2016-03-29T18:44:00.001-07:00</published><updated>2016-09-12T15:38:16.361-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="game"/><category scheme="http://www.blogger.com/atom/ns#" term="game design"/><category scheme="http://www.blogger.com/atom/ns#" term="graphics"/><title type='text'>PixelMaker - a pixel art and sprite drawing program</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2RGohMsp5C24pIU3BqnNOFsWq-3ppcE70t4H2VS0Bzy9_BPiwXsDsTk0jlErqX8MDgke6Je_ovmKlJ_j1OUvHMQ4swjxQnr-k74ic291YOyaEzYzfWFzyetYoSn2tFUIabukQKxy-bDs/s1600/PixelMaker.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2RGohMsp5C24pIU3BqnNOFsWq-3ppcE70t4H2VS0Bzy9_BPiwXsDsTk0jlErqX8MDgke6Je_ovmKlJ_j1OUvHMQ4swjxQnr-k74ic291YOyaEzYzfWFzyetYoSn2tFUIabukQKxy-bDs/s640/PixelMaker.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;clear: left;&quot;&gt;
I&#39;ve been thinking about making a sprite editor for a while now. Drawing sprites is a big part of what we do when making our games. We have been using GIMP as our primary drawing tool, and while it works pretty well, it doesn&#39;t mesh perfectly with our workflow.&lt;/div&gt;
&lt;br /&gt;
So, a few months ago I finally pulled the trigger and started working on PixelMaker. In order to justify making a polished program (instead of a rough-and-ready developer tool), we plan to release it on various platforms - initially on Wii U (the GamePad and stylus are great for drawing) and then later on mobile/PC.&lt;br /&gt;
&lt;br /&gt;
I&#39;m pretty happy with how it is turning out. It loads instantly, unlike programs like Gimp and Photoshop, and is fast and lean - with the features you need for drawing pixel-y stuff, uncluttered by features you don&#39;t need (at least *we* think so - we&#39;ll see once we have more customers...)&lt;br /&gt;
&lt;br /&gt;
Our initial feature set for release targets drawing individual pixel art pieces, but future planning includes frame-based animation.&lt;br /&gt;
&lt;br /&gt;
On a more dev-centric note, I recently bolted on a project structure interface for us to manage the art assets for a game - designed to integrate with the custom sprite scaling/shadowing/sheet-packing pipeline we currently use:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfHZNBbBxJVetDUsnSii1hXJgiu4ciov0uQUsNzCalVJL6YOXIoq3QxBcaGZCamk8UsYW0BgZHp9A8jUTchiGN5kJOAMDxFacyYTe9a98tvdrP-F-wQE0JL8FcyJ2v4xJRrc3AASgj67I/s1600/pmp.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;358&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfHZNBbBxJVetDUsnSii1hXJgiu4ciov0uQUsNzCalVJL6YOXIoq3QxBcaGZCamk8UsYW0BgZHp9A8jUTchiGN5kJOAMDxFacyYTe9a98tvdrP-F-wQE0JL8FcyJ2v4xJRrc3AASgj67I/s640/pmp.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
We plan to get back to working on our already-well-in-progress next game soon, now switching over to using PixelMaker as our core art creation and management tool.&lt;br /&gt;
&lt;br /&gt;
What next game is that? Well, stay tuned for more on that soon!</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/8820774868506777517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2016/03/pixelmaker-pixel-art-and-sprite-drawing.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/8820774868506777517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/8820774868506777517'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2016/03/pixelmaker-pixel-art-and-sprite-drawing.html' title='PixelMaker - a pixel art and sprite drawing program'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2RGohMsp5C24pIU3BqnNOFsWq-3ppcE70t4H2VS0Bzy9_BPiwXsDsTk0jlErqX8MDgke6Je_ovmKlJ_j1OUvHMQ4swjxQnr-k74ic291YOyaEzYzfWFzyetYoSn2tFUIabukQKxy-bDs/s72-c/PixelMaker.png" height="72" width="72"/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-2214136001026818270</id><published>2013-10-04T13:38:00.000-07:00</published><updated>2013-10-04T18:27:16.818-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="graphics"/><category scheme="http://www.blogger.com/atom/ns#" term="PSM"/><category scheme="http://www.blogger.com/atom/ns#" term="Vita"/><title type='text'>Fractopia - fractal rendering with the GPU on PlayStation Vita</title><content type='html'>&lt;iframe width=&quot;640&quot; height=&quot;360&quot; src=&quot;//www.youtube.com/embed/x1RxCwq52tY&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
The above video shows Fractopia, my GPU-powered fractal explorer for PlayStation Vita and PlayStation Mobile certified Android devices. Sorry about the poor focus - it&#39;s hard to film yourself playing something on the Vita!&lt;br /&gt;
&lt;br /&gt;
I had the idea to try GPU-accelerated fractal rendering on the Vita a while back, but I didn&#39;t get around to actually messing with it until a few weeks ago. My initial experiments turned out quite well, so I took the time to make it into a full-fledged application.&lt;br /&gt;
&lt;br /&gt;
As you can see in the video, Fractopia allows smooth panning and zooming of fractal imagery. It allows you to navigate the Mandlebrot and Julia fractals, and lets you change the Julia seed in real time to create a huge variety of interesting &quot;fractalscapes&quot; to explore.&lt;br /&gt;
&lt;br /&gt;
Fractopia has passed PS Mobile certification, so it should come out on PSN in the next few weeks.</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/2214136001026818270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2013/10/fractopia-fractal-rendering-with-gpu-on.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/2214136001026818270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/2214136001026818270'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2013/10/fractopia-fractal-rendering-with-gpu-on.html' title='Fractopia - fractal rendering with the GPU on PlayStation Vita'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-1922948821257887565</id><published>2013-08-27T16:45:00.000-07:00</published><updated>2013-08-27T16:45:10.851-07:00</updated><title type='text'>Vacation Vexation - a new &quot;Quiet, Please!&quot; adventure</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaJDTnYTG5zawkr48gaS47s8zLF9ewyfBbMJKZf1LKo3RkXz0QZTtZk3saPdwG0Sb6sXjXBN9wuGs9j2wzJQTTz9-GrN1KxSH-398LeGIr8izWevpexPvJBup6K4GvUnf5Pe_aiTDDeuo/w1000/Beach.png&quot;&gt;&lt;img alt=&quot;Vacation Vexation&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaJDTnYTG5zawkr48gaS47s8zLF9ewyfBbMJKZf1LKo3RkXz0QZTtZk3saPdwG0Sb6sXjXBN9wuGs9j2wzJQTTz9-GrN1KxSH-398LeGIr8izWevpexPvJBup6K4GvUnf5Pe_aiTDDeuo/w640/Beach.png&quot; style=&quot;cursor: pointer;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I&#39;ve been hard at work recently on a new &quot;Quiet, Please!&quot; adventure. The current likely name is &quot;Vacation Vexation&quot;, and it features the same style of gameplay as the original.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj31xLfowc2wCOjRKjSAqS7-F8BbSCpuZdr0VvVTvhGmi0Sy4itg9ForUbiQJCPUWepFdJGm57uscj1AVpf9EaQzzMdqnI9FMVhrRlB7kHRHqxqfyZUIgo8zeIuL-D7GRG5CvnLFE-eeoA/w960/Kite.png&quot;&gt;&lt;img alt=&quot;Vacation Vexation&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj31xLfowc2wCOjRKjSAqS7-F8BbSCpuZdr0VvVTvhGmi0Sy4itg9ForUbiQJCPUWepFdJGm57uscj1AVpf9EaQzzMdqnI9FMVhrRlB7kHRHqxqfyZUIgo8zeIuL-D7GRG5CvnLFE-eeoA/w640/Kite.png&quot; style=&quot;cursor: pointer;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This time the setting is a family vacation in a seaside town. You just want to relax on the beach and read a book, but of course circumstances conspire against you...&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUKUyADfWny8jP860QM1EKdmf9zQjJVlfpijLhPv4PjpRdvZ1fC2SITEaPrjPF2cH7ddc7VBv3KmS3Z744iVXwc-qqclOvYpDHFZ7mzsWNQ_jpQp8cOD_o_RwbgiT-Uo8ZslD7rg5C-V4/w960/Chess.png&quot;&gt;&lt;img alt=&quot;Vacation Vexation&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUKUyADfWny8jP860QM1EKdmf9zQjJVlfpijLhPv4PjpRdvZ1fC2SITEaPrjPF2cH7ddc7VBv3KmS3Z744iVXwc-qqclOvYpDHFZ7mzsWNQ_jpQp8cOD_o_RwbgiT-Uo8ZslD7rg5C-V4/w640/Chess.png&quot; style=&quot;cursor: pointer;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
In addition to the puzzle-solving gameplay, there is an arcade that features playable mini-games:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFpge73d6XHatwMADWy-8a54RmmnHWaMRT6poax9o9vVglQlhD70GZMgkwrAY-FLD2riy2NDF1AZH-y_I6m6X7pMTDdWTqrJtjNK8JNfngRIFRDcG1-Inmw_BltEDuY3M2sra4kdOd1J8/w960/Funhaus.png&quot;&gt;&lt;img alt=&quot;Vacation Vexation&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFpge73d6XHatwMADWy-8a54RmmnHWaMRT6poax9o9vVglQlhD70GZMgkwrAY-FLD2riy2NDF1AZH-y_I6m6X7pMTDdWTqrJtjNK8JNfngRIFRDcG1-Inmw_BltEDuY3M2sra4kdOd1J8/w640/Funhaus.png&quot; style=&quot;cursor: pointer;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
There are a couple of &amp;nbsp;knock-offs of arcade classics, and one that people who have played my other games might recognize...&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXCqXyiUcfW0Frpg3AEAn9Zu6qhZwJKjSP1HlcVc1YAqh9ZlcjAm1w63pUBC71rDa7QF-tBy1Hd0eBSjSlPxPifzXS5vxZiHD6MnwYKsf1Pddf41okKbUqYED_Z2KnchJ1_PEJU8eifm8/w960/KarateBattle.png&quot;&gt;&lt;img alt=&quot;Vacation Vexation&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXCqXyiUcfW0Frpg3AEAn9Zu6qhZwJKjSP1HlcVc1YAqh9ZlcjAm1w63pUBC71rDa7QF-tBy1Hd0eBSjSlPxPifzXS5vxZiHD6MnwYKsf1Pddf41okKbUqYED_Z2KnchJ1_PEJU8eifm8/w640/KarateBattle.png&quot; style=&quot;cursor: pointer;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
With this new game, I&#39;m going for roughly 2-3 times the amount of content that was in the original &quot;Quiet, Please!&quot;. This isn&#39;t because &quot;Quiet, Please!&quot; was too short. Some people complained about the length, but most found it worth the dollar and it is my best selling game to date. I want to try to get away from selling games for $.99, though, and that requires more content.&lt;br /&gt;
&lt;br /&gt;
While there are a number of reasons I want to target a higher price point, probably the most important one is that it allows me to put a game on sale. If a game is already at the lowest price point for an app store, you can&#39;t put it on sale without making it completely free. Consumers really like &quot;free&quot; as a price point, but from a seller&#39;s perspective it has obvious disadvantages...&lt;br /&gt;
&lt;br /&gt;
I figure I&#39;m roughly two thirds of the way through development on &quot;Vacation Vexation&quot;. I hope to release it on all of the platforms I support (which is most of them) in the next few months.</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/1922948821257887565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2013/08/vacation-vexation-new-quiet-please.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/1922948821257887565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/1922948821257887565'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2013/08/vacation-vexation-new-quiet-please.html' title='Vacation Vexation - a new &quot;Quiet, Please!&quot; adventure'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaJDTnYTG5zawkr48gaS47s8zLF9ewyfBbMJKZf1LKo3RkXz0QZTtZk3saPdwG0Sb6sXjXBN9wuGs9j2wzJQTTz9-GrN1KxSH-398LeGIr8izWevpexPvJBup6K4GvUnf5Pe_aiTDDeuo/s72-w640-c/Beach.png" height="72" width="72"/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-5746059147409685717</id><published>2013-02-25T15:38:00.000-08:00</published><updated>2013-02-25T15:40:39.077-08:00</updated><title type='text'>Ascent of Kings Review Round-up</title><content type='html'>Some reviews of Ascent of Kings have popped up around the internet over the past week. You can check out what they had to say from the links below:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.thefiniteplaylist.com/2013/02/21/video-ascent-of-kings-review/&quot;&gt;Chet &amp;amp; Jon&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://indiegamerchick.com/2013/02/21/ascent-of-kings/&quot;&gt;Indie Gamer Chick&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://indiegames.com/2013/02/xblig_pick_ascent_of_kings_nos.html&quot;&gt;IndieGames.com&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=AgpgNcCWIpU&quot;&gt;CGR Undertow&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.youtube.com/watch?v=PFH08Su2TXQ&quot;&gt;gameding&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/5746059147409685717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2013/02/ascent-of-kings-review-round-up.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/5746059147409685717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/5746059147409685717'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2013/02/ascent-of-kings-review-round-up.html' title='Ascent of Kings Review Round-up'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-627815507352937957</id><published>2013-02-08T19:35:00.000-08:00</published><updated>2013-02-09T10:18:30.322-08:00</updated><title type='text'>Working on Playstation Mobile</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvjOv5zFvykBA6hOepEwICWWis4-lqKjp90RuLUn35DgjhB58l-ypJPbGargWfBTETCCWpb1wlCzi4bw4IyWxJDV7pksr_P98frsCQt6_7HSYnK5jeFiHRRY85QEi1ktGDDQTnFZMc9K8/s800/IMG_9284.JPG&quot;&gt;&lt;img alt=&quot;Playstation Mobile&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvjOv5zFvykBA6hOepEwICWWis4-lqKjp90RuLUn35DgjhB58l-ypJPbGargWfBTETCCWpb1wlCzi4bw4IyWxJDV7pksr_P98frsCQt6_7HSYnK5jeFiHRRY85QEi1ktGDDQTnFZMc9K8/s640/IMG_9284.JPG&quot; style=&quot;cursor: pointer;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Yep, that&#39;s my game intro screen running on the Vita. I have spent the past couple of days porting my 2D game engine to PlayStation Mobile.&lt;br /&gt;
&lt;br /&gt;
The PSM platform is C# based, so it was a really good match for me. Even though PlayStation Mobile uses MonoDevelop and I use Visual Studio, the two environments are assembly-compatible and I can still do the bulk of my work in Visual Studio and mostly just use MonoDevelop as a means for final deployment.&lt;br /&gt;
&lt;br /&gt;
The hardest part of the process was getting the drawing code working. PSM provides a pretty low-level graphics interface, so it took me a while before I had my first triangle onscreen. When working with a new graphics api, the first triangle is always the hardest. There are a million different reasons (matrix transforms, shader issues, culling, bad vertices, bad indices, etc.) why your triangle won&#39;t render. Once you can see something, you can fix what is wrong. When you can&#39;t see anything you don&#39;t have much to go on.&lt;br /&gt;
&lt;br /&gt;
After getting my first rendering working, the next step was sprite batching. PlayStation Mobile provides a batching implementation, but it is integrated with a higher-level scene interface. That is a great help to people who are doing new game development, but for someone like me who already has a game engine that I&#39;m trying to put on top of PSM it doesn&#39;t work. Fortunately, I&#39;ve written sprite batching systems before, so it wasn&#39;t too much of an obstacle.&lt;br /&gt;
&lt;br /&gt;
Then it was off to the races. Input was easy. I&#39;ve already integrated with multiple touch systems, so PSM touch input went in smoothly. I haven&#39;t done buttons/thumbsticks yet, but I don&#39;t anticipate too much of a challenge. Sound was easy - the PSM audio interface is clean and exactly what you look for.&lt;br /&gt;
&lt;br /&gt;
I started working with PSM yesterday, and I had my first game (my ubiquitous test game &quot;Sokoban for Beginners&quot;) running in the simulator this afternoon. With that validation, I pulled the trigger on a PlayStation Mobile publishing license. After a few hours and a bit of messing about with publishing and application keys, I had a game running perfectly on my Vita.&lt;br /&gt;
&lt;br /&gt;
Look for some &quot;Ascent of Kings&quot;, &quot;Quiet, Please!&quot;, &quot;Kung Fu FIGHT!&quot; - and just maybe a bit of &quot;Tunescape&quot; and more speculatively some &quot;Block Zombies&quot; on a PlayStation Mobile device near you.</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/627815507352937957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2013/02/working-on-playstation-mobile.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/627815507352937957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/627815507352937957'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2013/02/working-on-playstation-mobile.html' title='Working on Playstation Mobile'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvjOv5zFvykBA6hOepEwICWWis4-lqKjp90RuLUn35DgjhB58l-ypJPbGargWfBTETCCWpb1wlCzi4bw4IyWxJDV7pksr_P98frsCQt6_7HSYnK5jeFiHRRY85QEi1ktGDDQTnFZMc9K8/s72-c/IMG_9284.JPG" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-3831615095034634087</id><published>2013-01-11T16:56:00.000-08:00</published><updated>2013-01-11T16:56:09.091-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="game"/><category scheme="http://www.blogger.com/atom/ns#" term="XBLIG"/><title type='text'>Ascent of Kings Update</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhng9tN3XXYX_EZW0x6Z6gLmiDplL-kGpPcRqOuTJFJv6VMHY59bReYNoeJCYUmWpdZ0fs1d-wqZdAWvo9n-ONJv3dVT5EiQtTF4AZ7bWF6bol9Qs35PSILxBwsB3ecSHLRuHcYRnE6Tk/s1000/ShotBetsy.png&quot;&gt;&lt;img alt=&quot;Quiet Christmas&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhng9tN3XXYX_EZW0x6Z6gLmiDplL-kGpPcRqOuTJFJv6VMHY59bReYNoeJCYUmWpdZ0fs1d-wqZdAWvo9n-ONJv3dVT5EiQtTF4AZ7bWF6bol9Qs35PSILxBwsB3ecSHLRuHcYRnE6Tk/s640/ShotBetsy.png&quot; style=&quot;cursor: pointer;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&quot;Ascent of Kings&quot;, the game I made for Ludum Dare #20, is now back on the top of my development stack. I&#39;ve been making great progress and have added a bunch of new content. I&#39;m hoping to finish things up over the next couple of weeks.&lt;br /&gt;
&lt;br /&gt;
Since I snubbed the Xbox with &quot;Quiet Christmas&quot; (I ran out of time before the holiday) my current plan is to release Ascent there first, with mobile versions soon thereafter.</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/3831615095034634087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2013/01/ascent-of-kings-update.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/3831615095034634087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/3831615095034634087'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2013/01/ascent-of-kings-update.html' title='Ascent of Kings Update'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhng9tN3XXYX_EZW0x6Z6gLmiDplL-kGpPcRqOuTJFJv6VMHY59bReYNoeJCYUmWpdZ0fs1d-wqZdAWvo9n-ONJv3dVT5EiQtTF4AZ7bWF6bol9Qs35PSILxBwsB3ecSHLRuHcYRnE6Tk/s72-c/ShotBetsy.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-2973512162562901722</id><published>2012-12-14T09:08:00.002-08:00</published><updated>2012-12-14T09:08:57.732-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="game"/><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><category scheme="http://www.blogger.com/atom/ns#" term="XBLIG"/><title type='text'>Quiet Christmas</title><content type='html'>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggHOmnSFzPNjc_E1DCmKleoWm8WSFmwxR6ozpRhm243FzqIf0hgND0jK8vcyA1ZuT_fXq2DCWWmQoohuzya_qSN_Zqt3RunF9iv7GNivipS8olCmmT1lKLtWYMKOhKI04IHUsRQoxxym4/s800/QuietXmas2.png&quot;&gt;&lt;img alt=&quot;Quiet Christmas&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggHOmnSFzPNjc_E1DCmKleoWm8WSFmwxR6ozpRhm243FzqIf0hgND0jK8vcyA1ZuT_fXq2DCWWmQoohuzya_qSN_Zqt3RunF9iv7GNivipS8olCmmT1lKLtWYMKOhKI04IHUsRQoxxym4/s640/QuietXmas2.png&quot; style=&quot;cursor: pointer;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I came up with the idea of making a Christmas episode of &quot;Quiet, Please!&quot; about a week ago, and I&#39;ve been madly working on it ever since. It is almost finished now, and I should be submitting it to the various mobile app stores soon.&lt;br /&gt;
&lt;br /&gt;
Maybe an Xbox version, too, if I can think of a good way to make a trial work.</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/2973512162562901722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2012/12/quiet-christmas.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/2973512162562901722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/2973512162562901722'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2012/12/quiet-christmas.html' title='Quiet Christmas'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggHOmnSFzPNjc_E1DCmKleoWm8WSFmwxR6ozpRhm243FzqIf0hgND0jK8vcyA1ZuT_fXq2DCWWmQoohuzya_qSN_Zqt3RunF9iv7GNivipS8olCmmT1lKLtWYMKOhKI04IHUsRQoxxym4/s72-c/QuietXmas2.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-4341852405399333172</id><published>2012-08-29T09:58:00.000-07:00</published><updated>2012-08-29T09:58:18.707-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="game"/><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><title type='text'>&quot;Quiet, Please!&quot; Released for iOS</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0Xa2lqtL6WiqY3I2rRtRHHM1JtM8uVwTj7kagn_Kl5jcTDF0q9MUeVdlHzVTaub_YH8a50ciw7vnAIzUz_NE7UxX3Yq1QF8y775PR6VFFEiOkQy-be7gRM6CIjUDduXtv_FZ259AsVgw/s640/QuietPlease-iPad.png&quot; style=&quot;background: none repeat scroll 0% 0% transparent; border: medium none; box-shadow: none;&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&quot;Quiet, Please!&quot; is now available as a universal app for iPhone/iPad. You can find it &lt;a href=&quot;http://itunes.apple.com/app/quiet-please%21/id553275179&quot;&gt;here in the App Store&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, because Apple&#39;s policies prevent me from doing a free trial of the game, only a paid version ($.99) is available. I plan to do a web-playable trial at some point to work around this limitation.</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/4341852405399333172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2012/08/quiet-please-release-for-ios.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/4341852405399333172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/4341852405399333172'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2012/08/quiet-please-release-for-ios.html' title='&quot;Quiet, Please!&quot; Released for iOS'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0Xa2lqtL6WiqY3I2rRtRHHM1JtM8uVwTj7kagn_Kl5jcTDF0q9MUeVdlHzVTaub_YH8a50ciw7vnAIzUz_NE7UxX3Yq1QF8y775PR6VFFEiOkQy-be7gRM6CIjUDduXtv_FZ259AsVgw/s72-c/QuietPlease-iPad.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-3509341224705060860</id><published>2012-08-03T11:23:00.000-07:00</published><updated>2012-08-03T11:40:10.253-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="game"/><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><title type='text'>iOS Releases Coming Soon</title><content type='html'>&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHUkp3jnSRD7E6XX_jz3QA3QA6HO_PEEOrEPtDNZKQ4QW7dBH9nC0nq0MfIYJBm17tWbW31H8D7EiaFCSg36_GxKWU8edNQzGV2tiRDoctiSoM8me2tVaoikgePWhuUagLoMY-BOMQd6I/s1600/NostaticIPhone.png&quot; style=&quot;background: none repeat scroll 0% 0% transparent; border: medium none; box-shadow: none; clear: right; padding-bottom: 20px;&quot; /&gt;&lt;br /&gt;
The lack of apple dev hardware is the only thing that has been holding me back from being able to develop for iOS. I finally took the plunge last week and bought the cheapest refurbished MacBook Pro and iPod Touch 4 that I could.&lt;br /&gt;
&lt;br /&gt;
Given that I was already using Unity to deploy for Android, the additional work to get it running for iOS was pretty minimal. It took me a while to get used to working on a Mac for the first time in about 20 years, though. The verdict - I&#39;m not a big fan. Usability is very much in the eye of the beholder...&lt;br /&gt;
&lt;br /&gt;
Anyway, I&#39;ve got my games mostly up and running. Ironically, it took me more time to figure out how to publish to the App Store than it did to get iOS ports running in the first place. I&#39;ve got that pretty much sorted out now though, so expect to see my games on an iOS device near you soon.</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/3509341224705060860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2012/08/ios-releases-coming-soon.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/3509341224705060860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/3509341224705060860'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2012/08/ios-releases-coming-soon.html' title='iOS Releases Coming Soon'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHUkp3jnSRD7E6XX_jz3QA3QA6HO_PEEOrEPtDNZKQ4QW7dBH9nC0nq0MfIYJBm17tWbW31H8D7EiaFCSg36_GxKWU8edNQzGV2tiRDoctiSoM8me2tVaoikgePWhuUagLoMY-BOMQd6I/s72-c/NostaticIPhone.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6127132400597215190.post-796767086587953417</id><published>2012-06-07T12:58:00.000-07:00</published><updated>2012-08-03T11:25:37.625-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="game"/><title type='text'>&quot;Quiet, Please!&quot; Out Now For Android</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC9XrQrc068XK_WR4e0EZpUkFA1bp1seLYoOeKUzUwBLsOu5fDL8XH3tLIIbFmaWj7fWAMDnxp7MMN7ZQ_dETtR5Rbh_LCkxfZKCoB6zJM81LCxGl_9HC-dr75GNvP-Hhuwy8yWt9RoV0/s1600/Android114x114.png&quot; style=&quot;background: none; border: medium none; box-shadow: none; float: left; padding-bottom: 20px; padding-right: 20px;&quot; /&gt;&lt;/div&gt;
&lt;br /&gt;
I am happy to announce that &quot;Quiet, Please!&quot; is now available for Android devices.&lt;br /&gt;
&lt;br /&gt;
You can get it from either the Amazon Appstore (US only) or Google Play.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;clear: left;&quot;&gt;
Here are the marketplace links:&lt;/div&gt;
&lt;br /&gt;
Amazon: &lt;a href=&quot;http://www.amazon.com/gp/product/B0088QDDDY&quot;&gt;Full Game&lt;/a&gt; or &lt;a href=&quot;http://www.amazon.com/gp/product/B0089FY1KI&quot;&gt;Free Trial&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Google Play: &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.NostaticSoftware.QuietPlease&quot;&gt;Full Game&lt;/a&gt; or &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.NostaticSoftware.QuietPleaseFree&quot;&gt;Free Trial&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I also made a little trailer for the game. It is a mashup of clips from youtube videos people posted of themselves playing the Xbox version. The Android version is identical except for the addition of touch controls.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;360&quot; src=&quot;http://www.youtube.com/embed/SyCQWQlp4Z4&quot; width=&quot;640&quot;&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.nostatic.org/feeds/796767086587953417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.nostatic.org/2012/06/quiet-please-out-now-for-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/796767086587953417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6127132400597215190/posts/default/796767086587953417'/><link rel='alternate' type='text/html' href='http://blog.nostatic.org/2012/06/quiet-please-out-now-for-android.html' title='&quot;Quiet, Please!&quot; Out Now For Android'/><author><name>Mike</name><uri>http://www.blogger.com/profile/13599208082890099005</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhC4_6Bn1qYW9PDIoThssGxRoKvSzA5BDI9RVDls7iGqMc2sOv1e0vEo290dgNGq-9NZicfaS4xxk5gFBIadPJGH98H2xEiwrd0jrS2PgkpiGezASwfC58Fmr4-a2xtTg/s220/AvatarRetro2.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC9XrQrc068XK_WR4e0EZpUkFA1bp1seLYoOeKUzUwBLsOu5fDL8XH3tLIIbFmaWj7fWAMDnxp7MMN7ZQ_dETtR5Rbh_LCkxfZKCoB6zJM81LCxGl_9HC-dr75GNvP-Hhuwy8yWt9RoV0/s72-c/Android114x114.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>