diff options
34 files changed, 1475 insertions, 182 deletions
diff --git a/blog/blogext.css b/blog/blogext.css index 7b6916c..9048a49 100644 --- a/blog/blogext.css +++ b/blog/blogext.css @@ -53,6 +53,20 @@ blockquote { padding: 1em; margin-left:4em;margin-right:4em; } +pre code { + background:none !important; + border:none !important; +} +pre { + background:rgba(128,128,128,0.4); + border:1px rgba(128,128,128,0.4) solid; + padding:4px; +} +code { + font-family:'CMU Typewriter Text w', 'CMU Typewriter Text', 'TeX Gyre Cursor', 'FreeMono', 'Courier New', Courier, monospace; + background:rgba(128,128,128,0.4); + border:1px rgba(128,128,128,0.4) solid; +} .rightaligned { text-align: right; } diff --git a/blog/list/0.html b/blog/list/0.html index 695bd93..ca2d969 100644 --- a/blog/list/0.html +++ b/blog/list/0.html @@ -84,25 +84,25 @@ loadTheme(); <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span> <span class="right" id="">2016-02-13/2018-10-11</span></div> </div><div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-04-25.html">EDIROL SD-80: A Trapped Beast</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music #hands-on</span> + <span class="right" id="">2019-04-25/2019-05-07</span></div> + </div><div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-02-13.html">Site Revamp and Other Rants -- 2019 Edition</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #random-xp #garbage</span> + <span class="right" id="">2019-02-13/2019-04-28</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-12-06.html">小米 MIX 3 上手体验</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #hands-on</span> - <span class="right" id="">2018-12-06/2018-12-12</span></div> + <span class="right" id="">2018-12-06/2019-02-19</span></div> </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-10-11.html">The stupid blogging system evolved!</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #devel #js</span> <span class="right" id="">2018-10-11/2018-10-11</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-06-07.html">Should this site still be alive by 2035...</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage</span> - <span class="right" id="">2018-06-07/2018-10-11</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-06-05.html">Software Project Management in the Free Software World</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry</span> - <span class="right" id="">2018-06-05/2018-10-16</span></div> </div></div> <div id="insanch" style="height:5em;"></div> <div id="footer"> diff --git a/blog/list/1.html b/blog/list/1.html index 0a85605..0ee4f15 100644 --- a/blog/list/1.html +++ b/blog/list/1.html @@ -79,6 +79,16 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-06-07.html">Should this site still be alive by 2035...</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage</span> + <span class="right" id="">2018-06-07/2018-10-11</span></div> + </div><div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-06-05.html">Software Project Management in the Free Software World</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry</span> + <span class="right" id="">2018-06-05/2018-10-16</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-18.html">Ideology vs Pragmatism &c.</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage</span> @@ -87,22 +97,12 @@ loadTheme(); <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-08.html">Respecting your job</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage #acmicpc</span> - <span class="right" id="">2018-05-08/2018-10-11</span></div> + <span class="right" id="">2018-05-08/2019-02-13</span></div> </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-03.html">Are you an Apple fanboy/fangirl?</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #interactive</span> <span class="right" id="">2018-05-03/2019-02-10</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-04-22.html">ICPC类比赛中计算几何问题之「乱象」</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #acmicpc</span> - <span class="right" id="">2018-04-22/2018-10-11</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-04-17.html">The "Deepin is spyware" problem</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#linux #garbage #sophistry</span> - <span class="right" id="">2018-04-17/2018-10-11</span></div> </div></div> <div id="insanch" style="height:5em;"></div> <div id="footer"> diff --git a/blog/list/2.html b/blog/list/2.html index 2fff79c..3996467 100644 --- a/blog/list/2.html +++ b/blog/list/2.html @@ -79,6 +79,16 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-04-22.html">ICPC类比赛中计算几何问题之「乱象」</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #acmicpc</span> + <span class="right" id="">2018-04-22/2018-10-11</span></div> + </div><div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-04-17.html">The "Deepin is spyware" problem</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#linux #garbage #sophistry</span> + <span class="right" id="">2018-04-17/2018-10-11</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-03-17.html">Some rants on SMELT, QMidiPlayer and Virtools</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #opengl</span> @@ -93,16 +103,6 @@ loadTheme(); <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span> <span class="right" id="">2018-01-07/2018-10-30</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-01-05.html">Now using reverse proxy to deliver content</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #random-xp</span> - <span class="right" id="">2018-01-05/2018-10-11</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-12-21.html">为什么我<i>就是不</i>使用Mac</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #device-review</span> - <span class="right" id="">2017-12-21/2018-10-11</span></div> </div></div> <div id="insanch" style="height:5em;"></div> <div id="footer"> diff --git a/blog/list/3.html b/blog/list/3.html index 0332836..d5b9f91 100644 --- a/blog/list/3.html +++ b/blog/list/3.html @@ -79,6 +79,16 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-01-05.html">Now using reverse proxy to deliver content</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #random-xp</span> + <span class="right" id="">2018-01-05/2018-10-11</span></div> + </div><div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-12-21.html">为什么我<i>就是不</i>使用Mac</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #device-review</span> + <span class="right" id="">2017-12-21/2019-02-13</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-11-25.html">A short post on Cakewalk's death and my music production</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#music #garbage</span> @@ -93,16 +103,6 @@ loadTheme(); <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#daily-life</span> <span class="right" id="">2017-06-08/2018-10-11</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-05-08.html">2017省赛流水帐</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#contest #acmicpc</span> - <span class="right" id="">2017-05-08/2018-10-11</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-04-11.html">SBS 2.0 is now the default blog browser</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #web</span> - <span class="right" id="">2017-04-11/2018-10-11</span></div> </div></div> <div id="insanch" style="height:5em;"></div> <div id="footer"> diff --git a/blog/list/4.html b/blog/list/4.html index 4841408..d52bf99 100644 --- a/blog/list/4.html +++ b/blog/list/4.html @@ -79,10 +79,20 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-05-08.html">2017省赛流水帐</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#contest #acmicpc</span> + <span class="right" id="">2017-05-08/2019-02-13</span></div> + </div><div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-04-11.html">SBS 2.0 is now the default blog browser</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #web</span> + <span class="right" id="">2017-04-11/2018-10-11</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-02-13.html">[多大图警告]ls /dev</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review</span> - <span class="right" id="">2017-02-13/2018-12-09</span></div> + <span class="right" id="">2017-02-13/2019-02-13</span></div> </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-01-18.html">Trash dump for the third semester</a></h3> <br> @@ -92,17 +102,7 @@ loadTheme(); <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-01-09.html">[多大图警告]终究还是改不了修电脑的命</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#computer-repairing #garbage</span> - <span class="right" id="">2017-01-09/2018-10-11</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-09-24.html">2-in-1</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #c++ #qt</span> - <span class="right" id="">2016-09-24/2018-10-11</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-06-21.html">Trash dump for the first academic year</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span> - <span class="right" id="">2016-06-21/2018-10-11</span></div> + <span class="right" id="">2017-01-09/2019-02-13</span></div> </div></div> <div id="insanch" style="height:5em;"></div> <div id="footer"> diff --git a/blog/list/5.html b/blog/list/5.html index ef9e015..c999e9f 100644 --- a/blog/list/5.html +++ b/blog/list/5.html @@ -79,10 +79,20 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-09-24.html">2-in-1</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #c++ #qt</span> + <span class="right" id="">2016-09-24/2018-10-11</span></div> + </div><div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-06-21.html">Trash dump for the first academic year</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span> + <span class="right" id="">2016-06-21/2018-10-11</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-05-12.html">ThinkPad X1 Yoga初体验</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review</span> - <span class="right" id="">2016-05-12/2018-10-11</span></div> + <span class="right" id="">2016-05-12/2019-02-13</span></div> </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-04-09.html">The MIDI File Format Specification and MIDI Implementation in QMidiPlayer</a></h3> <br> @@ -93,16 +103,6 @@ loadTheme(); <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#contest #acmicpc</span> <span class="right" id="">2016-03-26/2018-10-11</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-02-18.html">Cross Noodles Recooked</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #js #webgl</span> - <span class="right" id="">2016-02-18/2018-10-11</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-02-14.html">Why Do I Prefer a Computer over a Girlfriend/<s>(Boyfriend)</s></a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry</span> - <span class="right" id="">2016-02-14/2018-10-11</span></div> </div></div> <div id="insanch" style="height:5em;"></div> <div id="footer"> diff --git a/blog/list/6.html b/blog/list/6.html index 8a68ee2..a50bc41 100644 --- a/blog/list/6.html +++ b/blog/list/6.html @@ -79,6 +79,16 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-02-18.html">Cross Noodles Recooked</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #js #webgl</span> + <span class="right" id="">2016-02-18/2018-10-11</span></div> + </div><div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-02-14.html">Why Do I Prefer a Computer over a Girlfriend/<s>(Boyfriend)</s></a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry</span> + <span class="right" id="">2016-02-14/2018-10-11</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-01-25.html">放假...</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#daily-life</span> @@ -93,16 +103,6 @@ loadTheme(); <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #design</span> <span class="right" id="">2016-01-03/2018-10-11</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-12-27.html">QMidiPlayer got its repo</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer</span> - <span class="right" id="">2015-12-27/2018-10-11</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-12-23.html">Chris' First Development Blog</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel</span> - <span class="right" id="">2015-12-23/2018-10-11</span></div> </div></div> <div id="insanch" style="height:5em;"></div> <div id="footer"> diff --git a/blog/list/7.html b/blog/list/7.html index 89df55e..fb59b56 100644 --- a/blog/list/7.html +++ b/blog/list/7.html @@ -79,6 +79,16 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-12-27.html">QMidiPlayer got its repo</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer</span> + <span class="right" id="">2015-12-27/2018-10-11</span></div> + </div><div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-12-23.html">Chris' First Development Blog</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel</span> + <span class="right" id="">2015-12-23/2018-10-11</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-12-20.html">忙</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#random-xp</span> @@ -93,16 +103,6 @@ loadTheme(); <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#random-xp</span> <span class="right" id="">2015-11-01/2015-11-22</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-10-31.html">大学入学两个月了……</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span> - <span class="right" id="">2015-10-31/2018-10-11</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-10-30.html">First CCPC sightseeing tour</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#contest</span> - <span class="right" id="">2015-10-30/2018-10-11</span></div> </div></div> <div id="insanch" style="height:5em;"></div> <div id="footer"> diff --git a/blog/list/8.html b/blog/list/8.html index e9d19d1..d11eeaa 100644 --- a/blog/list/8.html +++ b/blog/list/8.html @@ -79,6 +79,16 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-10-31.html">大学入学两个月了……</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span> + <span class="right" id="">2015-10-31/2018-10-11</span></div> + </div><div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-10-30.html">First CCPC sightseeing tour</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#contest</span> + <span class="right" id="">2015-10-30/2018-10-11</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-10-29.html">noname01.pas</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span> diff --git a/blog/list/acmicpc/0.html b/blog/list/acmicpc/0.html index 828b468..75ec463 100644 --- a/blog/list/acmicpc/0.html +++ b/blog/list/acmicpc/0.html @@ -82,7 +82,7 @@ loadTheme(); <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-08.html">Respecting your job</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage #acmicpc</span> - <span class="right" id="">2018-05-08/2018-10-11</span></div> + <span class="right" id="">2018-05-08/2019-02-13</span></div> </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-04-22.html">ICPC类比赛中计算几何问题之「乱象」</a></h3> <br> @@ -92,7 +92,7 @@ loadTheme(); <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-05-08.html">2017省赛流水帐</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#contest #acmicpc</span> - <span class="right" id="">2017-05-08/2018-10-11</span></div> + <span class="right" id="">2017-05-08/2019-02-13</span></div> </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-03-26.html">ACM校赛水题组酱油记</a></h3> <br> diff --git a/blog/list/computer-repairing/0.html b/blog/list/computer-repairing/0.html index 381d74a..2721055 100644 --- a/blog/list/computer-repairing/0.html +++ b/blog/list/computer-repairing/0.html @@ -82,7 +82,7 @@ loadTheme(); <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-01-09.html">[多大图警告]终究还是改不了修电脑的命</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#computer-repairing #garbage</span> - <span class="right" id="">2017-01-09/2018-10-11</span></div> + <span class="right" id="">2017-01-09/2019-02-13</span></div> </div></div> <div id="insanch" style="height:5em;"></div> <div id="footer"> diff --git a/blog/list/contest/0.html b/blog/list/contest/0.html index 08df4bf..e311964 100644 --- a/blog/list/contest/0.html +++ b/blog/list/contest/0.html @@ -82,7 +82,7 @@ loadTheme(); <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-05-08.html">2017省赛流水帐</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#contest #acmicpc</span> - <span class="right" id="">2017-05-08/2018-10-11</span></div> + <span class="right" id="">2017-05-08/2019-02-13</span></div> </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-03-26.html">ACM校赛水题组酱油记</a></h3> <br> diff --git a/blog/list/device-review/0.html b/blog/list/device-review/0.html index bfda6bf..26b854c 100644 --- a/blog/list/device-review/0.html +++ b/blog/list/device-review/0.html @@ -79,37 +79,37 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-04-25.html">EDIROL SD-80: A Trapped Beast</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music #hands-on</span> + <span class="right" id="">2019-04-25/2019-05-07</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-12-06.html">小米 MIX 3 上手体验</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #hands-on</span> - <span class="right" id="">2018-12-06/2018-12-12</span></div> + <span class="right" id="">2018-12-06/2019-02-19</span></div> </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-12-21.html">为什么我<i>就是不</i>使用Mac</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #device-review</span> - <span class="right" id="">2017-12-21/2018-10-11</span></div> + <span class="right" id="">2017-12-21/2019-02-13</span></div> </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-02-13.html">[多大图警告]ls /dev</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review</span> - <span class="right" id="">2017-02-13/2018-12-09</span></div> + <span class="right" id="">2017-02-13/2019-02-13</span></div> </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-05-12.html">ThinkPad X1 Yoga初体验</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review</span> - <span class="right" id="">2016-05-12/2018-10-11</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-11-22.html">Raspberry Pi2 初体验</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#hands-on #device-review</span> - <span class="right" id="">2015-11-22/2018-10-11</span></div> + <span class="right" id="">2016-05-12/2019-02-13</span></div> </div></div> <div id="insanch" style="height:5em;"></div> <div id="footer"> <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;"> <span style="display:table-cell;"><a id="prepage" href="#"><<</a></span> - <span style="text-align:center;display:table-cell;" id="page">1/1</span> - <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">>></a></span> + <span style="text-align:center;display:table-cell;" id="page">1/2</span> + <span style="text-align:right;display:table-cell;"><a id="nexpage" href="/blog/list/device-review/1.html">>></a></span> </div> <div style="text-align:center;" class="TText"> Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5 diff --git a/blog/list/device-review/1.html b/blog/list/device-review/1.html new file mode 100644 index 0000000..475d211 --- /dev/null +++ b/blog/list/device-review/1.html @@ -0,0 +1,103 @@ +<html><head> +<meta charset="utf-8"> +<meta name="viewport" content="width=device-width,initial-scale=1"> +<meta name="theme-color" content="#000000"> +<title>Chrisoft::Blog</title> +<script type="text/javascript" src="/panel.js"></script> +<link rel="stylesheet" type="text/css" href="/common.css"> +<link rel="stylesheet" type="text/css" href="/panel.css"> +<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a"> +<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b"> +<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a"> +<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b"> +<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a"> +<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b"> +<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a"> +<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b"> +<link rel="stylesheet" type="text/css" href="/blog/blogext.css"> +<script> +function ol() +{ + window.onresize=function() + { + if(window.innerWidth<768) + setupevents(); + else unsetevents(); + } + window.onresize(); +} +function loadTheme(){ + var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"); + if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz'; + var ent=""; + var d=new Date(); + if(thm[0]=='z') + { + var m=d.getMonth()+1; + if(m>=3&&m<6)thm='0'+thm[1]; + else if(m>=6&&m<9)thm='1'+thm[1]; + else if(m>=9&&m<12)thm='2'+thm[1]; + else thm='3'+thm[1]; + } + if(thm[1]=='z') + {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';} + ent=`theme${thm}`; + var R=new RegExp('theme[0-4][ab]'); + for(var i=0;i<document.styleSheets.length;++i) + { + if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent) + document.styleSheets[i].disabled=true; + else document.styleSheets[i].disabled=false; + } + var thmcolor=""; + switch(thm[0]) + { + case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break; + case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break; + case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break; + case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break; + } + document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor); +} +loadTheme(); +</script> +</head> +<body onload="ol()" style="overflow-x:hidden;"> + <div id="panel" class="TText"> + <ul id="panellist"> + <li><a href="/"><h1>Chrisoft</h1></a></li> + <li><a href="/blog"><h2>Blog</h2></a></li> + <li><span>Tags filter</span> + <ul id="tagslist"> + + + <li id=""><a href="/blog/list/acmicpc">acmicpc</a></li><li id=""><a href="/blog/list/c++">c++</a></li><li id=""><a href="/blog/list/computer-repairing">computer-repairing</a></li><li id=""><a href="/blog/list/contest">contest</a></li><li id=""><a href="/blog/list/daily-life">daily-life</a></li><li id=""><a href="/blog/list/design">design</a></li><li id=""><a href="/blog/list/devel">devel</a></li><li id=""><a class="active" href="/blog/list/device-review">device-review</a></li><li id=""><a href="/blog/list/garbage">garbage</a></li><li id=""><a href="/blog/list/hands-on">hands-on</a></li><li id=""><a href="/blog/list/interactive">interactive</a></li><li id=""><a href="/blog/list/js">js</a></li><li id=""><a href="/blog/list/linux">linux</a></li><li id=""><a href="/blog/list/midi">midi</a></li><li id=""><a href="/blog/list/music">music</a></li><li id=""><a href="/blog/list/opengl">opengl</a></li><li id=""><a href="/blog/list/qmidiplayer">qmidiplayer</a></li><li id=""><a href="/blog/list/qt">qt</a></li><li id=""><a href="/blog/list/random-xp">random-xp</a></li><li id=""><a href="/blog/list/sophistry">sophistry</a></li><li id=""><a href="/blog/list/web">web</a></li><li id=""><a href="/blog/list/webgl">webgl</a></li></ul> + </li> + </ul> + </div> + <div id="content"> + <div id="postslist"> + + <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-11-22.html">Raspberry Pi2 初体验</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#hands-on #device-review</span> + <span class="right" id="">2015-11-22/2018-10-11</span></div> + </div></div> + <div id="insanch" style="height:5em;"></div> + <div id="footer"> + <div id="pagesw" class="TText" style="display:table;width:100%;padding:1em 0;"> + <span style="display:table-cell;"><a id="prepage" href="/blog/list/device-review/0.html"><<</a></span> + <span style="text-align:center;display:table-cell;" id="page">2/2</span> + <span style="text-align:right;display:table-cell;"><a id="nexpage" href="#">>></a></span> + </div> + <div style="text-align:center;" class="TText"> + Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5 + <br> + Content licensed under CC BY-SA 4.0. + </div> + </div> + </div> + + +</body></html>
\ No newline at end of file diff --git a/blog/list/garbage/0.html b/blog/list/garbage/0.html index fbcd8e3..662dddd 100644 --- a/blog/list/garbage/0.html +++ b/blog/list/garbage/0.html @@ -84,6 +84,11 @@ loadTheme(); <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span> <span class="right" id="">2016-02-13/2018-10-11</span></div> </div><div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-02-13.html">Site Revamp and Other Rants -- 2019 Edition</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #random-xp #garbage</span> + <span class="right" id="">2019-02-13/2019-04-28</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-06-07.html">Should this site still be alive by 2035...</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage</span> @@ -97,12 +102,7 @@ loadTheme(); <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-08.html">Respecting your job</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage #acmicpc</span> - <span class="right" id="">2018-05-08/2018-10-11</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-03.html">Are you an Apple fanboy/fangirl?</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #interactive</span> - <span class="right" id="">2018-05-03/2019-02-10</span></div> + <span class="right" id="">2018-05-08/2019-02-13</span></div> </div></div> <div id="insanch" style="height:5em;"></div> <div id="footer"> diff --git a/blog/list/garbage/1.html b/blog/list/garbage/1.html index a80751e..4793854 100644 --- a/blog/list/garbage/1.html +++ b/blog/list/garbage/1.html @@ -79,6 +79,11 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-03.html">Are you an Apple fanboy/fangirl?</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #interactive</span> + <span class="right" id="">2018-05-03/2019-02-10</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-04-22.html">ICPC类比赛中计算几何问题之「乱象」</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #acmicpc</span> @@ -98,11 +103,6 @@ loadTheme(); <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span> <span class="right" id="">2018-01-07/2018-10-30</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-12-21.html">为什么我<i>就是不</i>使用Mac</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #device-review</span> - <span class="right" id="">2017-12-21/2018-10-11</span></div> </div></div> <div id="insanch" style="height:5em;"></div> <div id="footer"> diff --git a/blog/list/garbage/2.html b/blog/list/garbage/2.html index cfddbef..335fa9e 100644 --- a/blog/list/garbage/2.html +++ b/blog/list/garbage/2.html @@ -79,6 +79,11 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-12-21.html">为什么我<i>就是不</i>使用Mac</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #device-review</span> + <span class="right" id="">2017-12-21/2019-02-13</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-11-25.html">A short post on Cakewalk's death and my music production</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#music #garbage</span> @@ -97,12 +102,7 @@ loadTheme(); <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-01-09.html">[多大图警告]终究还是改不了修电脑的命</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#computer-repairing #garbage</span> - <span class="right" id="">2017-01-09/2018-10-11</span></div> - </div><div class="block TText" id="" style="display:block;"> - <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-06-21.html">Trash dump for the first academic year</a></h3> - <br> - <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span> - <span class="right" id="">2016-06-21/2018-10-11</span></div> + <span class="right" id="">2017-01-09/2019-02-13</span></div> </div></div> <div id="insanch" style="height:5em;"></div> <div id="footer"> diff --git a/blog/list/garbage/3.html b/blog/list/garbage/3.html index d5edd9a..27e5186 100644 --- a/blog/list/garbage/3.html +++ b/blog/list/garbage/3.html @@ -79,6 +79,11 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-06-21.html">Trash dump for the first academic year</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage #daily-life</span> + <span class="right" id="">2016-06-21/2018-10-11</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-10-31.html">大学入学两个月了……</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#garbage</span> diff --git a/blog/list/hands-on/0.html b/blog/list/hands-on/0.html index 3ea01c5..f72fce6 100644 --- a/blog/list/hands-on/0.html +++ b/blog/list/hands-on/0.html @@ -79,10 +79,15 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-04-25.html">EDIROL SD-80: A Trapped Beast</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music #hands-on</span> + <span class="right" id="">2019-04-25/2019-05-07</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-12-06.html">小米 MIX 3 上手体验</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #hands-on</span> - <span class="right" id="">2018-12-06/2018-12-12</span></div> + <span class="right" id="">2018-12-06/2019-02-19</span></div> </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2015-11-22.html">Raspberry Pi2 初体验</a></h3> <br> diff --git a/blog/list/midi/0.html b/blog/list/midi/0.html index 6857a74..38ee1cd 100644 --- a/blog/list/midi/0.html +++ b/blog/list/midi/0.html @@ -79,6 +79,11 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-04-25.html">EDIROL SD-80: A Trapped Beast</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music #hands-on</span> + <span class="right" id="">2019-04-25/2019-05-07</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2016-04-09.html">The MIDI File Format Specification and MIDI Implementation in QMidiPlayer</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#devel #qmidiplayer #midi</span> diff --git a/blog/list/music/0.html b/blog/list/music/0.html index e1fe033..1eeda7f 100644 --- a/blog/list/music/0.html +++ b/blog/list/music/0.html @@ -79,6 +79,11 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-04-25.html">EDIROL SD-80: A Trapped Beast</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#device-review #midi #music #hands-on</span> + <span class="right" id="">2019-04-25/2019-05-07</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2017-11-25.html">A short post on Cakewalk's death and my music production</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#music #garbage</span> diff --git a/blog/list/random-xp/0.html b/blog/list/random-xp/0.html index df19b9a..bb747c6 100644 --- a/blog/list/random-xp/0.html +++ b/blog/list/random-xp/0.html @@ -79,6 +79,11 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-02-13.html">Site Revamp and Other Rants -- 2019 Edition</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #random-xp #garbage</span> + <span class="right" id="">2019-02-13/2019-04-28</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-01-05.html">Now using reverse proxy to deliver content</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #random-xp</span> diff --git a/blog/list/sophistry/0.html b/blog/list/sophistry/0.html index 419e79b..098564d 100644 --- a/blog/list/sophistry/0.html +++ b/blog/list/sophistry/0.html @@ -97,7 +97,7 @@ loadTheme(); <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-05-08.html">Respecting your job</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#sophistry #garbage #acmicpc</span> - <span class="right" id="">2018-05-08/2018-10-11</span></div> + <span class="right" id="">2018-05-08/2019-02-13</span></div> </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-04-17.html">The "Deepin is spyware" problem</a></h3> <br> diff --git a/blog/list/web/0.html b/blog/list/web/0.html index 11fc115..c346ed0 100644 --- a/blog/list/web/0.html +++ b/blog/list/web/0.html @@ -79,6 +79,11 @@ loadTheme(); <div id="postslist"> <div class="block TText" id="" style="display:block;"> + <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2019-02-13.html">Site Revamp and Other Rants -- 2019 Edition</a></h3> + <br> + <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #random-xp #garbage</span> + <span class="right" id="">2019-02-13/2019-04-28</span></div> + </div><div class="block TText" id="" style="display:block;"> <h3 style="line-height:1.5em;"><a id="" href="/blog/post/2018-10-11.html">The stupid blogging system evolved!</a></h3> <br> <div style="display:table;width:100%;table-layout:fixed;"><span class="left" id="">#web #devel #js</span> diff --git a/blog/post/2016-05-12.html b/blog/post/2016-05-12.html index 37be45a..b2c9640 100644 --- a/blog/post/2016-05-12.html +++ b/blog/post/2016-05-12.html @@ -288,87 +288,87 @@ UPD: 20161011: 8月底还是没忍住剁了一片WWAN卡(因为没钱所以买 <table style="max-width:90%;margin:auto;"> <tbody><tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1_1.jpg"><img src="//filestorage.chrisoft.org/blog/img/x1_1.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1_1.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_1.jpg"></a><br> 包装盒外部<br> </td> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1_2.jpg"><img src="//filestorage.chrisoft.org/blog/img/x1_2.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1_2.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_2.jpg"></a><br> 包装盒拿掉顶盖<br> </td> </tr> <tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1_3.jpg"><img src="//filestorage.chrisoft.org/blog/img/x1_3.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1_3.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_3.jpg"></a><br> 还是包装盒……<br> </td> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1_4.jpg"><img src="//filestorage.chrisoft.org/blog/img/x1_4.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1_4.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_4.jpg"></a><br> <br> </td> </tr> <tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1_5.jpg"><img src="//filestorage.chrisoft.org/blog/img/x1_5.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1_5.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_5.jpg"></a><br> 稍微侧过来一点……<br> </td> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1_6.jpg"><img src="//filestorage.chrisoft.org/blog/img/x1_6.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1_6.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_6.jpg"></a><br> 「帐幕模式」<br> </td> </tr> <tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1_7.jpg"><img src="//filestorage.chrisoft.org/blog/img/x1_7.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1_7.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_7.jpg"></a><br> 平板模式<br> </td> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1_8.jpg"><img src="//filestorage.chrisoft.org/blog/img/x1_8.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1_8.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_8.jpg"></a><br> 奇葩的出风口位置<br> </td> </tr> <tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1_9.jpg"><img src="//filestorage.chrisoft.org/blog/img/x1_9.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1_9.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_9.jpg"></a><br> 一侧的接口<br> </td> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1_10.jpg"><img src="//filestorage.chrisoft.org/blog/img/x1_10.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1_10.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1_10.jpg"></a><br> 另一侧的接口<br> </td> </tr> <tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1yogaarch0.png"><img src="//filestorage.chrisoft.org/blog/img/x1yogaarch0.png" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1yogaarch0.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_x1yogaarch0.png"></a><br> Arch Linux GNOME3截图 </td> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1yogaarch.png"><img src="//filestorage.chrisoft.org/blog/img/x1yogaarch.png" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1yogaarch.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_x1yogaarch.png"></a><br> Arch Linux Plasma5的截图 </td> </tr> <tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1yogaw10.png"><img src="//filestorage.chrisoft.org/blog/img/x1yogaw10.png" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1yogaw10.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_x1yogaw10.png"></a><br> Windows 10下的截图 </td> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1yogaopened.jpg"><img src="//filestorage.chrisoft.org/blog/img/x1yogaopened.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1yogaopened.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1yogaopened.jpg"></a><br> 拆机图——背面概览 </td> </tr> <tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1yogathermal.jpg"><img src="//filestorage.chrisoft.org/blog/img/x1yogathermal.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1yogathermal.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1yogathermal.jpg"></a><br> 铜管、风扇和CPU </td> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1yogassd.jpg"><img src="//filestorage.chrisoft.org/blog/img/x1yogassd.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1yogassd.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1152x1152_x1yogassd.jpg"></a><br> Samsung PCIe NVMe SSD </td> </tr> <tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/x1ltespeedtest.png"><img src="//filestorage.chrisoft.org/blog/img/x1ltespeedtest.png" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/x1ltespeedtest.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_x1ltespeedtest.png"></a><br> ME906s LTE模块速度测试 </td> <td> diff --git a/blog/post/2017-01-09.html b/blog/post/2017-01-09.html index 6b1ea2a..778124f 100644 --- a/blog/post/2017-01-09.html +++ b/blog/post/2017-01-09.html @@ -138,76 +138,76 @@ X宝上一通乱搜之后找到几家卖对应型号屏幕的店。X1 yoga的屏 <table style="max-width:90%;margin:auto;"> <tbody><tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_183057.jpg"><img src="//filestorage.chrisoft.org/blog/img/IMG_20170107_183057.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_183057.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_183057.jpg"></a><br> 刚拆下主板<br> </td> <td> -<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_183300.jpg"><img src="//filestorage.chrisoft.org/blog/img/IMG_20170107_183300.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_183300.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_183300.jpg"></a><br> 取下屏幕后<br> </td> </tr> <tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_185104.jpg"><img src="//filestorage.chrisoft.org/blog/img/IMG_20170107_185104.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_185104.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_185104.jpg"></a><br> LCD面板分离<br> </td> <td> -<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_214649.jpg"><img src="//filestorage.chrisoft.org/blog/img/IMG_20170107_214649.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_214649.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_214649.jpg"></a><br> 感人的风扇<br> </td> </tr> <tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_214705.jpg"><img src="//filestorage.chrisoft.org/blog/img/IMG_20170107_214705.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_214705.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_214705.jpg"></a><br> <s>铜!!</s><br> </td> <td> -<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_214726.jpg"><img src="//filestorage.chrisoft.org/blog/img/IMG_20170107_214726.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_214726.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_214726.jpg"></a><br> 照相机、麦克风以及传感器们<br> </td> </tr> <tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_220652_1.jpg"><img src="//filestorage.chrisoft.org/blog/img/IMG_20170107_220652_1.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_220652_1.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_220652_1.jpg"></a><br> 上:i7-2670QM,下:i7-6600U。6600U迷一般的封装。<br> </td> <td> -<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_223551.jpg"><img src="//filestorage.chrisoft.org/blog/img/IMG_20170107_223551.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_223551.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_223551.jpg"></a><br> 这次可以把它拿出来拍了。<br> </td> </tr> <tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_223605.jpg"><img src="//filestorage.chrisoft.org/blog/img/IMG_20170107_223605.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_223605.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_223605.jpg"></a><br> 背面应该是为1TB的型号留的空间。<br> </td> <td> -<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_223727.jpg"><img src="//filestorage.chrisoft.org/blog/img/IMG_20170107_223727.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_223727.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_223727.jpg"></a><br> WLAN网卡和一只扬声器。<br> </td> </tr> <tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_224008.jpg"><img src="//filestorage.chrisoft.org/blog/img/IMG_20170107_224008.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_224008.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_224008.jpg"></a><br> 主板背面<br> </td> <td> -<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_224141.jpg"><img src="//filestorage.chrisoft.org/blog/img/IMG_20170107_224141.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_224141.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_224141.jpg"></a><br> 主板正面<br> </td> </tr> <tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/IMG_20170109_092341.jpg"><img src="//filestorage.chrisoft.org/blog/img/IMG_20170109_092341.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/IMG_20170109_092341.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170109_092341.jpg"></a><br> <s>挖矿卡</s><br> </td> <td> -<a href="//filestorage.chrisoft.org/blog/img/IMG_20170109_230933.jpg"><img src="//filestorage.chrisoft.org/blog/img/IMG_20170109_230933.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/IMG_20170109_230933.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170109_230933.jpg"></a><br> <s>尸体纪念</s><br> </td> </tr> </tbody></table> -<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_224932.jpg"><img width="50%" src="//filestorage.chrisoft.org/blog/img/IMG_20170107_224932.jpg" decoding="async"></a></div> +<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG_20170107_224932.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170107_224932.jpg"></a></div> <p> 最后奉劝大家不要像我一样暴力地使用或者对待电脑,<s>否则「世界阻止虐待电脑协会」的人会找上门来的!</s> </p> diff --git a/blog/post/2017-02-13.html b/blog/post/2017-02-13.html index f4a9f8b..a8904a1 100644 --- a/blog/post/2017-02-13.html +++ b/blog/post/2017-02-13.html @@ -104,7 +104,7 @@ loadTheme(); <p> 因为没有专门拍合照,所以临时找了张不知道什么时候随便拍的「工作状态」的桌面做概览。 </p> -<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG20161026162018.jpg"><img width="50%" src="//filestorage.chrisoft.org/blog/img/IMG20161026162018.jpg" decoding="async"></a></div> +<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG20161026162018.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG20161026162018.jpg"></a></div> <p> 图中可见我的最常用的几样设备(如果算上拍照的时候拿在手里的小米MAX的话): </p> @@ -118,9 +118,8 @@ loadTheme(); </p> <h2 id="tocanch1" class="tvis">Actively used devices</h2> <h3 id="tocanch2" class="tvis">/dev/computer/srv0 -> ../comp7</h3> -<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG_20170120_174538_1.jpg"><img width="50%" src="//filestorage.chrisoft.org/blog/img/IMG_20170120_174538_1.jpg" decoding="async"></a> -<br><reduced>寒假最后一次离开实验室之前所摄</reduced> -</div> +<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG_20170120_174538_1.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170120_174538_1.jpg"></a> +<br><reduced>寒假最后一次离开实验室之前所摄</reduced></div> <p> 嗯……这是台很有来头的组装机。它大概继承了/dev/comp4的几乎全部血统…… </p> @@ -182,19 +181,18 @@ series CPUs, and a PCI-e 2.0 x16 slot. The spec of the mother board can be found <table style="max-width:90%;margin:auto;"> <tbody><tr> <td> -<a href="//filestorage.chrisoft.org/blog/img/IMG_20170120_174709_1.jpg"><img src="//filestorage.chrisoft.org/blog/img/IMG_20170120_174709_1.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/IMG_20170120_174709_1.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20170120_174709_1.jpg"></a><br> 混乱<br> </td> <td> -<a href="//filestorage.chrisoft.org/blog/img/IMG20160930125925.jpg"><img src="//filestorage.chrisoft.org/blog/img/IMG20160930125925.jpg" width="50%" decoding="async"></a><br> +<a href="//filestorage.chrisoft.org/blog/img/IMG20160930125925.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG20160930125925.jpg"></a><br> 主板<br> </td> </tr> </tbody></table> <h3 id="tocanch4" class="tvis">/dev/computer/tio0 -> ../comp6</h3> -<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG_20161231_210242.jpg"><img width="50%" src="//filestorage.chrisoft.org/blog/img/IMG_20161231_210242.jpg" decoding="async"></a> -<br>烧水的/dev/comp6 -</div> +<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG_20161231_210242.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20161231_210242.jpg"></a> +<br>烧水的/dev/comp6</div> <p> <a href="https://chrisoft.org/blog/blogreader.php?p=2016-05-12">先前写过的体验文</a> </p> @@ -243,7 +241,7 @@ X1 yoga 2nd gen在CES 2017上亮相之后大概我这种1st gen顶配用户就 <s>我也是当时购机时加了$30升上Windows 10 Pro的用户啊,微软你就不能解决一下用户的问题吗(</s> </p> <h3 id="tocanch5" class="tvis"><s>/dev/mobi/mob0 -> </s>../mobi7</h3> -<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/20160926_164023.jpg"><img width="50%" src="//filestorage.chrisoft.org/blog/img/20160926_164023.jpg" decoding="async"></a> +<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/20160926_164023.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1156x1156_20160926_164023.jpg"></a> <br>遍体鳞伤的/dev/mobi7 GT-I9300(/dev/mobi5)摄 </div> <p> @@ -313,7 +311,7 @@ RIP小米MAX。它的使命结束于它从小米官网消失的同一天。 <blockquote class="twitter-tweet" data-lang="en"><p lang="zh" dir="ltr">庆祝逃离辣鸡小米 <a href="https://t.co/kYGXSkRNjW">pic.twitter.com/kYGXSkRNjW</a></p>— Chris Xiong (@chirs241097) <a href="https://twitter.com/chirs241097/status/839623511098347520">March 8, 2017</a></blockquote> <script async="" src="//platform.twitter.com/widgets.js" charset="utf-8"></script> <h3 id="tocanch8" class="tvis">/dev/mobi/ipod0 -> ../ipod0</h3> -<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG20160919212614.jpg"><img width="50%" src="//filestorage.chrisoft.org/blog/img/IMG20160919212614.jpg" decoding="async"></a> +<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG20160919212614.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG20160919212614.jpg"></a> </div> <p> 特别经典的iPod,经典到它的名字就叫iPod Classic。 @@ -373,7 +371,7 @@ MAX7219芯片。本来想写个小库方便操作7219控制的显示屏的,后 <s>曾经拿它的扫描仪扫描过一些自己不堪入目的手稿。</s> </p> <h3 id="tocanch11" class="tvis">/dev/input/kb0 -> ../uhid0</h3> -<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG_20161218_094943.jpg"><img width="50%" src="//filestorage.chrisoft.org/blog/img/IMG_20161218_094943.jpg" decoding="async"></a> +<div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG_20161218_094943.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_IMG_20161218_094943.jpg"></a> <br>Cherry MX Board 2.0 - black keyswitches (不要在意键盘布局) </div> <p> @@ -608,8 +606,9 @@ Samsung Galaxy S3 (<a href="http://www.gsmarena.com/samsung_i9300_galaxy_s_iii-4 </p> <h4 id="tocanch27" class="tvis">/dev/mobi6</h4> <p> -</p><div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/IMG00034-20150826-1529.jpg"> -<img src="//filestorage.chrisoft.org/blog/img/IMG00034-20150826-1529.jpg" width="40%" decoding="async"></a><br> +</p><div style="text-align:center;max-width:90%;"><a href="//filestorage.chrisoft.org/blog/img/ +IMG00034-20150826-1529.jpg"><img style="width: 40%;" src="//filestorage.chrisoft.org/blog/img/ +IMG00034-20150826-1529.jpg"></a><br> <reduced>/dev/mobi5与/dev/mobi6的合照,/dev/mobi4所摄<reduced> </reduced></reduced></div> Samsung Galaxy Tab 2 7.0 (<a href="http://www.gsmarena.com/samsung_galaxy_tab_2_7_0_p3100-4543.php">gsmarena</a>) diff --git a/blog/post/2017-05-08.html b/blog/post/2017-05-08.html index 0725132..8931dc7 100644 --- a/blog/post/2017-05-08.html +++ b/blog/post/2017-05-08.html @@ -366,16 +366,16 @@ loadTheme(); 最后放几张旅游照片 </p> <div style="text-align:center;"> - <img width="80%" src="//filestorage.chrisoft.org/blog/img/20170506_101422.jpg" decoding="async"> + <a href="//filestorage.chrisoft.org/blog/img/20170506_101422.jpg"><img style="width: 80%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_20170506_101422.jpg"></a> <br> - <img width="40%" src="//filestorage.chrisoft.org/blog/img/20170507_080324.jpg" decoding="async"> - <img width="40%" src="//filestorage.chrisoft.org/blog/img/20170507_080334.jpg" decoding="async"> + <a href="//filestorage.chrisoft.org/blog/img/20170507_080324.jpg"><img style="width: 40%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_20170507_080324.jpg"></a> + <a href="//filestorage.chrisoft.org/blog/img/20170507_080334.jpg"><img style="width: 40%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_20170507_080334.jpg"></a> <br> - <img width="80%" src="//filestorage.chrisoft.org/blog/img/20170507_144512.jpg" decoding="async"> + <a href="//filestorage.chrisoft.org/blog/img/20170507_144512.jpg"><img style="width: 80%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_20170507_144512.jpg"></a> <br> - <img width="80%" src="//filestorage.chrisoft.org/blog/img/20170508_074642.jpg" decoding="async"> + <a href="//filestorage.chrisoft.org/blog/img/20170508_074642.jpg"><img style="width: 80%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_20170508_074642.jpg"></a> <br> - <img width="80%" src="//filestorage.chrisoft.org/blog/img/20170508_074729.jpg" decoding="async"> + <a href="//filestorage.chrisoft.org/blog/img/20170508_074729.jpg"><img style="width: 80%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_20170508_074729.jpg"></a> </div> </article> </div><br><hr> diff --git a/blog/post/2017-12-21.html b/blog/post/2017-12-21.html index 8e1733c..51268fe 100644 --- a/blog/post/2017-12-21.html +++ b/blog/post/2017-12-21.html @@ -216,8 +216,7 @@ Sierra 的 UI 对比图。总体来说,Windows的界面已经被彻底扁平 恕我直言,用电脑这么多年,我还没有找到真正符合我的审美的设计理念。如果非要说的话, Haiku和Mac OS 9可能有这种资格。于是,我选择破罐破摔。 </p> -<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/gentoodesktop.png"> -<img src="//filestorage.chrisoft.org/blog/img/gentoodesktop.png" width="80%" decoding="async"></a> +<div style="margin:auto;text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/gentoodesktop.png"><img style="width: 80%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1280x1280_gentoodesktop.png"></a> <br>我的桌面</div> </td> </tr> diff --git a/blog/post/2018-05-08.html b/blog/post/2018-05-08.html index 4773f86..b716be6 100644 --- a/blog/post/2018-05-08.html +++ b/blog/post/2018-05-08.html @@ -107,23 +107,23 @@ loadTheme(); 虽然这并不在是说北邮的出题人不尊重他们的工作。 (其实可以看出他们已经努力了,Nice try.) </p> -<div style="text-align:center;"><img src="//filestorage.chrisoft.org/blog/img/sdacm18xa.png" width="50%" decoding="async"><br><i>正式赛B题</i></div> +<div style="text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/sdacm18xa.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_sdacm18xa.png"></a><br><i>正式赛B题</i></div> <p> 输出呢?经验是什么?数据范围呢???这种随便过一遍就能审阅出的明显问题, 出现在省级比赛上,真的不会让人看不起吗? 裁判组在比赛开始一刻钟有队伍提出质疑之后才(陆续)发现了此题中的各种问题。 即使是印刷了错误版本的题目,依然不能原谅吧? </p> -<div style="text-align:center;"><img src="//filestorage.chrisoft.org/blog/img/sdacm18xd.png" width="50%" decoding="async"><br><i>Real Contest.</i></div> +<div style="text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/sdacm18xd.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/sdacm18xd.png"></a><br><i>Real Contest.</i></div> <p> Real contest? Faux contest? </p> -<div style="text-align:center;"><img src="//filestorage.chrisoft.org/blog/img/sdacm18xb.png" width="50%" decoding="async"><br><i>用Gill Sans作正文字体?</i></div> +<div style="text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/sdacm18xb.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_sdacm18xb.png"></a><br><i>用Gill Sans作正文字体?</i></div> <p> 即使用伦敦地铁用的字体也无法改变你英语差的事实。另外, 1Il只有用游标卡尺才能量出区别的字体用在科技类文本里大概不太好吧? </p> -<div style="text-align:center;"><img src="//filestorage.chrisoft.org/blog/img/sdacm18xc.png" width="50%" decoding="async"><br><i>最好的防AK方式当然是题意杀啦</i></div> +<div style="text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/sdacm18xc.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1024x1024_sdacm18xc.png"></a><br><i>最好的防AK方式当然是题意杀啦</i></div> <p> 最后是一道没有人能读懂的题。敝校公认英语最强的两位队员没有一个看懂的。 感兴趣的读者可以挑战一下。<b>要能够解释样例才行喔</b>。 @@ -138,7 +138,7 @@ Real contest? Faux contest? <p> 首先来看一下题目(图片比较乱…): </p> -<div style="text-align:center;"><img src="//filestorage.chrisoft.org/blog/img/sdacm18xe.png" width="50%" decoding="async"><br><i>F题题面</i></div> +<div style="text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/sdacm18xe.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/sdacm18xe.png"></a><br><i>F题题面</i></div> <p> 实际上F题是容斥里面比较常规甚至可以说是相当简单的, 题目本身也可以说是中规中矩。思路其实很明显:设条件 @@ -167,7 +167,7 @@ F题已经被过穿了。与此同时我还注意到这题的一血是开场<b>6 于是就开始想自己是不是想复杂了,然后就开始试图换思路, 就有了题面附近大量乱七八糟的草稿以及下面这张图…… </p> -<div style="text-align:center;"><img src="//filestorage.chrisoft.org/blog/img/sdacm18xf.png" width="50%" decoding="async"><br><i>wtf???</i></div> +<div style="text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/sdacm18xf.png"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/sdacm18xf.png"></a><br><i>wtf???</i></div> <p> 后来甚至想到了把整个区间分8段然后乘法原理强上的思路…… 然而因为依然难写所以也被否决了。此时的我,大概已是意识模糊,不省人事, @@ -274,7 +274,8 @@ PC^2也没有应对这种问题的功能(甚至全部重测的功能)。是 <ul> <li>苟狗写了全部AC代码。<s>难道我成功培养了新一代代码手</s></li> <li>最后半小时队友试图抢救F题时,已经空状态的我在一边理论I题…… -<div style="text-align:center;"><img src="//filestorage.chrisoft.org/blog/img/sdacm18xg.jpg" width="50%" decoding="async"><br><i>没用尺规</i></div> +<div style="text-align:center;"><a href="//filestorage.chrisoft.org/blog/img/sdacm18xg.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/sdacm18xg.jpg"></a> +<br><i>没用尺规</i></div> <br> ……实在惭愧 </li> diff --git a/blog/post/2018-12-06.html b/blog/post/2018-12-06.html index 13b8a75..5330b9c 100644 --- a/blog/post/2018-12-06.html +++ b/blog/post/2018-12-06.html @@ -84,7 +84,7 @@ loadTheme(); <li><a class="toctarg" href="#tocanch0">前言</a></li><li><a class="toctarg" href="#tocanch1">购买前</a></li><li><a class="toctarg" href="#tocanch2">剁手</a></li><li><a class="toctarg" href="#tocanch3">到货</a></li><li><a class="toctarg" href="#tocanch4">第一印象</a></li><li><a class="toctarg" href="#tocanch5">「偷工减料」和「虚假宣传」</a></li><li><a class="toctarg" href="#tocanch6">换掉令人<sup>我</sup>痛苦的 MIUI</a></li><li><a class="toctarg" href="#tocanch7">终于,小米脱掉了……</a></li></ul> </li> <li style="margin-left:-0.5em"><a id="prevp" href="2018-10-11.html">Prev post</a></li> - <li style="margin-left:-0.5em"><a id="nextp" href="TOP.html">Next post</a></li> + <li style="margin-left:-0.5em"><a id="nextp" href="2019-02-13.html">Next post</a></li> </ul> </div> <div id="content"> @@ -131,14 +131,30 @@ loadTheme(); <p>可以看到,四侧边框均有所膨胀(由于对齐问题,左侧的边框比右侧膨胀得多些)。 作为一个3元的方便面包装上能画出牛肉的国家的公民,对这样的「虚假宣传」当然是司空见惯。 但是毕竟苹果都不会拿渲染图来糊弄人,小米这种「果粉」企业,就不能从苹果身上学点好东西吗(</p> <p>另外在官网参数的传感器一栏,MIX 3 似乎缺少了气压计和霍尔传感器。当时我在付款后才发现这点。 于是对阉割旗舰机传感器的小米感到失望。然而机器到手之后,发现实际上是有这两个传感器的。 <del>这应该也算虚假宣传吧?</del></p> <p>最后,看到 gsmarena 上写的屏幕玻璃是 Corning Gorilla Glass (unspecified version) 就感到了一丝不安。 没过多久我刚离开桌子几步手机就(由于未知的原因)从桌子上掉了下去。背面着地,捡起来一看好像没事。(还好已经套了壳,不然……) 过了几天仔细观察才发现屏幕上已经有了划痕(一处相对不明显的面积约中号记号笔点一个点那么大,另一处是一个凹坑)。 已知是 Corning Gorilla Glass 4 的 Galaxy Note 4 用了一年半还没有什么肉眼可见的划痕。嗯……可以确定 MIX 3 的屏幕玻璃肯定不是 Corning Gorilla Glass 4 了。 <a id="n11" href="#note11" class="note">[11]</a></p> +<p>19年2月14日更新: gsmarena 上更新了信息,发现确实不是 Corning Gorilla Glass 4,而是 Corning Gorilla Glass 5 。 看来还是怪我我艹机太狠了(<a id="n12" href="#note12" class="note">[12]</a></p> <h2 id="tocanch6" class="tvis">换掉令人<sup>我</sup>痛苦的 MIUI</h2> <p>可以说 MIUI 是我关于这台手机最担心的特性了。</p> +<p>说实话只要不是北朝鲜那种不准安装任何第三方应用的安卓机,好像都可以凑合用一下。 但是花那么多钱买来的手机肯定还是要自己怎么舒服怎么用的(</p> +<p>因为我个人的手机使用习惯与 >90% 的国人都不同,所以 MIUI 的许多优势特性我都体会不到。 而且小米手机的硬件本身又不像 Galaxy Note 一样提供与可以将它和其他手机一下子区分开的功能 <a id="n13" href="#note13" class="note">[13]</a>, 所以直接解锁手机换掉系统并不会让我对 MIUI 有任何留恋。</p> +<p>于是就开始换系统吧。首先就是要解锁 bootloader。我对手机厂商锁住 bootloader 的做法是完全不在意的 -- 在不影响我换系统的前提下<a id="n14" href="#note14" class="note">[14]</a>。 由于以前使用小米 MAX 的时候解锁过手机,所以不需要重新申请解锁资格。打开当时的解锁工具, 连接上处于 fastboot 模式的手机,点一下解锁……本来以为就这么简单的,结果要我换最新的解锁工具。 「还能不让我解锁不成」,我想道。然后就照做了,紧接着就撞上了小米最新的防……我也不知道他们在防什么用的技巧:</p> +<p>图</p> +<p>还好我只需要等三天。论坛里看到有些要等十五天甚至三十天的就比较惨了 <a id="n15" href="#note15" class="note">[15]</a>。</p> +<p>我的不自愿三天 MIUI 体验就这么开始了。</p> +<p>虽然以前用过小米的手机,但是因为对充满 iOS 味的 MIUI 的抵制,所以实际交互时间可能不到 12 个小时。 这次发现好像除了整个系统弥漫着果味和几个小 bug 之外,好像明确可以指出的缺点也没那么多 —— 至少在登录 Google 账号,换掉没有 App drawer 的 MIUI 默认 launcher 之后还是可以凑合用的。</p> +<p>至于前面提到的小 bug,大概都是些许多人都碰不到的毛病。因为用手机习惯把显示大小调小些用, 所以拿到之后第一步就是去设置里找显示大小的选项。然而在当时版本的系统里并没有发现这个选项 <a id="n16" href="#note16" class="note">[16]</a>。于是我就只好去开发者选项里调最小宽度了。 调完之后就出现了各种奇怪的状况……</p> +<p>图二枚</p> +<p>各种界面元素错位还有莫名其妙被砍了一刀的图标什么的。顺便右边的图里还有我这三天中看到的唯一一条 M(A)I(D)UI 广告,看到之后内置浏览器就被我设法禁用了。当然,这些问题远未达到影响正常使用的程度,只是看起来不爽罢了。</p> +<p>MIUI 体验日的最后一天,收到一个 OTA。装上之后发现图标里出白框的毛病没有了,但是界面元素错位的问题还在。 此时我早已不在乎这些小毛病 —— 因为马上就可以刷机了。</p> +<p>托 Project Treble 的福,这台刚出的设备也有很大概率能找到适合日常使用的第三方系统。 行动的时间到了,解锁,刷 vbmeta ,刷 A/B device 用的 system<a id="n17" href="#note17" class="note">[17]</a></p> <h2 id="tocanch7" class="tvis">终于,小米脱掉了……</h2> <p>我给它戴上的「二流品牌」的帽子?</p> <p>也许还没有。至少没有完全脱掉。</p> </article> +<!-- +vim: tw=0 syntax=markdown +--> </div><br><hr> - <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: <del>听音乐只能听到_Hi_-hat,所以是_Hi_-Res Audio(</del><br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: 圆角屏幕并不在此列<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: 将符合上面三条的手机筛选出来,你会发现某水果公司生产的奢侈品赫然在列。 当然原因并不全是因为我是 "Apple Hater",主要还是对其他厂商无故跟风的嫌弃(<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: <s>主要是不想要一台比旧手机屏幕更差的新机(</s><br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: <del>全怪苹果恶意哄抬物价</del> 不过三星的旧机型价格跳水仍然很严重,然而这次不太想买过时平台的机型了。<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: 我曾经宣称到手就会吧屏幕用502粘起来, 但是现在发现玩起来找回了当年玩高中同学的 Nokia X3 的感觉(lbz是不是打喷嚏了),所以就没有粘。<br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: 有人能告诉我这个东西是怎么被硬生生地从无到有造出来的吗?<br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: 实际价值<10元<br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: 非官方系统 (LineageOS 15.1)<br></span><span class="TText"><a id="note10" href="#n10">[10]</a>: <a href="https://www.gsmarena.com/dxomark_the_iphone_xr_is_unrivaled_among_singlecamera_phones-news-34592.php">一向看不上DxOMark的苹果最终忍不住也来给他们塞钱了</a><br></span><span class="TText"><a id="note11" href="#n11">[11]</a>: 我从不把手机和钥匙放在一起。唯一跟 MIX 3 放在一起的就是 Galaxy Note 4。塑料不可能划伤玻璃, 有作案能力的只剩 Note 4 可怜的两圈金属边框了。<br></span></div> + <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: <del>听音乐只能听到_Hi_-hat,所以是_Hi_-Res Audio(</del><br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: 圆角屏幕并不在此列<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: 将符合上面三条的手机筛选出来,你会发现某水果公司生产的奢侈品赫然在列。 当然原因并不全是因为我是 "Apple Hater",主要还是对其他厂商无故跟风的嫌弃(<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: <s>主要是不想要一台比旧手机屏幕更差的新机(</s><br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: <del>全怪苹果恶意哄抬物价</del> 不过三星的旧机型价格跳水仍然很严重,然而这次不太想买过时平台的机型了。<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: 我曾经宣称到手就会吧屏幕用502粘起来, 但是现在发现玩起来找回了当年玩高中同学的 Nokia X3 的感觉(lbz是不是打喷嚏了),所以就没有粘。<br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: 有人能告诉我这个东西是怎么被硬生生地从无到有造出来的吗?<br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: 实际价值<10元<br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: 非官方系统 (LineageOS 15.1)<br></span><span class="TText"><a id="note10" href="#n10">[10]</a>: <a href="https://www.gsmarena.com/dxomark_the_iphone_xr_is_unrivaled_among_singlecamera_phones-news-34592.php">一向看不上DxOMark的苹果最终忍不住也来给他们塞钱了</a><br></span><span class="TText"><a id="note11" href="#n11">[11]</a>: 我从不把手机和钥匙放在一起。唯一跟 MIX 3 放在一起的就是 Galaxy Note 4。塑料不可能划伤玻璃, 有作案能力的只剩 Note 4 可怜的两圈金属边框了。<br></span><span class="TText"><a id="note12" href="#n12">[12]</a>: 不过我怎么艹机了来着?(<br></span><span class="TText"><a id="note13" href="#n13">[13]</a>: 这类硬件一般在通用的第三方系统下的集成支持都远不如官方系统。若是读者认为小米的滑盖属于此列, 我只能提醒一句数位屏能提供的交互量跟滑盖应该不是在一个数量级上的。<br></span><span class="TText"><a id="note14" href="#n14">[14]</a>: 某爱国厂 —— shame on you!<br></span><span class="TText"><a id="note15" href="#n15">[15]</a>: <a href="https://en.miui.com/forum.php?mod=viewthread&tid=3806453&highlight=bootloader%2Bunlock%2B72%2Bhours">[1]</a> <a href="https://www.miui.com/forum.php?mod=viewthread&tid=21323385&highlight=%E8%A7%A3%E9%94%81%2Bbootloader">[2]</a> <a href="https://www.miui.com/forum.php?mod=viewthread&tid=18163530&highlight=%E8%A7%A3%E9%94%81%2Bbootloader">[3]</a> <br></span><span class="TText"><a id="note16" href="#n16">[16]</a>: 后来我还去小米之家把所有展示机看了一遍,三台小米 MIX 3 里只有一台没有此选项, 其他机型的展示机基本都有<br></span><span class="TText"><a id="note17" href="#n17">[17]</a>: 小米 MIX 3 不是使用 A/B 分区模式的设备, 但是因为 Android Pie 出现之前 Android 要求采用 A/B Update 的设备合并 ramdisk (/) 和 /system (即 <a href="https://source.android.com/devices/bootloader/system-as-root">System-as-root</a>), 所以 Treble GSI 的开发者直接使用 a/ab 来区分 system 镜像是否包含 ramdisk。 而 Android Pie 发布后,Android 要求所有发布时搭载 Android Pie 的设备使用 System-as-root 分区方案。 所以这里也需要用标注为 ab 的GSI镜像。<br></span></div> <div id="insanch" style="height:3em;"></div> <div id="footer" style=""> <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div> diff --git a/blog/post/2019-02-13.html b/blog/post/2019-02-13.html new file mode 100644 index 0000000..a0018c4 --- /dev/null +++ b/blog/post/2019-02-13.html @@ -0,0 +1,159 @@ +<html><head> +<meta charset="utf-8"> +<meta name="viewport" content="width=device-width,initial-scale=1"> +<meta name="theme-color" content="#000000"> +<title>Chrisoft::Blog</title> +<script type="text/javascript" src="/panel.js"></script> +<script type="text/javascript" src="/blog/footnoter.js"></script> +<script type="text/javascript" src="/blog/aes-js.js"></script> +<script type="text/javascript" src="/blog/scrypt.js"></script> +<script type="text/javascript" src="/blog/sha256.js"></script> +<script type="text/javascript" src="/blog/decryptor.js"></script> +<link rel="stylesheet" type="text/css" href="/common.css"> +<link rel="stylesheet" type="text/css" href="/panel.css"> +<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a"> +<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b"> +<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a"> +<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b"> +<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a"> +<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b"> +<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a"> +<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b"> +<link rel="stylesheet" type="text/css" href="/blog/blogext.css"> +<script> +function ol() +{ + window.onresize=function() + { + if(window.innerWidth<768) + setupevents(); + else unsetevents(); + } + window.onresize(); + _decryptonload(); +} +function loadTheme(){ + var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"); + if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz'; + var ent=""; + var d=new Date(); + if(thm[0]=='z') + { + var m=d.getMonth()+1; + if(m>=3&&m<6)thm='0'+thm[1]; + else if(m>=6&&m<9)thm='1'+thm[1]; + else if(m>=9&&m<12)thm='2'+thm[1]; + else thm='3'+thm[1]; + } + if(thm[1]=='z') + {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';} + ent=`theme${thm}`; + var R=new RegExp('theme[0-4][ab]'); + for(var i=0;i<document.styleSheets.length;++i) + { + if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent) + document.styleSheets[i].disabled=true; + else document.styleSheets[i].disabled=false; + } + var thmcolor=""; + switch(thm[0]) + { + case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break; + case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break; + case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break; + case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break; + } + document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor); +} +loadTheme(); +</script> +</head> +<body onload="ol()" style="overflow-x:hidden;"> + <div id="panel" class="TText"> + <ul id="panellist"> + <li><a href="/"><h1>Chrisoft</h1></a></li> + <li><a href="/blog"><h2>Blog</h2></a></li> + <li><a href="#"><h3 id="title">Site Revamp and Other Rants -- 2019 Edition</h3></a></li> + <li><span>Tags</span> + <ul id="tagslist"> + <li><a href="/blog/list/web/">web</a></li><li><a href="/blog/list/random-xp/">random-xp</a></li><li><a href="/blog/list/garbage/">garbage</a></li></ul> + </li> + <li id="tocouter" style="display: none;"> + <span>Table of Contents</span> + <ul id="tocroot"> + </ul> + </li> + <li style="margin-left:-0.5em"><a id="prevp" href="2018-12-06.html">Prev post</a></li> + <li style="margin-left:-0.5em"><a id="nextp" href="2019-04-25.html">Next post</a></li> + </ul> + </div> + <div id="content"> + <h2 id="titleh" class="TText" style="font-wight:normal;">Site Revamp and Other Rants -- 2019 Edition</h2> + <div id="datetags" class="TText" style="margin-bottom:1em;">2019-02-13<br>#web #random-xp #garbage</div> + <hr><div id="article" class="TText"><article> +<p>If you are reading this, your browser probably fetched all data it required to display the page directly from my VPS hosted by ConoHa.</p> +<h1 id="mirror-in-japan">Mirror in Japan</h1> +<p>(No pun intended)</p> +<p>I set up my own git server half a year ago. Now I've found (https://cgit.chrisoft.org/web.git/)[the perfect use for it]. I create the git repository right in <code>/var/www/html</code> on my local server. The remote server has a post-receive hook that automatically pulls in the document root. Any volatile large files are moved to a new virtual host <code>filestorage.chrisoft.org</code> and kept in sync with <code>rsync</code>.</p> +<p>The site also underwent a major cleanup. Many legacy stuff got either removed or relocated.</p> +<p>Generally this means you should experience major speedup visiting this site. If, however, you are exeriencing problems, please do not hesitate to contact me.</p> +<p>The reverse proxy is now moved to <code>rp.chrisoft.org</code>. It's not yet accessible at the time of writing because my local server is hidden super stealthily under multiple layers of NAT.</p> +<h1 id="an-eruditus-from-waseda-and-an-illiterate-in-china">An Eruditus from Waseda and An Illiterate in China</h1> +<p>Everyone except me has made significant progress.</p> +<p>I was actually shocked to learn that he's now majoring in something related to aviation machinery.</p> +<p>Shame on me, I guess.</p> +<h1 id="a-world-in-which-everyone-can-program">A world in which everyone can program</h1> +<p>I shall probably quit programming and move on by then.</p> +<h1 id="googlephobia">Googlephobia</h1> +<p>Shit. They are probably also watching me writing this.</p> +<p>Thanks to (?) the GrandeFreakWitless, my reliance on Google is not that strong -- nope. It's actually my general fear and distrust of those tech giants.</p> +<p>My fear was magnified by my recent findings of just how much Google knows about me -- they probably know me better than myself; and again by Louis Rossmann <a id="n1" href="#note1" class="note">[1]</a>.</p> +<p>When those Google fanboys are still enjoying the great convenience they provide, I'm already planning to flee from Google. It's probably just me being hyperallergic, but it also could be Google doing something really unfair to their users.</p> +<h1 id="software-subscription-model-sucks">Software Subscription Model Sucks</h1> +<p>Reading through Roland Cloud's product page triggers me everytime: I sincerely cannot figure out why they make it a subscription service rather than a one-time purchase (with a fee for each upgrade).</p> +<p>Usually people subscribe for:</p> +<ul> +<li>Publication or media services, e.g. television, newspapers and magazines. These services provide frequently updated information to the subscriber.</li> +<li>Physically consumable material, such as dairy product.</li> +</ul> +<p>Roland Cloud falls into neither of these two categories. It's not updated as frequent, and it's certainly not physically consumable. The most triggering detail is that if you end your subscription, you will not be able to use any of the products you previously owned, which is ridiculous because you can always keep older issues of a newspaper even you unsubscribed from it.</p> +<p>Supporters of the subscription model may reject me saying 'if you can get access to everything when you join and keep it after unsubscribing, you are essentially purchasing it with ultra-low price', which brings up my next point: Roland Cloud's subscription model is flawed from the beginning:</p> +<ul> +<li>Get everything on subscribe: this differs from traditional subscription a lot, which seems a great bounty to the customer. But it causes problems such as ...</li> +<li>Lose everything on unsubscribe: this is <em>very</em> unfair to the subscriber and makes short-term subscription worth almost nothing. For example if I just want Sound Canvas VA really badly, I would imagine subscribing shortly before its release and unsubscribe after I'm eligible for keeping the product permanently. But this is simply not possible.</li> +<li>Weird pricing. To be honest the current pricing is pretty fair for long-term subscribers. But if Roland somehow decided to fix the 'lose everything on unsubscribe' problem (which is very unlikely to happen), the pricing would become super complex: they probably do not want people to keep a virtual TB-303 for just $19.99.</li> +<li>Potentially unsustainable. Every good thing must come to an end. The most attractive products in Roland Cloud is the software models of Roland's synthesizers from its golden years. But Roland will run out of models to recreate one day. What would Roland do by then? Release everything as a one-time purchase so that every long-term subscriber feels ripped off?</li> +</ul> +<p>I'm an absolute supporter of Roland releasing authentic-sounding digitialized version of their legendary synthesizer models. But their subscription model pisses me off so hard. I know it's not a big deal for a professional producer. However this is a real deal-breaker for amateurs such as me.</p> +<p>Unfortunately there's no real competitors out there when things come to reproducing their own synthesizers. Also a little bit off-topic: the music producing industry deserves more high quality free (as in freedom) software.</p> +<p>Now let's move on and talk about Office 365 by Microsoft and Creative Cloud from Adobe. They bundles software with value-add services such as e-mail service and (optinal) creativity material. IMHO these products they are trying to turn into a service resemble a tool, such as a screwdriver, rather than an apartment that people actually go for renting instead of purchasing.</p> +<p>Paying a monthly fee for a screwdriver makes absolutely no sense. That said, I would stick with my plain old screwdriver, rather than that shiny gold-plated screwdriver with 10 heads which I will lose whenever I stop paying them. <strong>Green is my pepper.</strong></p> +<p>The purpose of this entire rant is to remind the reader of just how many ways proprietary software vendors could come up with to screw their users up. What they care the most has always been money and this will simply not change any time soon. Get ready for more!</p> +</article> +</div><br><hr> + <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: (https://vimeo.com/329297480)[link to video]<br></span></div> + <div id="insanch" style="height:3em;"></div> + <div id="footer" style=""> + <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div> + <div style="text-align:center;" class="TText"> + Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5 + <br> + Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span> + </div> + </div> + <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;"> + </div> + </div> + <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;"> + <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);"> + <div id="keyhint" style="margin-bottom:8px;"></div> + <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div> + <div style="height:2.25em;"> + <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button> + <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button> + </div> + + </div> + + +</div></body></html>
\ No newline at end of file diff --git a/blog/post/2019-04-25.html b/blog/post/2019-04-25.html new file mode 100644 index 0000000..de7f63f --- /dev/null +++ b/blog/post/2019-04-25.html @@ -0,0 +1,962 @@ +<html><head> +<meta charset="utf-8"> +<meta name="viewport" content="width=device-width,initial-scale=1"> +<meta name="theme-color" content="#000000"> +<title>Chrisoft::Blog</title> +<script type="text/javascript" src="/panel.js"></script> +<script type="text/javascript" src="/blog/footnoter.js"></script> +<script type="text/javascript" src="/blog/aes-js.js"></script> +<script type="text/javascript" src="/blog/scrypt.js"></script> +<script type="text/javascript" src="/blog/sha256.js"></script> +<script type="text/javascript" src="/blog/decryptor.js"></script> +<link rel="stylesheet" type="text/css" href="/common.css"> +<link rel="stylesheet" type="text/css" href="/panel.css"> +<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a"> +<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b"> +<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a"> +<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b"> +<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a"> +<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b"> +<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a"> +<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b"> +<link rel="stylesheet" type="text/css" href="/blog/blogext.css"> +<script> +function ol() +{ + window.onresize=function() + { + if(window.innerWidth<768) + setupevents(); + else unsetevents(); + } + window.onresize(); + _decryptonload(); +} +function loadTheme(){ + var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"); + if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz'; + var ent=""; + var d=new Date(); + if(thm[0]=='z') + { + var m=d.getMonth()+1; + if(m>=3&&m<6)thm='0'+thm[1]; + else if(m>=6&&m<9)thm='1'+thm[1]; + else if(m>=9&&m<12)thm='2'+thm[1]; + else thm='3'+thm[1]; + } + if(thm[1]=='z') + {if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';} + ent=`theme${thm}`; + var R=new RegExp('theme[0-4][ab]'); + for(var i=0;i<document.styleSheets.length;++i) + { + if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent) + document.styleSheets[i].disabled=true; + else document.styleSheets[i].disabled=false; + } + var thmcolor=""; + switch(thm[0]) + { + case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break; + case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break; + case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break; + case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break; + } + document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor); +} +loadTheme(); +</script> +</head> +<body onload="ol()" style="overflow-x:hidden;"> + <div id="panel" class="TText"> + <ul id="panellist"> + <li><a href="/"><h1>Chrisoft</h1></a></li> + <li><a href="/blog"><h2>Blog</h2></a></li> + <li><a href="#"><h3 id="title">EDIROL SD-80: A Trapped Beast</h3></a></li> + <li><span>Tags</span> + <ul id="tagslist"> + <li><a href="/blog/list/device-review/">device-review</a></li><li><a href="/blog/list/midi/">midi</a></li><li><a href="/blog/list/music/">music</a></li><li><a href="/blog/list/hands-on/">hands-on</a></li></ul> + </li> + <li id="tocouter"> + <span>Table of Contents</span> + <ul id="tocroot"> + <li><a class="toctarg" href="#tocanch0"><em>STUDIO Canvas</em> acquired</a></li><li><a class="toctarg" href="#tocanch1">The configuration</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch2">Connection to the computer</a></li><li><a class="toctarg" href="#tocanch3">Settings things up in Linux</a></li><li><a class="toctarg" href="#tocanch4">Setting things up in Windows</a></li></ul></li><li><a class="toctarg" href="#tocanch5">What does it sound like?</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch6">Relation to EDIROL HyperCanvas and the Cakewalk TTS-1</a></li></ul></li><li><a class="toctarg" href="#tocanch7">Working with the SD-80</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch8">Fighting against latency</a></li><li><a class="toctarg" href="#tocanch9">Recording</a></li><li><a class="toctarg" href="#tocanch10">Editing the sounds</a></li><li><a class="toctarg" href="#tocanch11">Impact on the workflow</a></li></ul></li><li><a class="toctarg" href="#tocanch12">Quirks</a></li><li><a class="toctarg" href="#tocanch13">Beneath the chassis</a></li><li><a class="toctarg" href="#tocanch14">What the manual doesn't tell</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch15">Testing mode</a></li><li><a class="toctarg" href="#tocanch16">Messing around sans the chassis</a></li><li><a class="toctarg" href="#tocanch17">Chart A</a></li><li><a class="toctarg" href="#tocanch18">Chart B</a></li></ul></li><li><a class="toctarg" href="#tocanch19">Things to do besides imitating ZUN</a></li><li><a class="toctarg" href="#tocanch20">Newer Roland sound modules?</a></li><li><a class="toctarg" href="#tocanch21">If you want to learn more ...</a></li></ul> + </li> + <li style="margin-left:-0.5em"><a id="prevp" href="2019-02-13.html">Prev post</a></li> + <li style="margin-left:-0.5em"><a id="nextp" href="TOP.html">Next post</a></li> + </ul> + </div> + <div id="content"> + <h2 id="titleh" class="TText" style="font-wight:normal;">EDIROL SD-80: A Trapped Beast</h2> + <div id="datetags" class="TText" style="margin-bottom:1em;">2019-04-25<br>#device-review #midi #music #hands-on</div> + <hr><div id="article" class="TText"><script> +window.addEventListener("DOMContentLoaded",function(){ +const cl=document.querySelectorAll('div.collapse'); +let n=0; +for(let x of cl) +{ + const d=document.createElement('blockquote'); + const dd=x.cloneNode(true); + x.parentNode.insertBefore(d,x); + x.parentNode.removeChild(x); + dd.id=`cc${n++}`; + dd.style.display='none'; + const s=document.createElement('span'); + const b=document.createElement('b'); + const a=document.createElement('a'); + a.classList.add('ca'); + a.setAttribute('x',n-1); + a.innerHTML='show'; + a.href='javascript:void(0)'; + b.innerHTML=dd.getAttribute('caption'); + s.appendChild(b); + s.appendChild(document.createTextNode(' [')); + s.appendChild(a); + s.appendChild(document.createTextNode(']')); + d.appendChild(s); + d.appendChild(dd); + a.onclick=function() + { + let x='none'; + if(a.innerHTML=='show') + { + a.innerHTML='hide'; + x='block'; + } + else + { + a.innerHTML='show' + } + document.getElementById(`cc${a.getAttribute('x')}`).style.display=x; + } +} +const al=document.querySelectorAll('audio'); +n=0; +for(let x of al) +{ + x.id=`a${n++}`; + x.onplay=function() + { + for(let x of al) + { + if(x.id!=this.id)x.pause(); + } + } +} +}); +</script> +<article> +<p>This article is about my hands on of the EDIROL STUDIO Canvas SD-80. Even though I'm a newcomer to the STUDIO Canvas owners community, veterans may still find something interesting here.</p> +<h2 id="tocanch0" class="tvis"><em>STUDIO Canvas</em> acquired</h2> +<p>Ever since I learned that ZUN uses a SD-90 as one of his major synthesizers <a href="https://www12.atwiki.jp/touhousoundfont/pages/22.html">here</a>, I've always been dreaming to get my hands on one of those. But these things are not particularly easy to find in China. There are plenty of deals on ebay though. However, after a failed purchase attempt made in 2016 which also led to the ridiculous suspension of my ebay account, I left the idea alone for multiple years. Things changed earlier this month, when <a href="https://owner203.com">owner203</a> helped me acquire my very own SD-80 and kindly delivered it from Japan.</p> +<p>I did not go for a SD-90 since they are all ridiculously priced in 2019. The deal I tried to make back in 2016 would cost me around $300 (shipping included). Now they are all way beyond $400. This forced me to resort to lower-end models, namely the SD-80 and SD-20. There's also the SD-50 which I almost bought back in 2014, before I found out it is essentially a stripped-down version of Roland SonicCell without the SRX expandability. Therefore although the SD-50 retains the compatibility with the synth engine found in SD-90 (both are from models supporting SRX, namely the XV-5080 and SonicCell), it comes with a complete new set of waveforms and patches which makes it sounds totally different. So the SD-50 is definitely a no go.</p> +<p>The only choices left are SD-80 and SD-20. SD-20 can be found very cheap online (from $59). However SD-20 does have half of the polyphony and most editability of other STUDIO Canvas' axed. Also gone are 3 entire sound banks (and presumably some waveforms). On the other hand, SD-80 costs a lot more (starting from ~$200), but is capable of generating everything the SD-90 can (the only missing part in SD-80 compared to SD-90 is the audio interface). After deciding no more compromise should be made, I went straight for the SD-80.</p> +<p>The module arrived two weeks after the order was placed. It certainly wasn't the happiest SD-80 in the world: the chassis bears quite a lot of scratches all around. The value knob takes a lot of force to turn and has a good amount of friction on it, to which I found a quick solution by simply pushing the knob downwards a little bit while turning it. Aside from the looks, the module itself is in perfect working order. It came with a power cord and its rack mount ears, but without any of its original paperwork or the CD-ROM. As most of the documentation and drivers can be found online, the only things I've lost are the demo midi files, which is still a shame.</p> +<table> +<tbody><tr> +<td> +<div style="text-align:center;max-width:98%;"> +<a href="//filestorage.chrisoft.org/blog/img/SD-80_top.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_top.jpg"></a> <br>Top cover +</div> +</td> +<td> +<div style="text-align:center;max-width:98%;"> +<a href="//filestorage.chrisoft.org/blog/img/SD-80_label.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_label.jpg"></a> <br>Label with S/N removed. Visible on top left corner is a foot pad that seems to be a slice of cork. +</div> +</td> +</tr><tr> +<td> +<div style="text-align:center;max-width:98%;"> +<a href="//filestorage.chrisoft.org/blog/img/SD-80_front.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_front.jpg"></a> <br>Left half of the front panel. Buttons yellowed out, showing the module's age. Scratches and dents are visible. +</div> +</td> +<td> +<div style="text-align:center;max-width:98%;"> +<a href="//filestorage.chrisoft.org/blog/img/SD-80_back.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_back.jpg"></a> <br>Wow! Such Optical! Much MIDI! +</div> +</td> +</tr> +</tbody></table> +<h2 id="tocanch1" class="tvis">The configuration</h2> +<h3 id="tocanch2" class="tvis">Connection to the computer</h3> +<p>Without the audio interface portion, it's impossible to use the SD-80 with only a USB connection: you need something for it to connect to in order to make a recording.</p> +<p>To begin with, I wanted to get something that accepts S/PDIF input for the audio interface. But those kind of things are scarce today. The cloest model I could find in Chinese market was from an unknown vendor and comes with a very sketchy chip, whose official driver only supports up to Windows 7 32-bit. As a crappy digital interface may sound worse than a more decent analog one, I went for one of the cheapest audio interfaces availble: a Focusrite Scarlett Solo (which is more than 5 times the price of the weird digital interface and probably still better than the one comes with SD-90 as it supports up to 192 KHz sampling rate).</p> +<p>For a audio equipment novice, connecting things up wasn't that straightforward: I tried connecting the phone output on the SD-80 to the line in of the audio interface and it kind of works. There is just one <em>tiny</em> problem: the left and right channels got mixed up into one, and is only on the right channel in a stereo recording. At first I thought it was my cable. But after a couple minutes of researching, I found out that every input on an audio interface is actually mono. <strong>WHY</strong>? Guess I'll never know.</p> +<p>So I got another TRS to XLR connector. After connecting the left channel of output 1 on the SD-80 to the microphone input on the audio interface and the right channel to line level input, it produces stereo recordings as expected. The resulting audio is very unbalanced though, due to the microphone input being much more sensitive than the line level input. In order to balance them I played a sine wave on the SD-80 and adjust the input level of each channel so that while turning down the volume knob on the SD-80, the level indicators on all channels stop blinking at the same time.</p> +<p>The 'direct monitor' switch on Scarlett Solo enables live monitoring of the input without operating system intervention and therefore, without latency. However the direct monitor feature on Scarlett Solo is limited to mono only, so in order to get stereo monitoring, a round-trip through the computer is required.</p> +<h3 id="tocanch3" class="tvis">Settings things up in Linux</h3> +<p>If you are absolutely insane and using Gentoo Linux just like me, make sure you've already got working audio and have the following kernel configuration items enabled:</p> +<pre><code>Device Drivers ---> + <*> Sound card support + <*> Advanced Linux Sound Architecture ---> + [*] USB sound devices + <*> USB Audio/MIDI driver</code></pre> +<p>Both SD-80 and Scarlett Solo should then just work out of box (if you are using pulseaudio <a id="n1" href="#note1" class="note">[1]</a>).</p> +<p>At first I thought only the 'generic' USB mode of SD-80 is supported by this kernel module, however it turns out the 'vendor' USB mode works just fine as well. It also suffers a lot less stuttering.</p> +<p>The USB vendor ID and product ID is 0582:0029. Changing the USB mode to generic makes it 0582:002a.</p> +<p>In order to monitor the input, load the loopback module first:</p> +<pre><code>pactl load-module module-loopback latency_msec=1</code></pre> +<p>(<code>latency_msec</code> means exactly what the name suggests)</p> +<p>then move it to the audio input of the audio interface:</p> +<pre><code>pacmd move-source-output 7 alsa_input.usb-Focusrite_Scarlett_Solo_USB-00.analog-stereo</code></pre> +<p>where 7 is the index of the loopback followed by the name of the input of your audio interface. Usually you can use tab completion, however if you are still unsure, you may also use a GUI utility such as <code>pavucontrol</code>.</p> +<p>I haven't tried JACK yet. But using QjackCtl should make everything a breeze.</p> +<p>The editor for SD-80 works perfectly using wine.</p> +<h3 id="tocanch4" class="tvis">Setting things up in Windows</h3> +<p>Setting things up in Windows is somehow more tedious than it should be. Roland didn't bother releasing a driver for Windows 10, but a web search indicates the driver for Windows 8/8.1 works on Windows 10 with a minor tweak. As the device works with a generic driver on Linux even when the USB mode is set to 'vendor', it will probably work on Windows without the Roland driver too. Although I'd rather install the official driver for Windows 8/8.1 because there is one.</p> +<p>The tweak is simple. Open up <code>RDIF1023.INF</code> in a text editor, copy everything under section <code>[Roland.NTamd64.6.2]</code> to section <code>[Roland.NTamd64.7]</code> and you are good to go. Driver signature enforcement has to be disabled as stated in the quick start manual.</p> +<p>Settings up monitoring is as simple as clicking on a checkbox in the control panel or a button in your DAW. You just don't see one use the command prompt for this purpose on Windows.</p> +<h2 id="tocanch5" class="tvis">What does it sound like?</h2> +<p>Well, it sounds super 'ZUNish', if you've ever listened to Touhou music. It's definitely the best sounding module back in 2002 (barring those extendable modules such as XV-5080).</p> +<div style="text-align:center"> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/clouds_SD-80.ogg"> +</audio> +<p>SD-80's take on clouds.mid (an easter egg thing in Windows 95)</p> +</div> +<p>All instruments are from the 'solo' set. The trumpet is 'Tp.Dark vib', which is the famous 'Romantic Tp' with a significant lower filter cutoff. Everything else is the basic variant.</p> +<div style="text-align:center"> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/th06_02_SD-80.ogg"> +</audio> +<p>SD-80's take on th06_02.mid</p> +</div> +<p>In general the STUDIO Canvas sounds more expressive than most other tone generators, virtual or not. This is probably related to its default non-zero modulation level (10) on every part. <a id="n2" href="#note2" class="note">[2]</a> Technically this makes it GM2-incompatible as section 3.3.2 of the GM2 specification says the default value for modultion depth should be 0.</p> +<p>Also the STUDIO Canvas has a bunch of waveforms of instruments played with vibrato, which is absent on some expandable modules such as the XV-5080 <a id="n3" href="#note3" class="note">[3]</a>, making vibrato sounds much more natural than simulating with LFO modulating the pitch and other parameters.</p> +<h3 id="tocanch6" class="tvis">Relation to EDIROL HyperCanvas and the Cakewalk TTS-1</h3> +<p>There's a rumor saying HyperCanvas and TTS-1 is essentially the 'classical' set from the STUDIO Canvas. And I believed the rumor has been around for quite some time. Finally I can check it out myself.</p> +<div style="text-align:center"> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/SD-80.ogg"> +</audio> +<p>flourish.mid on SD-80 with every instrument from the 'classical' set and basic variant selected.</p> +</div> +<div style="text-align:center"> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/TTS-1.ogg"> +</audio> +<p>flourish.mid on Cakewalk TTS-1, everything also from bank 0.</p> +</div> +<p>The first impression is they do sound quite alike. But as soon as the drums kick in, you'll find out they actually sound different.</p> +<div> +<table style="position:relative;left:50%;transform:translate(-50%,0);"> +<tbody><tr style="text-align:center"> +<td> +</td> +<td> +SD-80 +</td> +<td> +TTS-1 +</td> +</tr> +<tr> +<td> +Piano +</td> +<td> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/Piano_SD-80.ogg"> +</audio> +</td> +<td> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/Piano_TTS-1.ogg"> +</audio> +</td> +</tr> +<tr> +<td> +Marimba +</td> +<td> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/Marimba_SD-80.ogg"> +</audio> +</td> +<td> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/Marimba_TTS-1.ogg"> +</audio> +</td> +</tr> +<tr> +<td> +Nylon Guitar +</td> +<td> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/Guitar_SD-80.ogg"> +</audio> +</td> +<td> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/Guitar_TTS-1.ogg"> +</audio> +</td> +</tr> +<tr> +<td> +Fingered Bass +</td> +<td> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/Bass_SD-80.ogg"> +</audio> +</td> +<td> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/Bass_TTS-1.ogg"> +</audio> +</td> +</tr> +<tr> +<td> +Soprano Sax +</td> +<td> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/Sax_SD-80.ogg"> +</audio> +</td> +<td> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/Sax_TTS-1.ogg"> +</audio> +</td> +</tr> +<tr> +<td> +Sweep Pad +</td> +<td> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/Sweep_SD-80.ogg"> +</audio> +</td> +<td> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/Sweep_TTS-1.ogg"> +</audio> +</td> +</tr> +<tr> +<td> +Drums +</td> +<td> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/Drums_SD-80.ogg"> +</audio> +</td> +<td> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/Drums_TTS-1.ogg"> +</audio> +</td> +</tr> +</tbody></table> +</div> +<p>It's quite obvious that the drums set of TTS-1 is actually taken from SC-88Pro (except Elec. Snare, which is taken from Electric Set). The piano sounds almost identical<a id="n4" href="#note4" class="note">[4]</a>. Sax, marimba and sweep pad also sounds identical. Bass seems to heve different velocity curves and guitar in TTS-1 sounds more bright.</p> +<p>Further more, if you have Super Quartet, which is also made by Edirol, you may find out they also share many similar sounds, namely 'Rockabilly', 'Jazz Bass', 'Rock Bass' and 'Acoustic Set', which correspond to 'Rockabilly', 'Jazz Bass', 'Fingered Bs2' and 'St.Standard'<a id="n5" href="#note5" class="note">[5]</a>.</p> +<p>These old Edirol software synthesizers might have a very different engine compared to the XV engine found in the STUDIO Canvasses considering the DSP power of PCs of that time period. So it's normal that the TTS-1 produces subtly different sound even when the same samples are used.</p> +<div> +<table style="position:relative;left:50%;transform:translate(-50%,0);"> +<tbody><tr> +<td style="text-align:center"> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/SCVA%2088Pro.ogg"> +</audio> +<br>bonus clip: flourish.mid on SOUND Canvas VA (SC-88Pro Map) +</td> +<td style="text-align:center"> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/Drums_SCVA.ogg"> +</audio> +<br>bonus clip: Drums from flourish.mid on SOUND Canvas VA (SC-88Pro Map) +</td> +</tr> +</tbody></table> +</div> +<p>SOUND Canvas VA doesn't simulate anything it claims to perfectly, but it's the best result someone who doesn't physically own a SC-88Pro can achieve I guess.</p> +<p>All audio files above were recorded using Cakewalk by Bandlab. <del>The Cubase Pro purchase was just for more instruments to be added to my HALion library.</del></p> +<p>Here are more bonus clips recorded using <code>arecord</code> on Linux.</p> +<div style="text-align:center"> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/th06_13_SD-80.ogg"> +</audio> +<p>th06_13.mid</p> +</div> +<div style="text-align:center"> +<audio controls="" src="//filestorage.chrisoft.org/blog/data/SD-80/th06_15_SD-80.ogg"> +</audio> +<p>th06_15.mid (I didn't bother adjusting fade in value for the vibrato LFO.)</p> +</div> +<p>And finally SD-80 in a mix, featuring two signature instruments ZUN used a lot in recent games ('Romantic Tp' and 'Reed Romance') and also 'St.Sm Choir'.</p> +<div style="text-align:center"> +<audio controls="" src="//filestorage.chrisoft.org/music/ogg/%E6%B7%B1%E6%B5%B7%E4%B8%83%E8%8A%B1%EF%BD%9EForgotten%20Benefit_extended_remix.ogg"> +</audio> +<p>深海七花~Forgotten Benefit_extended_remix<br> +(Theme of stage 6 boss of <a href="http://rgbxyz.org/th_kaikeidou/top.html">Touhou Kaikeidou</a>, arranged a bit. Originally by <a href="https://blogs.yahoo.co.jp/crystalwings6">Crystalwings</a>)</p> +</div> +<h2 id="tocanch7" class="tvis">Working with the SD-80</h2> +<h3 id="tocanch8" class="tvis">Fighting against latency</h3> +<p>Even though Scarlett Solo can achieve a very low latency, there's no way I can squeeze out enough processing power out of my ULV dual core i7 to handle it. Therefore I was forced to live with ~11 ms latency, which is not <em>that</em> high, but still a quite significant amount to deal with.</p> +<p>Cakewalk's glitchy latency compensation makes things even worse: it works in some projects but completely out of order for the others. In order to listen to a full mix, I have to make a short recording, which is really annoying. As this is much more expensive time-wise, I started using more guesswork before trying a full mix and it's probably not good.</p> +<h3 id="tocanch9" class="tvis">Recording</h3> +<p>Recording is simple and works as expected. However I seem to suffer from quite a high SNR value, which hovers around ~90 dB. Perhaps it's my crappy cables making me pay.</p> +<h3 id="tocanch10" class="tvis">Editing the sounds</h3> +<p>The best thing about SD-80 is its editability. Neither SD-90 nor SD-20 came with the same level of editability upon launch. <a id="n6" href="#note6" class="note">[6]</a></p> +<p>As claimed by the <a href="https://www.soundonsound.com/reviews/edirol-SD80">Sound On Sound review</a>, the editor for SD-80 is very similar to the one for XV-2020. The editor exposes a generic sample-based synthesis engine quite comparable to the one found in HALion (with more restrictions, of course). It lets you take full control of the synthesis engine and even create new patches not found anywhere else.</p> +<p>The synthesis engine consists of four layers (with up to two samples <a id="n7" href="#note7" class="note">[7]</a> for each layer, plus frequency modulation), four filters (one for each layer), eight envelope generators (amplitude EG and filter EG for each layer), two LFOs <a id="n8" href="#note8" class="note">[8]</a> and a 4*4 modulation matrix. There are also 90 post-processing effects (some of which are combinations of multiple simple effects, hence the name 'MFX') to choose from for each channel.</p> +<p>Restrictions aforementioned include inability to use external samples so you are essentially locked in to 589 built-in waveforms (which is probably fine because it's not what the STUDIO Canvas line is aimed at), limited number of envelope nodes, limited modulation routing, restricted number of different MFX's that can be used at the same time (3).</p> +<p>The editor has quite terrible user experience. Guess it's common for such decades-old software.</p> +<p>I've also tried editor software for other STUDIO Canvas modules using the same generation of XV engine. The SD-20 editor works seamlessly with SD-80, and it only offers basic parameters editing just like TTS-1. The SD-90 editor, despite being extremely similar to the SD-20 editor, doesn't work at all, which is not surprising as it's essentially the SD-20 editor plus an editor for the audio mixer and audio effects processor found in the SD-90, which the SD-80 lacks.</p> +<p>By the way, if you have hi-dpi display and use Windows 10, be sure to use 'System (Enhanced)' scaling behavior for the SD-80 Editor. It scales perfectly that way.</p> +<p>I'm not going to scatter the post with even more pictures, so please follow the links for selected screenshots of the editor:</p> +<p><a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_a.png">main screen</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_b.png">'part survey'</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_c.png">layers</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_e.png">amp EG</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_f.png">LFO</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_h.png">layers mapping</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_i.png">modulation matrix</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_k.png">patch options</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_l.png">'part all'</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_m.png">MFX editing</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_r.png">Rhythm layers editor</a> / <a href="//filestorage.chrisoft.org/blog/img/SD-80_editor_u.png">Rhythm amp EG</a></p> +<h3 id="tocanch11" class="tvis">Impact on the workflow</h3> +<p>First of all I've to record and thus, deal with latency, noise and clipping. It's pretty annoying as already mentioned above.</p> +<p>Also the SD-80 doesn't integrate very well with any DAW. There's no way your settings of this hardware synth get saved automatically with your project like a virtual synth. Also forget about automation and all sort of things. You have to use MIDI events and system exclusive messages (especially tuning some obsecure parameters) for this purpose, and DAW software doesn't have great support for system exclusive messages in general.</p> +<h2 id="tocanch12" class="tvis">Quirks</h2> +<p>The SD-80 is GM2 compatible. However many midi files you randomly find may not play on it even when the device is in GM2 mode. If the midi file being played has any sort of bank selection event not recognized by the SD-80, the corresponding part will produce no sound at all.</p> +<p>If your midi file has NRPN messages, things will get even worse. These things are essentially undocumented for the SD-80. All I could say is good luck keeping your eardrum intact. <a id="n9" href="#note9" class="note">[9]</a></p> +<p>The manual says 'This set ("classical" set) is also used when GM2 data compatibility is important'. However upon receiving the GM2 on message, the module automatically selects 'contemporary' set for every part. It seems impossible to change this behavior.</p> +<p>The XG Lite mode has way more instruments available than what the manual has listed. Bank 18 patch 1 gives you 'Piano 1d' (persumably 'Mellow Grand Piano' in XG specification), which is not listed in the manual. It actually has ~480 normal patches, ~50 sfx patches, 2 sfx kits and 9 drum kits <a id="n10" href="#note10" class="note">[10]</a>. It's quite irony to find out that they have more patches for their competitor's standard than their own legacy standard.</p> +<p>MIDI timing messes up if events flood in within a demisemiquaver worth of time. This quirk resembles the problem QMidiPlayer for Windows suffered from in its early days. But I'm pretty sure the cause is completely different. <a id="n11" href="#note11" class="note">[11]</a> Also this could be a common issue of old MIDI devices, as my old YAMAHA keyboards does the exact same thing.</p> +<p>The sound generated by the SD-80/90 is phasey as could be heard in ZUN's early works. If unsure, take a look at the spectrogram.</p> +<p>The module, as all electric appliances do, generates heat. The manual says "A small amount of heat will radiate from the unit during normal operation", and the chassis do get quite warm even when it is completely idle. This didn't become an issue until later.</p> +<p>Finally there're a couple of quirks in Roland's former partner Cakewalk. Whenever the input signal level exceeds 0dB, instead of clipping the audio, it produces a loud cracking or popping sound in the record. Cubase and arecord have no such problem.</p> +<p>Another quirk with Cakewalk is its metronome. Metronome settings in Cakewalk is saved on a per-project basis and there's no way to change the default value (unless creating a template, which is useless for existing projects). By default it sends the metronome to the default MIDI device, which result in records with metronome clicks in them.</p> +<h2 id="tocanch13" class="tvis">Beneath the chassis</h2> +<p>Although I cherish the module quite a lot and there are warning text on top of it (which I can't read because it's in Japanese and ... well, English), I disassembled the unit.</p> +<div style="text-align:center;max-width:90%;"> +<a href="//filestorage.chrisoft.org/blog/img/SD-80_caution.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_caution.jpg"></a> <br>CAUTION!! 注意!! ATTENTION!! (/a.tɑ̃.sjɔ̃/) +</div> +<p>As most other vendors does, Roland build their audio equipment 'like a tank'. The entire chassis is made out of aluminium and steel, and has an absolutely crazy amount of screws on it. The front panel came off after taking out 5 screws on top and bottom, after which I took out the value knob and the rubber button sheet for a cleanup.</p> +<p>The top cover was freed after taking out 11 screws. Under the top cover lies the guts of SD-80. All boards except the power supply board uses SMD components extensively. The main board is made exclusively using SMD components, which is probably quite impressive back in the early 2000s.</p> +<p>The power supply module is surrounded with thick plastic sheet persumably for insulation. Rated voltage for the module seems to be changable by using different pin layouts on the input side. The power supply module is made of two separate boards. The two boards are conncted with two wide connectors that only have a few pins on them. I would guess the pin layout on the connectos sets the rated voltage of the module but I'm not sure. I would definitely test that out someday.</p> +<p>I took note of the engravment of every chip on the main board, which could be found below.</p> +<table> +<tbody><tr> +<td> +<a href="//filestorage.chrisoft.org/blog/img/SD-80_buttonpanel.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_buttonpanel.jpg"></a> +</td> +<td> +<a href="//filestorage.chrisoft.org/blog/img/SD-80_sanscover.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_sanscover.jpg"></a> +</td> +</tr> +<tr> +<td> +<a href="//filestorage.chrisoft.org/blog/img/SD-80_PS_a.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_PS_a.jpg"></a> +</td> +<td> +<a href="//filestorage.chrisoft.org/blog/img/SD-80_PS_b.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_PS_b.jpg"></a> +</td> +</tr> +<tr> +<td> +<a href="//filestorage.chrisoft.org/blog/img/SD-80_mb_top.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_mb_top.jpg"></a> +</td> +<td> +<a href="//filestorage.chrisoft.org/blog/img/SD-80_mb_bottom.jpg"><img style="width: 50%;" src="//filestorage.chrisoft.org/blog/img/ssbsthumb_1536x1536_SD-80_mb_bottom.jpg"></a> +</td></tr> +</tbody></table> +<h2 id="tocanch14" class="tvis">What the manual doesn't tell</h2> +<p>A very sensible thing to do after the disassembly is to search the engravment on the chips online. Searching 'RA08-503' found on the largest Roland-labled chips <a id="n12" href="#note12" class="note">[12]</a> brings up a whole new world to me: service manuals for Roland synths. Sadly there are no manuals for any STUDIO Canvas models, nevertheless, they are very useful for learning more about the insides of a Roland synthesizer.</p> +<p>There are a couple of models bearing the 'RA08-503' chip found in the SD-80. Examples include XV-5080 and MC-909. This chip is referred to as 'XV' in their service manuals (also in the SD-80, as you will find out later). It's safe to guess they handle the most important work of a sound module -- tone generation. Also I observed that all modules supporting 32 parts and 128 polyphony have two of these chips in them, while the ones with only one chip only supports up to 16 parts and 64 polyphony. Maybe that's the limitation of the single chip. Also one can tell the chip also handles some weird job such as LED indicators from the circuit board schematic.</p> +<p>A very lonely chip on the right side has '6417706' on it. Turns out this is a microprocessor implementing the SuperH architecture. It's the same CPU as found in MC-909 (which makes sense as they are produced around the same time). Linux kernel has support for this processor<a id="n13" href="#note13" class="note">[13]</a>. The processor has a maximum clock speed of 133 MHz and is underclocked to 128MHz in the MC-909. It's probably underclocked even more in the SD-80. There's an unpopulated D-sub connector persumably for debugging near the CPU.</p> +<h3 id="tocanch15" class="tvis">Testing mode</h3> +<p>According to the service manuals available for other models, they all have a hidden test mode. Some also have the ability to update system firmware. Entering testing mode often involves turning the power on with a combination of keys pressed. Every model have its own way to enter testing mode and there's no obvious pattern. At that point, I was desprate to dive into it. So I simply tried all button combinations consisting of one to three buttons. The result didn't let me down. I found three combinations that make the SD-80 boot into special modes.</p> +<ul> +<li>INST + SHIFT + PART▶ = Test Mode</li> +<li>INST + PAGE◀ + PREVIEW = Program Updater</li> +<li>SYSTEM + PAGE◀ + PREVIEW = Program Updater</li> +</ul> +<p>Below is everything I found about these modes.</p> +<div class="collapse" caption="Special boot modes in the SD-80"> +<p><strong>Test Mode</strong></p> +<pre><code>00 Version Check +1.03 0022 2002/07/29</code></pre> +<p>(Preview blinks, pressing it doesn't seem to do anything)</p> +<pre><code>01 Device Check + ALL OK!!</code></pre> +<p>(I got <code>NG:XV2</code> shortly after heavily using the module for a while. MFX in test 7 produces no sound at all, system delay only has the dry sound, everything else was normal. More on this later.)</p> +<pre><code>02 MIDI Check +MID1:x MID2:x THRU:x</code></pre> +<p>(No MIDI cable for me until I'm home... Input from USB does not count.)</p> +<pre><code>03 LCD Check +PAGE:Sel / ENC: Contr</code></pre> +<p>(PAGE buttons switch among the following four patterns: none, full, chequerboard 0, reversed chequerboard. Contr=Contrast)</p> +<pre><code>04 SW/LED Check + ooooo ooooo</code></pre> +<p>(All buttons and indicators light up. Transparent buttons turns off its light, opaque buttons turns off LED above or below it, ENTER button turns off nothing. The five <code>o</code>'s on the left corresponds to the upper row, others corresponds to the lower row. Pressing a button turns its character to <code>#</code>, releasing it causes it to change to <code>.</code>.)</p> +<pre><code>05 Encoder Check + Value(0-23) = xx</code></pre> +<p>(+ Plays C3, - Plays E3, both using the piano voice. Value starts at 00. Interestingly if the encoder is turned too fast, the value on screen does not change until you stop.)</p> +<pre><code>06 Sound Check +Push button to check + Left channel + Center channel + Right channel</code></pre> +<p>(INST/EFFECTS/SYSTEM blink, pushing one makes it constantly on while others still blinking and plays the corresponding check. Plays sine wave on the selected channel(s))</p> +<pre><code>07 Effect Check +Push button to check + MFX(Delay) + System Delay + System Reverb</code></pre> +<p>(Same as test 06. The sounds used for these checks are snare, castanets and side stick respectively.)</p> +<pre><code>08 Factory Reset + Push [PREVIEW]</code></pre> +<p>(PREVIEW blinks, pressing it really resets!)</p> +<p>The SD-80 still works as a sound module in test mode -- it will play any incoming midi stream. The module is in native mode regardless of your settings. MFX doesn't seem to be working normally (likely due to it's reserved for test 07). Switching between tests resets some (if not all, depending on the test switing to) of the synthesizer's states. Switching to test 05 sets some of the instrumental parts to piano and others to a certain synth lead patch. Switching to test 06 sets sine wave and piano on all instrumental parts just like test 05. Switching to test 07 sets certain instrument parts to a drum patch, the patch 'Xtremities' could also be heard. Other parts are set to piano.</p> +<p><strong>Program Updater</strong></p> +<pre><code>Program Updater +Version: 1.03</code></pre> +<pre><code>Program Updater +Prog:12D3[12D3]1.03</code></pre> +<pre><code>Program Updater +Updt:66FB[66FB]1.00</code></pre> +<pre><code>Program Updater +Boot:5170[5170]1.01</code></pre> +<pre><code>Update by MIDI +[ENTER][SHIFT(Exit)]</code></pre> +<pre><code>Update by USB +[ENTER][SHIFT(Exit)]</code></pre> +<ul> +<li>INST = Program version (INST lights up)</li> +<li>EFFECTS = Updater version (EFFECTS lights up)</li> +<li>SYSTEM = Boot version (SYSTEM lights up)</li> +<li>SHIFT = Returns to initial screen of the updater</li> +<li>PART◀ = Update by MIDI</li> +<li>PART▶ = Update by USB</li> +</ul> +<p>MIDI and USB indicators blink on any screen with the top row saying <code>Program Updater</code>. Selecting a source makes the corresponding indicator constantly lit and the other go out.</p> +<p>If this mode is entered with the combination SYSTEM + PAGE◀ + PREVIEW, INST, EFFECTS, SYSTEM will do nothing instead. This combination is probably reserved for consumers.</p> +<p>Sound generation does not work in the program updater.</p> +<p>Persumably the update MIDI files are similar to earlier models: stream of system exclusive events containing firmware blobs. No program update could be found for the SD-80 on the Internet.</p> +</div> +<h3 id="tocanch16" class="tvis">Messing around sans the chassis</h3> +<p>As the two XV chips are arranged in a master-slave manner, I tried figuring out which one is acting as the master. I threw a bunch of midi files at it while measuring the temprature of the XV chips... with my fingers. Both chips turn quite toasty but IC19 is always warmer than IC27, sometimes it's even a little difficult to keep my finger stay on that chip.</p> +<p>When the action gets more intense, IC27 starts to warm up. Before I was just going to conclude that IC27 is acting as the master, I realized that I will never come into a meaningful conclusion without further reverse engineering: I have absolutely no idea how the load is distributed between the two XV's!</p> +<p>Frustrated, I entered testing mode to find out whether there's anything interesting if it's run with chassis removed. To my surprise, the device check failed with <code>NG:XV2</code> and a bunch of other errors in the following tests. I thought I was doomed, but a reboot of the module solved the problem completely and it never show any trace of abnormality that day.</p> +<p>The other day, however, the problem returned. After messing with the SD-80 editor and creating random complex patches for an hour, I randomly decided to check out the testing mode again, where I was greeted by the <code>NG:XV2</code> failure the second time. Again, a reboot solved the problem for the day. No amount of hardwork will put the SD-80 into a buggy state if it boot straight into normal mode. At this point I thought it could be a bug in the test or the device check could be quite sensitive to temprature, which is probably not a very good thing as there're ninno vent holes for airflow on the module whatsoever.</p> +<h3 id="tocanch17" class="tvis">Chart A</h3> +<div class="collapse" caption="Comparison of internal components found in selected Roland devices"> +<p><a id="n14" href="#note14" class="note">[14]</a></p> +<table> +<colgroup> +<col width="6%"> +<col width="16%"> +<col width="4%"> +<col width="31%"> +<col width="12%"> +<col width="28%"> +</colgroup> +<thead> +<tr class="header"> +<th align="center">Model</th> +<th align="center">Tone Generator</th> +<th align="center">CPU</th> +<th>Storage</th> +<th align="center"># of parts</th> +<th align="center"># of polyphony ('voices')</th> +</tr> +</thead> +<tbody> +<tr class="odd"> +<td align="center">SC-55</td> +<td align="center">TC24SC201AF-002 (PCM Custom)</td> +<td align="center"><a href="https://en.wikipedia.org/wiki/H8_Family">H8/532</a></td> +<td>256K SRAM*2, Wave ROM*3, EPROM, CPU has RAM and ROM built-in</td> +<td align="center">16</td> +<td align="center">24</td> +</tr> +<tr class="even"> +<td align="center">SC-88</td> +<td align="center">MBCS30109 (Custom Sound Generator) 'XP'</td> +<td align="center"><a href="https://en.wikipedia.org/wiki/H8_Family">H8/510</a></td> +<td>EPROM/Mask ROM, SRAM*2, Wave ROM*4, DRAM*2</td> +<td align="center">32</td> +<td align="center">64</td> +</tr> +<tr class="odd"> +<td align="center">SC-88Pro</td> +<td align="center">RA01-005 (Custom Sound Generator) 'XP3'</td> +<td align="center"><a href="https://en.wikipedia.org/wiki/H8_Family">H8/510</a></td> +<td>EPROM, SRAM*2, Wave ROM*5, DRAM*3</td> +<td align="center">32</td> +<td align="center">64</td> +</tr> +<tr class="even"> +<td align="center">SC-8850</td> +<td align="center">2*RA09-002 (Custom) 'XP6'</td> +<td align="center"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7010/sh7014.html">SH7017</a></td> +<td>64KB System ROM, 8M System Flash, 256K SRAM (USB controller), 2*4M DRAM (EFX effects + System), 16M Data ROM or Flash, 2*128Mbit Wave ROM, 2*4M DRAM (XP effects), 256k SRAM (framebuffer)</td> +<td align="center">64</td> +<td align="center">128</td> +</tr> +<tr class="odd"> +<td align="center">SC-8820</td> +<td align="center">RA09-002 (Custom) 'XP6'</td> +<td align="center"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7010/sh7014.html">SH7017</a></td> +<td>64KB System ROM, 256K SRAM (USB controller), 16M Data ROM or Flash, 2*4M DRAM (EFX effects + System), 128Mbit+164Mbit Wave Rom, 4M DRAM (XP effects)</td> +<td align="center">32</td> +<td align="center">64</td> +</tr> +<tr class="even"> +<td align="center">JV-1080</td> +<td align="center">MBCS30109B (XP Chip) 'XP'</td> +<td align="center"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7030/sh7032.html">SH7034</a></td> +<td>CPU has 64KB Program Flash + 4KB SRAM built-in, 512kbit SRAM, 1Mbit DRAM, 8Mbit Data ROM, 2*1M DRAM (XP effects), 4*Wave ROM</td> +<td align="center">16</td> +<td align="center">64</td> +</tr> +<tr class="odd"> +<td align="center">JV-2080</td> +<td align="center">TC170C200AF-005 (TG) 'XP'</td> +<td align="center"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7030/sh7032.html">SH7034</a></td> +<td>CPU has 64KB Program Flash + 4KB SRAM built-in, 2*DRAM, DRAM (XP effects), DRAM (LCD framebuffer), DRAM, SRAM, ROM or Flash</td> +<td align="center">16</td> +<td align="center">64</td> +</tr> +<tr class="even"> +<td align="center">XV-5080</td> +<td align="center">2*TC223C660CF-503 (RA08-503) 'XV'</td> +<td align="center"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7040/sh7040.html">SH7042</a></td> +<td>2*1Mbit SRAM, 256kbit (LCD framebuffer), 2*16Mbit (DRAM), 16Mbit Flash, 2*16Mbit DRAM (XV effects), 2*128Mbit Wave ROM</td> +<td align="center">32</td> +<td align="center">128</td> +</tr> +<tr class="odd"> +<td align="center">XV-5050</td> +<td align="center">TC223C660CF-503 (RA08-503) 'XV'</td> +<td align="center"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7010/sh7014.html">SH7016</a></td> +<td>8Kbit EEPROM, 32Mbit Flash, 16Mbit DRAM, 16Mbit DRAM (XV effects), 2*128Mbit Wave ROM</td> +<td align="center">16</td> +<td align="center">64</td> +</tr> +<tr class="even"> +<td align="center">MC-909</td> +<td align="center">TC223C660CF-503 (RA08-503) 'XV'</td> +<td align="center"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7700/sh7706.html">SH7706</a> @ 128MHz</td> +<td>2*64Mbit SDRAM (system), 16Mbit Flash (program), 256Mbit Flash (program, user), 16Mbit DRAM (external effects RAM), 4Mbit DRAM (XV effects), 2*64Mbit Wave SDRAM, 128Mbit Wave ROM</td> +<td align="center">16</td> +<td align="center">64</td> +</tr> +<tr class="odd"> +<td align="center">SD-80</td> +<td align="center">2*TC223C660CF-503 (RA08-503) 'XV'</td> +<td align="center"><a href="https://www.renesas.com/us/en/products/microcontrollers-microprocessors/superh/sh7700/sh7706.html">SH7706</a></td> +<td>16Mbit Flash, 2*16Mbit SDRAM, 2*16Mbit EDO DRAM, 2*Wave ROM</td> +<td align="center">32</td> +<td align="center">128</td> +</tr> +</tbody> +</table> +</div> +<h3 id="tocanch18" class="tvis">Chart B</h3> +<div class="collapse" caption="List of integrated circuit chips on SD-80 main board"> +<p>Follow the link in the first column for a board photo with that chip visible. Sorry for the shaky photo and poor depth of field.</p> +<table> +<tbody><tr> +<th> +Label +</th> +<th> +Engravment +</th> +<th> +Remark +</th> +</tr> +<tr> +<td> +IC 1 +</td> +<td> +62292 361 +</td> +<td> +(8-pin) Unknown +</td> +</tr> +<tr> +<td> +<a href="SD-80_IC2.jpg">IC 2</a> +</td> +<td> +6417706 SH3 BC13008 133 0413 +</td> +<td> +176-pin QFP, SH7706 CPU +</td> +</tr> +<tr> +<td> +<a href="SD-80_IC3.jpg">IC 3</a> +</td> +<td> +LH28F 160BJE-BTL80 SHARP JAPAN 0428 7xN +</td> +<td> +Flash Memory (16Mbit) +</td> +</tr> +<tr> +<td> +<a href="SD-80_IC4.jpg">IC 4, 6</a> +</td> +<td> +SANYO LC381616IET-70 KZA7G0CD1 0042 +</td> +<td> +SDRAM (16Mbit) +</td> +</tr> +<tr> +<td> +<a href="SD-80_IC2.jpg">IC 5</a> +</td> +<td> +'H5' or '115' (illegible) +</td> +<td> +(5-pin) Unknown +</td> +</tr> +<tr> +<td> +IC 7 +</td> +<td> +4D46 LV 00A +</td> +<td> +NAND Gate +</td> +</tr> +<tr> +<td> +IC <a href="SD-80_IC2.jpg">8</a>, <a href="SD-80_IC27.jpg">20, 22~25</a> +</td> +<td> +4C1Y LV 245A +</td> +<td> +Bus Transceiver +</td> +</tr> +<tr> +<td> +IC 9, <a href="SD-80_IC27.jpg">11</a> +</td> +<td> +F P42AB VT245A +</td> +<td> +8-bit Transceiver +</td> +</tr> +<tr> +<td> +<a href="SD-80_IC27.jpg">IC 10, 12</a> +</td> +<td> +0431H LVXC3245 +</td> +<td> +Configurable 8-bit Transceiver +</td> +</tr> +<tr> +<td> +IC 13 +</td> +<td> +VHC T139A 4 23 +</td> +<td> +Dual 2/4 Decoder +</td> +</tr> +<tr> +<td> +IC 14 +</td> +<td> +'H12' or 'H2' (illegible) +</td> +<td> +(5-pin) Unknown +</td> +</tr> +<tr> +<td> +<a href="SD-80_datecode.jpg">IC 15</a> +</td> +<td> +4D36 LV 04A +</td> +<td> +Hex Inverter +</td> +</tr> +<tr> +<td> +<a href="SD-80_audio.jpg">IC 16</a> +</td> +<td> +4D16 LV 14A +</td> +<td> +Hex Schmitt-Trigger Inverter +</td> +</tr> +<tr> +<td> +<a href="SD-80_IC17.jpg">IC 17</a> +</td> +<td> +Roland R02902867 137 352B100 +</td> +<td> +I/O Processor? USB controller? +</td> +</tr> +<tr> +<td> +IC 18 +</td> +<td> +VH3 139 4 24 +</td> +<td> +Dual 2/4 Decoder +</td> +</tr> +<tr> +<td> +IC <a href="SD-80_IC19.jpg">19</a>, <a href="SD-80_IC27.jpg">27</a> +</td> +<td> +Roland R01455956 RA08-503 JAPAN 0330EAI F0032ZAC +</td> +<td> +Voice Generator + LED & LCD Controller etc. ('XV') +</td> +</tr> +<tr> +<td> +IC 21 +</td> +<td> +7WU04 4.F +</td> +<td> +Inverter (CMOS) +</td> +</tr> +<tr> +<td> +IC <a href="SD-80_IC26.jpg">26</a>, <a href="SD-80_IC29.jpg">30</a> +</td> +<td> +HYUNDAI GM71C18163CJ6 0040 AG1 KOREA +</td> +<td> +EDO DRAM (16Mbit) +</td> +</tr> +<tr> +<td> +<a href="SD-80_IC28.jpg">IC 28</a> +</td> +<td> +Roland R02678601 23C128L-529J 0224E7007 +</td> +<td> +Wave ROM? +</td> +</tr> +<tr> +<td> +<a href="SD-80_IC29.jpg">IC 29</a> +</td> +<td> +Roland R02678612 23C128L-535K 0222E7005 +</td> +<td> +Wave ROM? +</td> +</tr> +<tr> +<td> +IC <a href="SD-80_audio.jpg">31</a>, 35 +</td> +<td> +4570 431 +</td> +<td> +Regulator +</td> +</tr> +<tr> +<td> +<a href="SD-80_audio.jpg">IC 32, 34</a> +</td> +<td> +PCM1716E 27ZDHFM +</td> +<td> +DAC +</td> +</tr> +<tr> +<td> +<a href="SD-80_audio.jpg">IC 33</a> +</td> +<td> +04 16H TC9271FS +</td> +<td> +Digital Audio Modulator/Transmitter +</td> +</tr> +<tr> +<td> +IC 36 +</td> +<td> +A E +</td> +<td> +(3-pin) Unknown +</td> +</tr> +</tbody></table> +</div> +<h2 id="tocanch19" class="tvis">Things to do besides imitating ZUN</h2> +<p>The SD-80 does not like QMidiPlayer very much. So the first thing to do is quite clear.</p> +<p>Giving it a total makeup is the second thing on my bucket list. I'll probably ditch the original top cover and front panel altogether and make some custom acrylic glass parts for it.</p> +<p>Porting Linux to it might be a very fun (also atrocious) thing to do. The internals of the SD-80 is capable of doing much more than what it does as a STUDIO Canvas. It's got the same main processor as the MC-909, just think about the possibility out there (this is also the reason why I call it a 'trapped beast' in the title of this post). The only thing against this is that I am shy of any experience with this level of hardware hacking.</p> +<p>Setting up a web service where people upload their midi files and have them rendered with the SD-80 also sounds pretty cool. But I'm afraid I'll receive something from Roland by then and it wouldn't be fine for me. Is it really illegal to use a instrument on a time-sharing basis?</p> +<p>Seriously though if I could pull it off, I'll probably add a donation button and buy more classic sound modules for the site. Eventually it will turn into an online museum for sound modules... screw it I'm talking utter nonsense again.</p> +<p>Also somehow extracting the waveforms and creating a instrument bank for HALion or Kontact is tempting. But the odds of being sued by Roland is even higher even though they did not explicitly disallow sampling their early products. To be honest I found it disturbing about the sampling restriction on these 'unconventional' instruments.</p> +<h2 id="tocanch20" class="tvis">Newer Roland sound modules?</h2> +<p>Newer Roland sound modules such as SonicCell and the latest INTEGRA-7 seems to maintain the compatibility with their original 'XP' synthesis engine to some extent -- as they all support SRX expansion in a certain way. The synthesis engines are obviously improving over the years as Roland says the SRX expansion sounds built into INTEGRA-7 will sound a little different compared to earlier modules.</p> +<p>However, disappointment strikes as soon as I saw the 'READ' button on screenshots of the editor software for the INTEGRA-7. I felt Roland really need to make more use of the USB bandwidth: the presence of that button implies the editor software still can't reflect the realtime status of the synthesizer. <a id="n15" href="#note15" class="note">[15]</a> This is a huge drawback of using a hardware synthesizer that Roland still fails to fix to this day.</p> +<h2 id="tocanch21" class="tvis">If you want to learn more ...</h2> +<ul> +<li><a href="http://www.gigadenza.co.uk/?page_id=5116&all=1">Gigadenza</a>, owns multiple sound modules, including the latest INTEGRA-7.</li> +<li><a href="https://twitter.com/Romantique_Tp">Romantique Tp</a>, a Touhou music addict that I came across on Steinberg user forum.</li> +</ul> +If you spot a mistake or have anything you wish to share on this topic, please do not hesitate to drop me a message. +</article> +</div><br><hr> + <div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: Pulseaudio sucks a lot less compared to the old days, it even switch automatically between built in Intel HD Audio and external USB audio device when it's plugged in / unplugged.<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: SD-90 doesn't seem to have a non-zero modulation level according to its manual. Interesting.<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: You can find the waveform list of SD-90/80 and XV-5080 online and do the comparison yourself.<br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: 'Piano 1 st.' in TTS-1 is actually 'St.Piano 1' from STUDIO Canvas' 'solo' set. TTS-1 doesn't have a 'key scale panning' (this is XG terminology, which means 'wide' in Roland's wordbook) piano preset.<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: The drum set mapping of Super Quartet is not GM compatible. It comes with a couple of sounds the STUDIO Canvas lacks.<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: The SD-90 do have <em>almost</em> the same level of editability as the SD-80, which can be achived with the use of an updated version of SD-80's editor, however it seems that SD-90 can't save user patches. The SD-20, on the other hand, never enjoy the same level of editability. (The SD-20 is probably still editable by sending system exclusive messages directly?)<br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: One on each stereo channel.<br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: Vibrato uses a seprate LFO, so technically it's three.<br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: NRPN message setting expression to 100% on one device may set filter resonance to 100% on another. Imagine that.<br></span><span class="TText"><a id="note10" href="#n10">[10]</a>: I counted the instruments by turning the knob. The knob sometimes skips forward and backward, so there's no way I count them accurately in a rush. I will probably make a complete patch list another day. <br></span><span class="TText"><a id="note11" href="#n11">[11]</a>: The problem found in QMidiPlayer can be solved by simply lowering buffer size. <br></span><span class="TText"><a id="note12" href="#n12">[12]</a>: In case you haven't yet noticed, there are two of those chips on the board.<br></span><span class="TText"><a id="note13" href="#n13">[13]</a>: <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/sh/kernel/cpu/sh3/clock-sh7706.c" class="uri">https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/sh/kernel/cpu/sh3/clock-sh7706.c</a> <br></span><span class="TText"><a id="note14" href="#n14">[14]</a>: Data for all models except the SD-80 are from their service notes.<br></span><span class="TText"><a id="note15" href="#n15">[15]</a>: I did not do much research on this and I could be completely wrong on this topic.<br></span></div> + <div id="insanch" style="height:3em;"></div> + <div id="footer" style=""> + <div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div> + <div style="text-align:center;" class="TText"> + Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5 + <br> + Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span> + </div> + </div> + <div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;"> + </div> + </div> + <div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;"> + <div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);"> + <div id="keyhint" style="margin-bottom:8px;"></div> + <div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div> + <div style="height:2.25em;"> + <button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button> + <button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button> + </div> + + </div> + + +</div></body></html>
\ No newline at end of file |