<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TAKABO SOFT</title>
	<atom:link href="http://takabosoft.com/feed" rel="self" type="application/rss+xml" />
	<link>http://takabosoft.com</link>
	<description>ドット絵エディタ「EDGE2」、MIDI音楽編集ソフト「Domino」、楽曲などを配布している個人サイトです。</description>
	<lastBuildDate>Wed, 04 Apr 2012 14:30:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>椎名へきるさんの「風が吹く丘」を耳コピして初音ミクさんに歌わせてみた</title>
		<link>http://takabosoft.com/20120404143001.html</link>
		<comments>http://takabosoft.com/20120404143001.html#comments</comments>
		<pubDate>Wed, 04 Apr 2012 14:30:01 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[お知らせ]]></category>
		<category><![CDATA[日記]]></category>
		<category><![CDATA[音楽・楽曲]]></category>

		<guid isPermaLink="false">http://takabosoft.com/?p=1223</guid>
		<description><![CDATA[ようやく完成しました。
椎名へきるさんの「風が吹く丘」を耳コピして初音ミクさんに歌ってもらいました。
まずはお聞きくださいませ。
【ニコニコ動画】【初音ミク】 風が吹く丘 ／ 椎名へきる 【耳コピ】
イラストは雨音くるみ [...]]]></description>
			<content:encoded><![CDATA[<p>ようやく完成しました。<br />
椎名へきるさんの「風が吹く丘」を耳コピして初音ミクさんに歌ってもらいました。<br />
まずはお聞きくださいませ。</p>
<p><iframe width="312" height="176" src="http://ext.nicovideo.jp/thumb/sm17458800" scrolling="no" style="border:solid 1px #CCC;" frameborder="0"><a href="http://www.nicovideo.jp/watch/sm17458800">【ニコニコ動画】【初音ミク】 風が吹く丘 ／ 椎名へきる 【耳コピ】</a></iframe></p>
<p>イラストは雨音くるみ様のものをお借りいたしました。<br />
動画は<a href="blockworks.jp/">Blockworks</a>さんに制作していただきました。<br />
ありがとうございました。</p>
<p>原曲はこちらになります。<br />
<a href="http://www.youtube.com/watch?v=AENQWpThpGg">http://www.youtube.com/watch?v=AENQWpThpGg</a></p>
<p>ちなみに、この曲を打ち込むのは人生で二度目です。<br />
たしか高1ぐらいの時にSC-88Proで耳コピしています。<br />
当時のデータをニコニコへアップしてくださっている方がいらっしゃいますので、ご紹介します。<br />
<a href="http://www.nicovideo.jp/watch/sm5568537">http://www.nicovideo.jp/watch/sm5568537</a></p>
<p>「風が吹く丘」はへきるさんの曲の中でも一番好きな曲で、15年ぐらい経った今でも、落ち込んだ時などにはこの曲を聞いて癒されております。</p>
<p>以下、大して面白くもない制作苦労話が延々と続きます。<br />
<span id="more-1223"></span></p>
<h4>はじめに</h4>
<p>２月の終わり頃、</p>
<ul>
<li>Cubase6 (DAW) </li>
<li>CUBASE6 実践音楽制作ガイド（書籍）</li>
<li>ELECTRI6ITY （ギター音源）</li>
<li>Superior Drummer 2.0 （生ドラム音源）</li>
<li>初音ミクアペンド</li>
</ul>
<p>を購入しました。</p>
<p>Cubaseは中田ヤスタカさんが絶賛されていた頃からずっと気になっていたのですが、なかなか高価で手が出せずにいたところに、いろいろと欲求不満が溜まりまして思い切って買っちゃいました（＾o＾；<br />
初音ミクも随分前に買ったものの結局１曲も打ち込んでおらず棚にしまいっぱなしでした。</p>
<p>ギター音源が使えてミクさんに歌ってもらえる曲を何か作りたいなと考えていた所、「『風が吹く丘』をもう一回作ろう！」となりました。<br />
SC-88Proの頃と比べてDAWやソフトウェアシンセはかなり進化しているはずなので、どのぐらいパワーアップしたか勉強と腕試しも兼ねてワクワクしながら作り始めました。</p>
<p>Cubase6（すぐに6.5へアップデートしました）の動作環境はWindows7とあったのですが、Vistaでも動くという記事をちらほら見かけたのでVistaに入れて動かしました。一応問題なく動いているように見えます。</p>
<p>ただ、適当にHALion Sonic SE（マルチ音源）やSuperior Drummer 2.0などを立ち上げて遊んでいた所、ランタイムエラーが発生して落ちる（しかも５秒後ぐらいにブルースクリーンになるというおまけ付き）という現象が起きました。ネットで検索すると32bitOSでは1アプリにつき2GBまでしかメモリを利用できないため、メモリ不足に陥り、ランタイムエラーで落ちてしまうようです。Superior Drummer 2.0もELECTRI6ITYも1GB近くメモリを消費するので、困りましたorz</p>
<p>64bitOSの新マシンを買うことも考えましたがたが、ひとまず工夫して頑張ってみることにしました。</p>
<h4>ギター・ボーカル以外のオケの打ち込み</h4>
<p>付属のマルチ音源HALion Sonic SEでシンセやピアノ、ベースなどを打ち込みます。<br />
ドラムはGroove Agent ONEへFLStudioの素材を突っ込んで使用しました。<br />
（ベロシティによる鳴らし別けはできるようなのですが、レイヤが組めないみたいでFLStudioのFPCに比べてちょっと使いづらいですねこれ。）</p>
<h4>ギターの打ち込み</h4>
<p>いよいよELECTRI6ITYの登場です。先に書いたとおりこいつはメモリをバカみたいに食うのでオケをWAVEで書き出し、別プロジェクトにしてギタートラックを作成するようにしました。</p>
<p>ELECTRI6ITYのデモ動画とかを見ると結構凄いのですが、最初のうちは使い方がさっぱり解りませんでした。解説したサイトもさっぱり見かけませんし。クリプトンさんが付けてくれた日本語ガイドを読んでも専門用語ばかりで意味不明状態。仕方なく会社でギターを弾ける後輩をつかまえてあれこれ聞き出し、ようやく何となく用語が判るようになってきました。</p>
<p>それから試行錯誤しまして、DAWで扱う場合のおおまかな使い方は以下のような感じになると思います（実際は英語表記です）。</p>
<ul>
<li>[設定]-[キャリブレーション]で[コード検知モード]をSequencerにする（オフにすると何故か和音が出ない事がある）。</li>
<li>[設定]-[キャリブレーション]で[コード検知タイム]を1msにする。まあマニュアルにある通り25msのままにして、MIDIタイミングを-25msにするというのでも良いと思いますが、私の場合はWAVE書き出しした後、そのWAVEの再生タイミングを-1msに設定しました。</li>
<li>[設定]-[ビブラート]で[コントロールモード]をCCにする。</li>
<li>これでCC28で強さ、CC29で速度を制御できるようになります。</li>
<li>[設定]-[ビブラート]で[マックスストレングス]と[マックスフェード]を好みの数値に変える。</li>
<li>[設定]-[演奏技法]で[ピッチベンドレンジ]を12とかにしておく。</li>
<li>ELECTRI6ITY付属のEffectsを使わない場合はEffectsタブでONになっているところをすべてOFFにし、Outputつまみをちょっと大きくする。その音をVST Amp Rackに突っ込む。</li>
</ul>
<p>あとはアーティキュレーション（入力モード）を好きなものを選んでベロシティで変化を付けていけばミュートとサスティンを簡単に切り替えながらジャカジャカ演奏したりできます。</p>
<p>ただ、どうもCC28でのビブラートの掛かり具合が演奏するたびに変わるようなのです。<br />
ヒューマナイズのせいかと思い、設定ページでいろいろいじってみたのですが、それらしき項目は見当たりません（回避策をご存知の方募集）。</p>
<p>他にも、プロジェクトを開いた時にKONTAKT4は起動しているものの、中のギター音源がロードされないなんて事が何度か起こりました（また設定しなおすハメに）。<br />
メモリ不足が原因でしょうかね？</p>
<p>Cubaseで打ち込んでいて気になったのはピッチベンドの打ち込みがし辛いという点です。<br />
0にスナップしたり12段階のどこかでスナップしたりする支援機能が見当たりません。<br />
この辺はMIDIの打ち込みでは当たり前の機能だと思っていただけに（しかも高額なソフトのくせに）付いていないというのが非常に残念です（逆に言えばこういう使いづらさがDominoの需要を生み出しているんでしょうかね。）</p>
<p>ひと通り打ち込み終わったら、ELECTRI6ITYから出た音をモノラルでWAVE書き出します（VST Amp Rackは通さない）</p>
<h4>初音ミクの打ち込み</h4>
<p>次はボーカルです。<br />
Rewireは重いとの噂だったため、VOCALOID2 EDITORでそのまま打ち込み始めました。<br />
さすがにベタ打ちだと音痴になってしまうため、しゃくりあげる部分は母音と子音を別ける、繋がってほしくない所は別トラックにする、の２点のみ調整を行いました。それだけやれば、結構普通に歌ってくれます。</p>
<p>WAVE書き出しして終わりです。<br />
（ノーマルミクさんの声の方が好きなので今回はミクアペンドの出番は無しでした）</p>
<h4>ミックス</h4>
<p>SC-88Proのような環境で長年打ち込みをやってきた身としては一番苦手なのがミックスだと思います。<br />
（SC-88ProはトラックごとにEQやコンプが使えず、ボリュームのみで調節するしかありませんでした。そのため、EQやコンプは全くといっていい程経験値が無いのです。）</p>
<p>WAVE書き出ししたギターやミクさんを新しいトラックへ追加します。</p>
<p>FXチャンネルトラックとしてリバーブ（REVerence）を追加し、各チャンネルからセンドしてあげます。<br />
（HALionなど、インスト側でリバーブが掛かっているものは、すべてオフにします。）</p>
<p>チャンネル事にEQを使って要らない帯域をカットしたりフェーダーを弄ったりして調節します。</p>
<p>ミクさんは音が小さいのでマキシマイザーででっかくしておいて、DeEsserで「し」や「つ」などの歯擦音を削り、ディレイやリバーブを掛けます。</p>
<p>ギターアンプはすべてVST Amp Rackを使いました。<br />
ただ、このVST Amp Rackは一癖ありまして、何故かプロジェクトを開き直すと出音（音量やEQ具合）が変わる現象が何度か起きました。また、MASTERのEQのスイッチがオフになっているのにどう聞いてもオンになっている事もありました。不具合でしょうかね。</p>
<p>そういえば、FLStudioの頃から気になっていたのですが、アンドゥで戻らないパラメータが多くて困りました。フェーダーをちょっと動かしてみて失敗したなと思っても、アンドゥで戻せないのは結構不便ですね（アンドゥ出来るようになったらなったで、不便になるケースもありそうですが）。</p>
<p>マスターの所にマルチバンドコンプレッサーを突っ込んだりしてみたりして、音圧を上げてみようと思った事もありますが、音のバランスがぐちゃぐちゃになっただけでした（＾＾；（あれ使うのは数年早いですね）。</p>
<p>ミックス後半になると、エフェクトの画面を開こうとしたら中身が空っぽになっていたり、しょっちゅうランタイムエラーが出て落ちたりするようになりました。<br />
タスクマネージャを見ても1.3GB程度しか消費していないのでメモリ不足で落ちるのは早い気がするのですが。</p>
<p>一度落ちるとブルースクリーンになって再起動するのにも数分掛かりますし、再起動したらしたでプロジェクト開いたらVST Amp Rackの出音が変わっていたりしてヽ(｀Д´#)ﾉ ﾑｷｰ!!となることもしばしば（VST Amp Rack通した状態でWAV化した方が良かったかな・・・）。</p>
<p>既存の曲のバランスも聞いてみたりしたのですが皆わりとバラバラなので何が正解なのか判らなくなったりもしました。<br />
そうこうして1週間ぐらい深夜まで調節してなんとか着地点が見えてきました。</p>
<p>で、終わりが見えてきた所でたまたま自分が昔作ったSC-88Pro版を聞いてみると、今ミックスしているものとL-Rが逆になっている事に気が付きました。ちゃんと当時耳コピに使った8cmシングルCDと同じCDを使って耳コピしているのに、です。試しにアルバム「Baby Blue Eyes」の同曲を再生したら昔と同じL-Rで再生されました・・・（外付けドライブでも同じ結果に）。ということはですよ、DELL内蔵のDVDコンボドライブは8cmCDを再生するとL-Rが逆になるってことですよΣ(ﾟдﾟlll)ｶﾞｰﾝ　そんな馬鹿な話ありますかヽ(`Д´)ﾉ</p>
<p>まあここは私も大人です。<br />
落ち着いて、波形編集ソフトを使ってチャンネルを入れ替えて終わり☆</p>
<p>・・・とは行きませんでした＿|￣|○<br />
L-Rを逆にするとバランスがおかしくなってしまったのです。ハードウェアとかヘッドフォンとか配線とかで左右の出音が違うんじゃないの？なんて疑いもしましたが、ヘッドフォンを左右逆に付けてもおかしく聞こえるので、つまるところ自分の耳が左右で聞こえ方が違うって事になります。</p>
<p>ただ、こういった話はよくあるみたいで、ブログで書いている方もいらっしゃいました。<br />
<a href="http://www.sf2.info/26.html">http://www.sf2.info/26.html</a><br />
<a href="http://d.hatena.ne.jp/Bushdog/20071229/p1">http://d.hatena.ne.jp/Bushdog/20071229/p1</a></p>
<p>視力だって左右で違うわけですから聴力だってそりゃあ違いますよね。私の場合は右耳の高音域が左耳に比べて聞きづらい感じでした（加齢のせいもあるかとは思いますが）。とうとう自分の耳も信じられなくなり何が正解なのかが更に判らなくなってきましたが、一応もう一度調整をし直して（ここでもやっぱり何度かブルースクリーンになるわけなのですが）深夜までミックス作業は続きました。</p>
<p>さすがに何度もブルースクリーンになったり聴力の衰えを実感したりすると精神的にきついので、納得のいくレベルに達した所で完成ということにしました（まだアラは多々ありますが）。</p>
<h4>終わりに</h4>
<p>かなり曲制作以外の所で苦労が耐えなかったのですが、SC-88Pro版よりはだいぶ良くなったんじゃないかと思います。ミクさんもちゃんと歌ってくれていますし、ギターも（打ち込み臭はまだ残っていますが）かなりマシになったと思います。SC-88Proの頃は再現出来なかった間奏でのフランジャーっぽいエフェクトも結構似せることができましたし。</p>
<p>あとはソフトの動作が安定してくれると今後曲作りが楽しめるのですが、これはもう少しPCに投資しないとどうしようも無いでしょうかね。</p>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20120404143001.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ANOMARIA &#8211; Mega-Pulse (SC-55/MIDI)</title>
		<link>http://takabosoft.com/20120331113906.html</link>
		<comments>http://takabosoft.com/20120331113906.html#comments</comments>
		<pubDate>Sat, 31 Mar 2012 11:39:06 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[音楽・楽曲]]></category>

		<guid isPermaLink="false">http://takabosoft.com/?p=1222</guid>
		<description><![CDATA[久々にSC-88Proを繋げていろいろデータを聴いていたのですが、中でも「あのまりあ」さんは打ち込み技術もセンスもずば抜けてますね。
私は高校の頃、ニフティサーブ会員だった友人からあのまりあさんのMIDIデータを貰ったの [...]]]></description>
			<content:encoded><![CDATA[<p>久々にSC-88Proを繋げていろいろデータを聴いていたのですが、中でも「あのまりあ」さんは打ち込み技術もセンスもずば抜けてますね。</p>
<p>私は高校の頃、ニフティサーブ会員だった友人からあのまりあさんのMIDIデータを貰ったのですが、衝撃を受けたのを覚えています。</p>
<p>いろいろ好きな曲はあるのですが、今日はMega-Pulseをご紹介します。</p>
<p><iframe width="480" height="360" src="http://www.youtube.com/embed/1aUpS67-OAE?rel=0" frameborder="0" allowfullscreen></iframe></p>
<p>SC-55で、しかも4トラックでやっちゃうという変態さ（褒め言葉）を差し引いたとしても、とても好きな曲です。</p>
<p>うまく曲が作れない事に対して、未熟な打ち込み技術やセンスを棚にあげて、音源やソフトのせいにしていた頃の自分にとっては良いお灸になりましたよ（笑）</p>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20120331113906.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[C#][VS2010] Debug.WriteLineが動作しない（解決）</title>
		<link>http://takabosoft.com/20120329005629.html</link>
		<comments>http://takabosoft.com/20120329005629.html#comments</comments>
		<pubDate>Thu, 29 Mar 2012 00:56:29 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://takabosoft.com/20120329005629.html</guid>
		<description><![CDATA[何故かDebug.WriteLineで出力ペインに出力されなくなりました。
当然デバッグ実行ですし、プロジェクトの設定でDEBUG定数の定義にチェックは入っています。
イミディエイトウィンドウへのリダイレクト機能もオフに [...]]]></description>
			<content:encoded><![CDATA[<p>何故かDebug.WriteLineで出力ペインに出力されなくなりました。<br />
当然デバッグ実行ですし、プロジェクトの設定でDEBUG定数の定義にチェックは入っています。<br />
イミディエイトウィンドウへのリダイレクト機能もオフにしてあります。</p>
<p>一応いろいろやってみたのですが</p>
<pre class="brush: csharp;">
Debug.WriteLine(&quot;Debug.WriteLine&quot;);
Trace.WriteLine(&quot;Trace.WriteLine&quot;);
Console.WriteLine(&quot;Console.WriteLine&quot;);</pre>
<p>Console.WriteLineは動作するので今はこれで代用しています。<br />
ただ、気持ちが悪いので解決策をご存知の方がいらっしゃいましたらご教授ください。<br />
（VS2010再インストールしかないかな・・・。いろいろアンインストールした時期があるので、間違って何か消しちゃったのかも。）</p>
<h4>解決しました。</h4>
<p>出力ペインの右クリックメニューで、プログラム出力がオフになってました・・・。<br />
何かの拍子に触ってしまったようです。</p>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20120329005629.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[C#][WinForms] ManualResetEventのWaitOneで待っている間にOnPaintが呼ばれる</title>
		<link>http://takabosoft.com/20120328075216.html</link>
		<comments>http://takabosoft.com/20120328075216.html#comments</comments>
		<pubDate>Wed, 28 Mar 2012 07:52:16 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[WinForms]]></category>

		<guid isPermaLink="false">http://takabosoft.com/?p=1220</guid>
		<description><![CDATA[
ある画像をマルチスレッド（分割統治法など）で事前にレンダリングしておき、キャッシュする。
OnPaintでそのキャッシュを使う。

なんて事をしようと思いまして、スレッドプールを使って処理をさせ、レンダリングが終わった [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li>ある画像をマルチスレッド（分割統治法など）で事前にレンダリングしておき、キャッシュする。
<li>OnPaintでそのキャッシュを使う。
</ul>
<p>なんて事をしようと思いまして、スレッドプールを使って処理をさせ、レンダリングが終わったらワーカースレッド側でManualResetEventのSet()を呼び出し、メインスレッド側ではWaitOneで各ワーカースレッドが終わるのを待つ・・・・というような処理を書きました。</p>
<p>で、たまに描画結果が期待したものにならない事がありまして調べてみると、<br />
どうやらWaitOneで待っている間にOnPaintが呼ばれてしまう事があるようなのです。<br />
（当然その段階ではキャッシュは作り終わっていないので、描画がおかしくなるというわけです。）</p>
<p>このような挙動は過去にMFCなどでネイティブアプリを作っている時には起こり得なかったため、特定に時間がかかりました。</p>
<p>WinFormsはそういう作りになっているそうです。<br />
参考：<br />
<a href="http://stackoverflow.com/questions/4540244/how-is-this-possible-onpaint-processed-while-in-waitone">http://stackoverflow.com/questions/4540244/how-is-this-possible-onpaint-processed-while-in-waitone</a></p>
<p>ただ、WaitOneだけならともかく、他にもメインスレッドを待つ処理だったり、.NETのフレームワークの一部の機能を使ったとき（例えばクリップボードに格納されているデータを確認するとき）のような意図しない時にもOnPaintが呼ばれるのが厄介です。<br />
（ツールバーの「貼り付け」ボタンの状態を更新しようとしたらOnPaintが呼ばれる、なんて事もありえます。）</p>
<p>こうした場合、</p>
<ul>
<li>マルチスレッドで画像をレンダリングするのを止める（＾＾；</li>
<li>キャッシュを使わないようにする</li>
<li>OnPaintの中でキャッシュを作るようにする</li>
<li>フラグでなんとか回避する</li>
</ul>
<p>などなど、注意してプログラムする必要がありそうです。</p>
<p>何か良いアイディアをご存知の方がいらっしゃいましたら、ご連絡くださいm(_ _)m<br />
（先の参考サイトだとMutexなら起こらないとか書かれていますが、今回のケースだと使えないような？）</p>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20120328075216.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perfume ファミコンメドレー Ver.0.1</title>
		<link>http://takabosoft.com/20120219130348.html</link>
		<comments>http://takabosoft.com/20120219130348.html#comments</comments>
		<pubDate>Sun, 19 Feb 2012 13:03:48 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[音楽・楽曲]]></category>

		<guid isPermaLink="false">http://takabosoft.com/?p=1219</guid>
		<description><![CDATA[以前日記でPerfumeファミコンメドレーを作るぜ！と息巻いていた時がありますが、結局4曲作ったところですっかり飽きてしまい、HDDの肥やしになっていました・・・。
このままお蔵入りするのも勿体無いので、アップしておきま [...]]]></description>
			<content:encoded><![CDATA[<p>以前日記で<a href="http://takabosoft.com/20110410160207.html">Perfumeファミコンメドレーを作るぜ！</a>と息巻いていた時がありますが、結局4曲作ったところですっかり飽きてしまい、HDDの肥やしになっていました・・・。</p>
<p>このままお蔵入りするのも勿体無いので、アップしておきます。</p>
<p><iframe width="312" height="176" src="http://ext.nicovideo.jp/thumb/nm17021718" scrolling="no" style="border:solid 1px #CCC;" frameborder="0"><a href="http://www.nicovideo.jp/watch/nm17021718">【ニコニコ動画】Perfume ファミコンメドレー Ver.0.1</a></iframe></p>
<p>ファミコン程度のクオリティなら楽勝でしょ！なんて思って作り始めたのですが、これがなかなか難しくてけっこう制作に時間が掛かっています（ファミコンの発音数は超えていますしね（＾＾；）。</p>
<p>こういうメドレーはどこかの合作に参加させてもらうのが良いかな～。<br />
誰かPerfumeアレンジメドレーの合作募集してません？？</p>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20120219130348.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ニコニコで質問メッセージを送ってくださった方へ</title>
		<link>http://takabosoft.com/20120219073258.html</link>
		<comments>http://takabosoft.com/20120219073258.html#comments</comments>
		<pubDate>Sun, 19 Feb 2012 07:32:58 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[日記]]></category>

		<guid isPermaLink="false">http://takabosoft.com/20120219073258.html</guid>
		<description><![CDATA[はじめまして、takaboさんの動画をみて感動しました。
最近dominoとsc-8850という同じ環境で作曲を始めたのですが、
まずtakaboさんが再現しているような音が出せないのと、
ニコニコ動画にアップするにあた [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>はじめまして、takaboさんの動画をみて感動しました。<br />
最近dominoとsc-8850という同じ環境で作曲を始めたのですが、<br />
まずtakaboさんが再現しているような音が出せないのと、<br />
ニコニコ動画にアップするにあたってどのようにこのような高音質の音を<br />
出力ができたのか、もし差し支えなければ是非ご教授いただきたく<br />
ご連絡させていただきました。<br />
お忙しいと思いますが、ご連絡くだされば幸いにございます。</p></blockquote>
<p>すみません、連絡方法が解らなかったので、こちらにて回答させていただきます。</p>
<p><strong>①最近dominoとsc-8850という同じ環境で作曲を始めた</strong></p>
<p>おめでとうございます。<br />
SC-8850は高音域が出ないのがたまに傷ですが、音色数も多く、とても良い音源だと思いますので、是非ともお楽しみください。</p>
<p>ただ、昨今のDTMはこうしたハードウェア音源一台で完結させる方法から、ソフトウェア音源（VST）やハードウェア音源、それから生演奏を録音した音などを組み合わせて制作する手法が主流かと思いますので、機会があればDAWと呼ばれる音楽統合ソフトにも挑戦してみてください。</p>
<p><strong>②takaboさんが再現しているような音が出せない</strong></p>
<p>ちょっと質問の意味が曖昧すぎて回答しづらいのですが、同じ音源なので、同じ音は出せますし、同じエフェクトは使えます。<br />
音圧のような事を言っているのでしたらちょっと私では力不足です。</p>
<p><strong>③ニコニコ動画に高音質の音をアップするには</strong></p>
<p>これは特に意識した覚えは無いのですがニコニコムービーメーカーで作った動画でも結構良い音質だったと思います。<br />
私が投稿した当時からそうとう時間が経過していますから、google等で高音質のアップ方法を検索された方が良いかと思います。<br />
どちらかと言えばSC-8850はアナログ出力しかできないので、録音するときにいかに音割れせず録音するかがポイントかと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20120219073258.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>高機能ドット絵エディタ「EDGE2」 Ver.1.11 リリース</title>
		<link>http://takabosoft.com/20120219065913.html</link>
		<comments>http://takabosoft.com/20120219065913.html#comments</comments>
		<pubDate>Sun, 19 Feb 2012 06:59:13 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[EDGE2]]></category>
		<category><![CDATA[お知らせ]]></category>

		<guid isPermaLink="false">http://takabosoft.com/20120219065913.html</guid>
		<description><![CDATA[EDGE2更新しました。
今回も細かな要望対応と不具合修正がメインです。
ダウンロードはこちらからどうぞ。
→http://takabosoft.com/edge2
変更点一覧

[キャプチャフレーム]→[エクスポート] [...]]]></description>
			<content:encoded><![CDATA[<p>EDGE2更新しました。</p>
<p>今回も細かな要望対応と不具合修正がメインです。</p>
<p>ダウンロードはこちらからどうぞ。<br />
→<a href="http://takabosoft.com/edge2">http://takabosoft.com/edge2</a></p>
<h4>変更点一覧</h4>
<ul>
<li>[キャプチャフレーム]→[エクスポート]→[フレーム毎に連番で書き出す]にて、各フレームに含まれるパーツが全て透過かつ同じパレットかつ同じ背景色の場合に限り、透過して書き出すようにしました。
<li>描画系ツールを選んだときに、選択範囲を自動解除する機能を実装しました。 <br />[環境設定]画面の[編集]から設定できます。
<li>[可視レイヤモード]に[編集グループのみ」を追加しました。 <br />編集レイヤが属しているグループのレイヤすべてを可視にします。
<li>編集レイヤをグループ単位で切り替えることができるようになりました。 <br />[レイヤ]メニューの[編集レイヤ変更]内にショートカットキーを割り当ててお使いください。
<li>パレットに[使用場所の確認]ツールを追加しました。 <br />[色の使用場所を確認]機能を、頻繁に使う方はこちらをツールバーに登録しておくと便利かと思います。 <br />パレット上の色をクリックし続けている間、画像側で使われている箇所を点滅させます。
<li>バー位置の固定が出来るようになりました。ツールバーが動いてしまう方はご利用ください。 <br />[表示]メニューの[バー位置の固定]から切り替えられます。
<li>EDGE2パレット形式(*.pal)にコメントも保存するようにしました。
<li>カラーパレットの[未使用色の削除(減色)]は[ページ毎にパレットを指定する]がオンの時（かつ複数パレットを持つ場合）に無効になるようにしました。
<li>カラーパレットの[重複色の統合]は複数パレットを持つ場合でも[ページ毎にパレットを指定する]がオンの時は実行できるようにしました（編集パレットのみ影響を受けます）。
<li>[多角形の描画]ツールで[図形を閉じる]がオフの場合にアンドゥ情報が残らない場合がある不具合を修正しました。
<li>透過GIFを読み込んで上書き保存したときに、透過にならない不具合を修正しました。
<li>カラーパレットの[カラーツールチップ]がオンになっている際、ツールチップが必要以上に再描画されていた不具合を修正しました（Vistaで確認しましたがOS依存の可能性有り）。
<li>[他のパレットから色のコピー]画面にて、不正終了する事がある不具合を修正しました。
</ul>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20120219065913.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIDI音楽編集ソフト「Domino」 Ver.1.42 リリース</title>
		<link>http://takabosoft.com/20120219063922.html</link>
		<comments>http://takabosoft.com/20120219063922.html#comments</comments>
		<pubDate>Sun, 19 Feb 2012 06:39:22 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[Domino]]></category>
		<category><![CDATA[お知らせ]]></category>

		<guid isPermaLink="false">http://takabosoft.com/?p=1216</guid>
		<description><![CDATA[Domino Ver.1.42をリリースいたしました。
ダウンロードはこちらからどうぞ。
→http://takabosoft.com/domino
今回も細かい要望対応と不具合修正です。
変更点一覧

曲線式にて、「t [...]]]></description>
			<content:encoded><![CDATA[<p>Domino Ver.1.42をリリースいたしました。</p>
<p>ダウンロードはこちらからどうぞ。<br />
→<a href="http://takabosoft.com/domino">http://takabosoft.com/domino</a></p>
<p>今回も細かい要望対応と不具合修正です。</p>
<h4>変更点一覧</h4>
<ul>
<li>曲線式にて、「tempo」変数を使えるようにしました。 <br />その時点でのテンポの値を参照することができます。
<li>トラックリスト画面でのみ、CtrlキーまたはShiftキーによるトラック（トラック名部分）の複数選択が出来るようになりました。 <br />
今のところ複数操作に対応しているのは、ドラッグによる移動、トラックの追加、トラックの削除です。 </p>
<li>音源定義ファイルの変数で「#PCH」を実装しました。 <br />Aポートの場合、チャンネルを元に00H～1FHまでの値を作ります。 <br />同様にBポートは10H～1FH、Cポートは20H～2FH、Dポートは30H～3FHの値を作ります。 <br />Eポート以降は常に00Hとなります。 <br />
汎用的な音源定義ファイルでは使用しないでください（ポートの影響を受けるため）。</p>
<li>トラックツールのクォンタイズ種類、Tickクォンタイズ、Gateクォンタイズ、トラックリストツールのクォンタイズ種類、Tickクォンタイズを、dmsファイルに格納するようにしました。
<li>リアルタイム録音時でもMTCメッセージを出力するように変更しました。
<li>[曲のプロパティ]画面にメモ欄を設置しました。<br />dmsファイルでのみ記憶されます（SMFには出力されません）。
<li>同梱の定義ファイル「XG2K」「XGb」「GSm」を更新しました（逃亡者さんありがとうございました）。
<li>[環境設定のインポート]および[環境設定のエクスポート]機能で、一部の設定が即座に反映されない不具合を修正しました。
<li>MIDI OUT/INデバイス名の後ろに空白が入っていると、設定の保存・読み込みがうまくいかない不具合を修正しました。
<li>トラックリストで複数トラックをまたいでVel/Valueの補正（Ctrl+Num'+'）を行ったときに例外が発生する不具合を修正しました。
<li>保存→アンドゥ→ノート置く→終了、などとすると保存確認されない不具合を修正しました。
<li>分解能を変更した時に演奏位置がおかしくなる不具合を修正しました。
</ul>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20120219063922.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>新年あけましておめでとうございます</title>
		<link>http://takabosoft.com/20120101035635.html</link>
		<comments>http://takabosoft.com/20120101035635.html#comments</comments>
		<pubDate>Sun, 01 Jan 2012 03:56:35 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[日記]]></category>

		<guid isPermaLink="false">http://takabosoft.com/20120101035635.html</guid>
		<description><![CDATA[新年あけましておめでとうございます。
本年もよろしくお願いいたします。
昨年は健康に気をつけて運動を始めたりもしていましたが、後半はいろいろと忙しすぎて休み無しで活動→精神崩壊(笑)という悲惨な状況に陥ってしまいました。 [...]]]></description>
			<content:encoded><![CDATA[<p>新年あけましておめでとうございます。<br />
本年もよろしくお願いいたします。</p>
<p>昨年は健康に気をつけて運動を始めたりもしていましたが、後半はいろいろと忙しすぎて休み無しで活動→精神崩壊(笑)という悲惨な状況に陥ってしまいました。</p>
<p>今年はいよいよ三十路に突入します。<br />
これから自分がどう生きるのか悩みも多くなる年頃ですが、心身の健康を優先させ、楽しい人生にしていきたいと思っています。<br />
周りの皆様、こんな自分ですがまた1年お付き合いくださいませ。</p>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20120101035635.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>千里ちゃんが「てってってー」を叩いたら</title>
		<link>http://takabosoft.com/20111029145520.html</link>
		<comments>http://takabosoft.com/20111029145520.html#comments</comments>
		<pubDate>Sat, 29 Oct 2011 14:55:20 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[日記]]></category>
		<category><![CDATA[音楽・楽曲]]></category>

		<guid isPermaLink="false">http://takabosoft.com/?p=1214</guid>
		<description><![CDATA[なんか凄いことになってる・・・。DVD化されたら買っちゃうよこれ。

原曲はこちら。
http://www.youtube.com/watch?v=63Pa5ZHF3Eo
マイケル版はこちら。
http://www.yo [...]]]></description>
			<content:encoded><![CDATA[<p>なんか凄いことになってる・・・。DVD化されたら買っちゃうよこれ。</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/EMBJAjSo-Ug" frameborder="0" allowfullscreen></iframe></p>
<p>原曲はこちら。<br />
<a href="http://www.youtube.com/watch?v=63Pa5ZHF3Eo">http://www.youtube.com/watch?v=63Pa5ZHF3Eo</a></p>
<p>マイケル版はこちら。<br />
<a href="http://www.youtube.com/watch?v=Xlp87tVwCDY">http://www.youtube.com/watch?v=Xlp87tVwCDY</a></p>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20111029145520.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[iOS] CATiledLayerを使ったUIViewを破棄すると</title>
		<link>http://takabosoft.com/20111022093546.html</link>
		<comments>http://takabosoft.com/20111022093546.html#comments</comments>
		<pubDate>Sat, 22 Oct 2011 09:35:46 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[ProgrammingTips]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[日記]]></category>

		<guid isPermaLink="false">http://takabosoft.com/20111022093546.html</guid>
		<description><![CDATA[CATiledLayerを使ったUIViewの破棄と生成を何度か繰り返していくと、
まれに黒いブロックがフェードインしてくる現象が出ました。
removeFromSuperviewやreleaseなどをして破棄したつもり [...]]]></description>
			<content:encoded><![CDATA[<p>CATiledLayerを使ったUIViewの破棄と生成を何度か繰り返していくと、<br />
まれに黒いブロックがフェードインしてくる現象が出ました。</p>
<p>removeFromSuperviewやreleaseなどをして破棄したつもりでも、タイル部分のアニメーションが残り、場合によって黒い（何も描画されていない）タイルが出てくるのだろうと思われます。</p>
<p><s datetime="2011-10-26T13:04:11+00:00">しかしこれがまた、どうやって治すかが調べてもさっぱりでして、いろいろ試したところ、<br />
removeFromSuperviewする前ぐらいで<br />
_tiledView.layer.contents = nil;<br />
などとしておくと、黒いブロックは出なくなりました。</p>
<p>ちなみに、UIViewのdeallocでnilを突っ込むと、場合によってタイル更新処理が止まってしまう事もありましたので、タイミングに要注意です。</s></p>
<p>タイルの更新処理が、ごくまれに止まってしまう現象を確認しました（↑の処置が原因かは確定していませんが）。<br />
黒タイルは放置の方向で・・・。</p>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20111022093546.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>パソコンで学ぶ　かんたん耳コピドリル</title>
		<link>http://takabosoft.com/20110924115103.html</link>
		<comments>http://takabosoft.com/20110924115103.html#comments</comments>
		<pubDate>Sat, 24 Sep 2011 11:51:03 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[Domino]]></category>
		<category><![CDATA[日記]]></category>

		<guid isPermaLink="false">http://takabosoft.com/?p=1212</guid>
		<description><![CDATA[耳コピドリル本が出ました！
シーケンサとしてDominoが使われています。
耳コピがよくわからないという方は手に取ってみてください。



パソコンで学ぶ　かんたん耳コピドリル（CD-ROMつき）
posted with [...]]]></description>
			<content:encoded><![CDATA[<p>耳コピドリル本が出ました！<br />
シーケンサとしてDominoが使われています。<br />
耳コピがよくわからないという方は手に取ってみてください。</p>
<div class="amazlet-box" style="margin-bottom:0px;">
<div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4636867580/takabosoftnet-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51SGLWVH%2B4L._SL160_.jpg" alt="パソコンで学ぶ　かんたん耳コピドリル（CD-ROMつき）" style="border: none;" /></a></div>
<div class="amazlet-info" style="line-height:120%; margin-bottom: 10px">
<div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4636867580/takabosoftnet-22/ref=nosim/" name="amazletlink" target="_blank">パソコンで学ぶ　かんたん耳コピドリル（CD-ROMつき）</a>
<div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4636867580/takabosoftnet-22/ref=nosim/" title="パソコンで学ぶ　かんたん耳コピドリル（CD-ROMつき）" target="_blank">amazlet</a> at 11.10.04</div>
</div>
<div class="amazlet-detail">平沢 栄司 <br />ヤマハミュージックメディア <br />売り上げランキング: 20055</div>
<div class="amazlet-sub-info" style="float: left;">
<div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4636867580/takabosoftnet-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div>
</div>
</div>
<div class="amazlet-footer" style="clear: left"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20110924115103.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Android] ListViewでメモリリーク？</title>
		<link>http://takabosoft.com/20110912055534.html</link>
		<comments>http://takabosoft.com/20110912055534.html#comments</comments>
		<pubDate>Mon, 12 Sep 2011 05:55:34 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[日記]]></category>

		<guid isPermaLink="false">http://takabosoft.com/?p=1210</guid>
		<description><![CDATA[Activityを切り替えずに、動的にListViewを作ったり消したりしていると、ガベージコレクションを何度実行しても回収されず、何故かメモリリークっぽい事になります。
以下再現ソースです。


package com [...]]]></description>
			<content:encoded><![CDATA[<p>Activityを切り替えずに、動的にListViewを作ったり消したりしていると、ガベージコレクションを何度実行しても回収されず、何故かメモリリークっぽい事になります。</p>
<p>以下再現ソースです。<br />
<span id="more-1210"></span></p>
<pre class="brush: java;">
package com.test;

import android.app.Activity;
import android.content.Context;
import android.database.DataSetObserver;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class Test000Activity extends Activity {

	private LinearLayout layout;
	private int count = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        layout = new LinearLayout(this);
        setContentView(layout);
        next();
    }

    private class Next implements Runnable {

		public void run() {
			layout.removeAllViews();

			count++;
			if (count == 10) {
				Log.d(&quot;test&quot;, &quot;おわり&quot;);
				return;
			}
			else {
				Log.d(&quot;test&quot;, &quot;next:&quot; + count);
			}

			MyListView listView = new MyListView(Test000Activity.this);
			listView.setAdapter(new MyListAdapter());
			layout.addView(listView);
			next();
		}
    }

    private void next() {
    	new Handler().postDelayed(new Next(), 500);
    }

    private static class MyListView extends ListView {
		public MyListView(Context context) {
			super(context);
		}
    }

    private static class MyListAdapter implements ListAdapter {
		public int getCount() {
			return 50;
		}
		public Object getItem(int arg0) {
			return null;
		}
		public long getItemId(int position) {
			return 0;
		}
		public int getItemViewType(int position) {
			return 0;
		}
		public View getView(int position, View convertView, ViewGroup parent) {
			if (convertView != null) {
				return convertView;
			}
			TextView tv = new TextView(parent.getContext());
			tv.setText(&quot;test&quot;);
			tv.setMinimumHeight(40);
			return tv;
		}
		public int getViewTypeCount() {
			return 1;
		}
		public boolean hasStableIds() {
			return false;
		}
		public boolean isEmpty() {
			return false;
		}
		public void registerDataSetObserver(DataSetObserver observer) {
		}
		public void unregisterDataSetObserver(DataSetObserver observer) {
		}
		public boolean areAllItemsEnabled() {
			return true;
		}
		public boolean isEnabled(int position) {
			return true;
		}
	}
}
</pre>
<p>これを実行すると、500msおきにMyListViewを作ったり消したりします。<br />
10回繰り返すと終わります。</p>
<p>このあとで、DDMSのガベコレボタンを連打してDump HPROF fileしてみたのがこちら。<br />
<a href="http://takabosoft.com/wp-content/uploads/2011/09/leak.png"><img src="http://takabosoft.com/wp-content/uploads/2011/09/leak.png" alt="leak" title="leak" width="502" height="234" class="alignnone size-full wp-image-1211" /></a><br />
残っちゃっています。</p>
<p>ただ、デバッグ実行ではなく、通常の実行だとこのリークは検出されないので、実害は無いのですが、なんだか気持ち悪いのでなんとかしたいところです。<br />
この辺ご存知の方はこっそり教えてもらえると助かります！</p>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20110912055534.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>お花教室　体験レッスン　受講者募集</title>
		<link>http://takabosoft.com/20110907014242.html</link>
		<comments>http://takabosoft.com/20110907014242.html#comments</comments>
		<pubDate>Wed, 07 Sep 2011 01:42:42 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[日記]]></category>

		<guid isPermaLink="false">http://takabosoft.com/?p=1209</guid>
		<description><![CDATA[知り合いがお花教室の手伝いをやっていまして、一般向けに体験教室をやるそうです。
受講者募集中とのことで、浜松近辺で興味のある方は是非ご参加ください。
お問い合わせ方法ですが、お手数ですが私に一度メールを送って下さい。
（ [...]]]></description>
			<content:encoded><![CDATA[<p>知り合いがお花教室の手伝いをやっていまして、一般向けに体験教室をやるそうです。<br />
受講者募集中とのことで、浜松近辺で興味のある方は是非ご参加ください。</p>
<p>お問い合わせ方法ですが、お手数ですが私に一度メールを送って下さい。<br />
（折り返し担当からご連絡させていただきます。）<br />
メールはこのサイトの一番下の「お問い合わせ」をクリックすると送ることができます。</p>
<div id="attachment_1208" class="wp-caption alignnone" style="width: 414px"><a href="http://takabosoft.com/wp-content/uploads/2011/09/Edge2.png"><img src="http://takabosoft.com/wp-content/uploads/2011/09/Edge2-404x420.png" alt="（クリックで拡大）" title="Edge2" width="404" height="420" class="size-large wp-image-1208" /></a><p class="wp-caption-text">（クリックで拡大）</p></div>
<p>なんて書いたは良いですが、うちのサイト見ている人で浜松周辺かつお花に興味が有る方っていらっしゃるかなあ（＾＾；</p>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20110907014242.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[C#][WinForms] デザイナでカスタムコントロールを貼ってもnewされない</title>
		<link>http://takabosoft.com/20110830061121.html</link>
		<comments>http://takabosoft.com/20110830061121.html#comments</comments>
		<pubDate>Tue, 30 Aug 2011 06:11:21 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[ProgrammingTips]]></category>
		<category><![CDATA[WinForms]]></category>

		<guid isPermaLink="false">http://takabosoft.com/20110830061121.html</guid>
		<description><![CDATA[カスタムコントロールを作ってデザイナへ貼り付けても、InitializeComponent()内でnewされず、実行するとエラーになるケースが頻発しました。
これどうやら、カスタムコントロールのコンストラクタがpubli [...]]]></description>
			<content:encoded><![CDATA[<p>カスタムコントロールを作ってデザイナへ貼り付けても、InitializeComponent()内でnewされず、実行するとエラーになるケースが頻発しました。</p>
<p>これどうやら、カスタムコントロールのコンストラクタがpublicでないと起こるみたいです。<br />
<a href="http://stackoverflow.com/questions/5684784/custom-user-control-not-initialized-in-auto-generated-code">http://stackoverflow.com/questions/5684784/custom-user-control-not-initialized-in-auto-generated-code</a></p>
<p>interfaceの実装もpublic固定ですし、デザイナで表示させるプロパティもpublicである必要がありますし（うろ覚え）、データバインディングを行わせるためのプロパティもpublicでないといけません。</p>
<p>外部に公開する気は無いのでinternalをよく使っているのですが、結構こういう制限があって統一しきれないのが残念です。</p>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20110830061121.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[C#][WinForms] ラジオボタンの上手な使い方を考える</title>
		<link>http://takabosoft.com/20110830045233.html</link>
		<comments>http://takabosoft.com/20110830045233.html#comments</comments>
		<pubDate>Tue, 30 Aug 2011 04:52:33 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[ProgrammingTips]]></category>
		<category><![CDATA[WinForms]]></category>

		<guid isPermaLink="false">http://takabosoft.com/?p=1206</guid>
		<description><![CDATA[MFCどっぷり時代からC#のWinFormsをいじりだして半年ぐらい経った気がしますが、ラジオボタンの上手な使い方がどこを調べてもいまいち解りませんでした。
MFCならラジオボタンのどこにチェックが入っているかインデック [...]]]></description>
			<content:encoded><![CDATA[<p>MFCどっぷり時代からC#のWinFormsをいじりだして半年ぐらい経った気がしますが、ラジオボタンの上手な使い方がどこを調べてもいまいち解りませんでした。</p>
<p>MFCならラジオボタンのどこにチェックが入っているかインデックス値を取得・設定出来るのですが、WinFormsはその辺のサポート機能が一切無いんですよね。<br />
コンボボックスならデータバインディング等も使えていろんなサイトでも紹介されているのですが、ラジオボタンの記事はほとんど見かけた事がありません。</p>
<p>いろいろ試した結果、なんとか着地できたようなので、晒してみたいと思います。</p>
<p>まず、MFCと違い、WinFomrsでは「ラジオボタンのグループ化＝どっかのコンテナにまとめて乗せる」というのが大前提です。<br />
（これ最初は違和感有ったのですが。）</p>
<p>逆に言えば、コンテナに対してラジオボタンの便利関数を実装出来れば良さそうです。<br />
C#は拡張メソッドが使えますから、以下のような関数を実装してみました。</p>
<pre class="brush: csharp;">
/// &lt;summary&gt;
/// ラジオボタンを抽出
/// &lt;/summary&gt;
/// &lt;param name=&quot;parent&quot;&gt;&lt;/param&gt;
/// &lt;returns&gt;&lt;/returns&gt;
internal static IEnumerable&lt;RadioButton&gt; GetRadioButtons(this Control parent)
{
    return parent.Controls.Cast&lt;Control&gt;().Select(x =&gt; x as RadioButton).Where(x =&gt; x != null);
}

/// &lt;summary&gt;
/// Tagを元にラジオボタンにチェックを入れる
/// &lt;/summary&gt;
/// &lt;param name=&quot;parent&quot;&gt;&lt;/param&gt;
/// &lt;param name=&quot;tag&quot;&gt;&lt;/param&gt;
internal static void CheckRadioButtonByTag(this Control parent, object tag)
{
    foreach (var radio in parent.GetRadioButtons())
    {
        if (radio.Tag.Equals(tag))
        {
            radio.Checked = true;
            break;
        }
    }
}

/// &lt;summary&gt;
/// チェックが入ったラジオボタンのタグを取得する
/// &lt;/summary&gt;
/// &lt;param name=&quot;parent&quot;&gt;&lt;/param&gt;
/// &lt;returns&gt;&lt;/returns&gt;
internal static object GetCheckedRadioButtonTag(this Control parent)
{
    foreach (var radio in parent.GetRadioButtons())
    {
        if (radio.Checked)
        {
            return radio.Tag;
        }
    }
    return null;
}

/// &lt;summary&gt;
/// ラジオボタンのチェックイベントを設定
/// &lt;/summary&gt;
/// &lt;param name=&quot;parent&quot;&gt;&lt;/param&gt;
/// &lt;param name=&quot;action&quot;&gt;&lt;/param&gt;
internal static void SetRadioButtonCheckedEvent(this Control parent, Action&lt;RadioButton&gt; action)
{
    foreach (var radio in parent.GetRadioButtons())
    {
        radio.CheckedChanged += (sender, _) =&gt;
        {
            RadioButton r = (RadioButton)sender;
            if (r.Checked)
            {
                action(r);
            }
        };
    }
}
</pre>
<p>あとはFormのLoadイベント辺りで</p>
<pre class="brush: csharp;">
sizeB5RadioButton.Tag = PaperKind.B5;
sizeA4RadioButton.Tag = PaperKind.A4;
sizeB4RadioButton.Tag = PaperKind.B4;
sizeA3RadioButton.Tag = PaperKind.A3;
sizeGroupBox.CheckRadioButtonByTag([デフォルトの用紙サイズ]);
sizeGroupBox.SetRadioButtonCheckedEvent(radio =&gt; [ラジオボタンにチェックが入った時の処理]);
</pre>
<p>などと呼べば、良いかと思います。<br />
この例は、フォーム上のグループボックスに用紙サイズのラジオボタンがいくつか並んでいるものです。</p>
<p>ラジオボタンのTagにコードであらかじめEnum値などを入れておき、それをやりくりするのがミソです（Enumで無くとも数値でも文字列でも何でも良いのですが）。<br />
イベントに関してもデザイナで一つ一つに割り当てるのは面倒くさいので、コードで一気にやってしまいます。</p>
<p>後からチェックの入った情報を取り出したい時は</p>
<pre class="brush: csharp;">(PaperKind)sizeGroupBox.GetCheckedRadioButtonTag()</pre>
<p>などとすれば良いです。</p>
<p>タイプセーフ的にあんまりなコードですが、いちいちフォームでラジオボタンのチェックプロパティを見に行ってチェックされていたら云々、と書くよりは良いと思うのですがどうでしょうかね。</p>
<p>ラジオボタンの定石をご存知の片がいらっしゃいましたら、こっそり教えてもらえると助かりますm(_ _)m</p>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20110830045233.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Android] onSaveInstanceStateとonRestoreInstanceStateのテスト</title>
		<link>http://takabosoft.com/20110827124425.html</link>
		<comments>http://takabosoft.com/20110827124425.html#comments</comments>
		<pubDate>Sat, 27 Aug 2011 12:44:25 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[ProgrammingTips]]></category>

		<guid isPermaLink="false">http://takabosoft.com/?p=1205</guid>
		<description><![CDATA[Activity（またはView）の状態保存・復元はonSaveInstanceStateとonRestoreInstanceStateとで行われますが、これのテストが困難だったりします。
（ちょっと憶測も入っていますが [...]]]></description>
			<content:encoded><![CDATA[<p>Activity（またはView）の状態保存・復元はonSaveInstanceStateとonRestoreInstanceStateとで行われますが、これのテストが困難だったりします。</p>
<p>（ちょっと憶測も入っていますが）Activityを呼び出したり戻したりすればonSaveInstanceStateとonRestoreInstanceStateが呼ばれるので、コードは一応通るのですが、大抵の場合はストレージ（？）への書き出し・読み込み処理は走らず、メモリ内のキャッシュデータを読み書きしているだけです。</p>
<p>ですが、いざという時（メモリ不足時？）には実際にストレージへの書き出し・読み込み処理が走り、いままで何の問題も無かった箇所で落ちる、何てことが起こりえます。</p>
<p>特に、カスタムViewを作り、Parcelオブジェクトを使って読み書きしている部分は、普段は処理が走らないので厄介です。<br />
参考：<br />
Viewの状態を保存する<br />
<a href="http://ym02.blogspot.com/2010/08/view.html">http://ym02.blogspot.com/2010/08/view.html</a></p>
<p>iPhoneだとシミュレータでメモリ不足時のシミュレートが出来るようになっていますが、Androidはそのような事が出来るのでしょうか？<br />
（知っている人いたら教えて下さい）</p>
<p>そこで、擬似的にこの辺りのテストを行うコードを書いてみました。</p>
<pre class="brush: java;">
private void test()
{
	Parcel p1 = Parcel.obtain();
	Bundle b1 = new Bundle();
	onSaveInstanceState(b1);
	p1.writeBundle(b1);

	byte[] bytes = p1.marshall();

	Parcel p2 = Parcel.obtain();
	p2.unmarshall(bytes, 0, bytes.length);
	p2.setDataPosition(0);
	Bundle b2 = p2.readBundle();
	b2.setClassLoader(getClassLoader());
	onRestoreInstanceState(b2);
}
</pre>
<p>ただ、このコードによる保存・復元処理が正常時と同じかどうかは保障できません（＾＾；<br />
また、私自身javaの経験が浅く、ClassLoader辺りはよく理解していません・・・。<br />
（でもsetClassLoaderしないと、うまくparcelが取り出せないんですよね）</p>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20110827124425.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[C#][GDI+] Rectangle.Unionの挙動について</title>
		<link>http://takabosoft.com/20110731065426.html</link>
		<comments>http://takabosoft.com/20110731065426.html#comments</comments>
		<pubDate>Sun, 31 Jul 2011 06:54:26 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[ProgrammingTips]]></category>
		<category><![CDATA[WinForms]]></category>

		<guid isPermaLink="false">http://takabosoft.com/20110731065426.html</guid>
		<description><![CDATA[最近挙動シリーズが多い気がしますが（＾＾；

Rectangle rc = new Rectangle(10, 10, 10, 10);
Debug.WriteLine(Rectangle.Union(rc, Recta [...]]]></description>
			<content:encoded><![CDATA[<p>最近挙動シリーズが多い気がしますが（＾＾；</p>
<pre class="brush: csharp;">
Rectangle rc = new Rectangle(10, 10, 10, 10);
Debug.WriteLine(Rectangle.Union(rc, Rectangle.Empty));

出力結果：
{X=0,Y=0,Width=20,Height=20}
</pre>
<p>矩形の合成って結構頻繁にやると思うのですが、上のコードのようにEmptyとUnionしたとき、期待する結果になりません。<br />
Emptyは矩形が何もないという意味合いで使いたいのですが、合成するとEmptyのLeft, Top, Right, Bottomも影響を与えてしまっています。</p>
<p>特にMFCのCRectの感覚で使っていると痛い目を見ます（CRectはEmptyと合成したときには、Emptyは合成結果に影響を与えない）。</p>
<p>なので、これを回避するには、以下のような処理をする必要があるかと思います。<br />
（このコード実行してないので、うまく動かないかもしれませんが（＾＾；）</p>
<pre class="brush: cpp;">
public static void Union(ref Rectangle rc1, Rectangle rc2)
{
    if (rc1.IsEmpty)
    {
        rc1 = rc2;
    }
    else if (!rc2.IsEmpty)
    {
        rc1 = Rectangle.Union(rc1, rc2);
    }
}

// 拡張メソッド版
public static Rectangle Union(this Rectangle rc1, Rectangle rc2)
{
    if (rc1.IsEmpty)
    {
        return rc2;
    }
    else if (!rc2.IsEmpty)
    {
        return Rectangle.Union(rc1, rc2);
    }
    return rc1;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20110731065426.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[C#] ToolStripにコンボボックスを乗せたときの挙動がおかしい</title>
		<link>http://takabosoft.com/20110720083909.html</link>
		<comments>http://takabosoft.com/20110720083909.html#comments</comments>
		<pubDate>Wed, 20 Jul 2011 08:39:09 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[ProgrammingTips]]></category>
		<category><![CDATA[WinForms]]></category>

		<guid isPermaLink="false">http://takabosoft.com/?p=1201</guid>
		<description><![CDATA[Visual Studioにもツールバーにコンボボックスが乗っていますが、そこへフォーカスを当てた状態で他のボタンの上へマウスカーソルを持っていけば、枠が表示されて選択状態となります。

これと同じことをWinForms [...]]]></description>
			<content:encoded><![CDATA[<p>Visual Studioにもツールバーにコンボボックスが乗っていますが、そこへフォーカスを当てた状態で他のボタンの上へマウスカーソルを持っていけば、枠が表示されて選択状態となります。<br />
<img src="http://takabosoft.com/wp-content/uploads/2011/07/Edge21.png" alt="Edge2" title="Edge2" width="306" height="101" class="alignnone size-full wp-image-1202" /></p>
<p>これと同じことをWinFormsのToolStripでやろうとすると、何故か挙動が違い、選択状態になりません。<br />
<img src="http://takabosoft.com/wp-content/uploads/2011/07/Edge41.png" alt="Edge4" title="Edge4" width="392" height="113" class="alignnone size-full wp-image-1203" /></p>
<p>しかも同じツールバーに乗ってるコントロール上にフォーカスが有るときだけ、選択状態にならず、別のツールバー上にマウスカーソルを持っていけば、そちらではちゃんと選択状態になるという中途半端っぷりです。</p>
<p>こうなっているのは何かしら理由があるのかもしれませんが、気持ち悪いのでVisual Studioのような挙動にしたいところです。</p>
<p>.NET frameworkのソースを見た感じだと切り替えられるようにはなっていないようなので、こんな感じでどうでしょう。</p>
<pre class="brush: csharp;">
private void Form6_Load(object sender, EventArgs e)
{
    Bugfix(toolStrip1);
}

private static void Bugfix(ToolStrip toolStrip)
{
    foreach (var item in toolStrip.Items)
    {
        if (item is ToolStripButton || item is ToolStripSplitButton || item is ToolStripDropDownButton)
        {
            ((ToolStripItem)item).MouseEnter += (sender, _) =&gt;
            {
                var i = (ToolStripItem)sender;
                if (i.Enabled)
                {
                    i.Select();
                }
            };
        }
    }
}
</pre>
<p>副作用とかはあるかもしれません。</p>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20110720083909.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[C#] GraphicsPath.GetBounds(Matrix, Pen) の挙動</title>
		<link>http://takabosoft.com/20110712083503.html</link>
		<comments>http://takabosoft.com/20110712083503.html#comments</comments>
		<pubDate>Tue, 12 Jul 2011 08:35:03 +0000</pubDate>
		<dc:creator>takabosoft</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[ProgrammingTips]]></category>
		<category><![CDATA[WinForms]]></category>

		<guid isPermaLink="false">http://takabosoft.com/?p=1200</guid>
		<description><![CDATA[パスのバウンズを取得するときに、GraphicsPath.GetBoundsを利用することがありますが、引数に行列とペンを引き渡してバウンズを取得できる物も用意されています。
しかし実際に使ってみると、希望していたバウン [...]]]></description>
			<content:encoded><![CDATA[<p>パスのバウンズを取得するときに、<a href="http://msdn.microsoft.com/ja-jp/library/be62sd00.aspx">GraphicsPath.GetBounds</a>を利用することがありますが、引数に行列とペンを引き渡してバウンズを取得できる物も用意されています。</p>
<p>しかし実際に使ってみると、希望していたバウンズとは違う結果が取得されてしまいました。</p>
<p><img src="http://takabosoft.com/wp-content/uploads/2011/07/Edge1.png" alt="Edge1" title="Edge1" width="172" height="194" class="alignnone size-full wp-image-1199" /></p>
<pre class="brush: csharp;">
using (Pen pen = new Pen(Color.Black, 20))
using (Pen redPen = new Pen(Color.Red))
using (Pen bluePen = new Pen(Color.Blue))
using (GraphicsPath path = new GraphicsPath())
{
    path.AddLine(30, 30, 120, 120);
    e.Graphics.DrawPath(pen, path);

    RectangleF rc = path.GetBounds(null, pen);
    e.Graphics.DrawRectangle(redPen, rc.X, rc.Y, rc.Width, rc.Height);

    path.Widen(pen);
    rc = path.GetBounds();
    e.Graphics.DrawRectangle(bluePen, rc.X, rc.Y, rc.Width, rc.Height);
}
</pre>
<p>ソースを見てもらえれば判ると思いますが、赤で囲った矩形がGetBounds(Matrix, Pen)で取得したバウンズ、青で囲った矩形がWidenでペンをパス化した結果に対してGetBounds() したバウンズです。<br />
結構余白が大きく入りますね。<br />
ペンの太さが太かったり、矢印等のアンカーが付いていたりするとより顕著です。</p>
<p>より正確にバウンズを取得したい場合はGetBounds(Matrix, Pen)は使わないほうが良さそうです。<br />
（動作速度もそこそこ差がありそうですが、今回は計っていません）</p>
]]></content:encoded>
			<wfw:commentRss>http://takabosoft.com/20110712083503.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

