2020年9月29日火曜日

飯田さん広告に出過ぎじゃない? 他

Twitterなどでさんざ苦情が蔓延しているので今更な話題ではありますが、エロ漫画のネット広告にやたらと出て来る飯田さん.黒髪ロングの清楚系な外見とはうらはらに、たくさんやられちゃいます.
なんつって「カラミザカリ」を読んだわけじゃないんです.あまりにも広告がクドイので絶対にクリックしてやんねぇからなと意地を張っているわたしです.ネットを徘徊して拾いに行ったこともないよ、マジでないから信じて...

アニメ化希望の意志表明だけはさしてもらいます.飯田さんの声は早見沙織さんがいいかな.意外と日笠陽子もいいかも.ヒナねえ....

-----
マンガの広告ならscrollしてしまえば消えてしまいますから実害は無いのですけど、最近はyoutube広告で楽曲が流れて来るんです.生命保険のような企業広告ならあーハイハイと思いつつ広告スルーボタンをポチッとするぐらいの大人の忍耐力を身に着けているわたしだとはいえ、好きでも無い楽曲のイントロを何度も聞かされるのはかなり不快なものがありんす.

こちらの楽曲です.    HANCE - 夜と嘘 (Official Music Video)

HANCEっていう人、チャンネル登録者数 544人 って全然売れてねぇじゃんw なんなの?

動画コメを見ると、negativeコメが一つもないので、スタッフが消してると予想されますな.

キャンペーン 乙~       嗚呼、能瀬慶子

-----
youtube動画で、PV 1000万回とか行ってるインディーズ楽曲はゴロゴロあります.

そういう楽曲の特徴って、第一にメンヘラです.2番目の特徴はメンヘラ.それで3番目がメンヘラかな.曲のラストへ向けて前向きなメンタルで終わるか、よりネガなメンタルで終わるか、その違いはありますけど、いずれにせよメンヘラw

それで思ったの、ああいう曲って現代版の演歌なんだなぁって.

演歌的な鬱屈した心情はバブルの数年前には死滅してしまって、バブルのプラスマイナス5年間ぐらいはPIZZICATO FIVEみたいな、金持ち私大生がチャラく遊んでいる風な楽曲が多くなりました. ♪東京は夜の七時~♪  どんだけ軽いんだよw

それでもって2000年からこっちはニートや引き籠りが増えてゆき、鬱屈した人々がメンヘラ楽曲をyoutubeで再生しまくっている、、、演歌の心情は復活したのです.この曲は1500万PVですって、すげー

思えば、バブル崩壊後に真っ先にメンヘラに振ったのはエバンゲリオンだったな.

かしこ

2020年9月28日月曜日

2020.10月期アニメが始まる

こんばんは、アニメの観過ぎ、ヒラサカです.冴えかのfine.をendlessで再生し続けています.

9月末につき、TVアニメが続々と最終回を迎えています.今期は総じて低調だったかな.

今期は、宇崎ちゃん、レンタル彼女、が良かったです.宇崎、レンカノは第二期が発表された模様です.うれぴー
宇崎ちゃん最終回に登場した”スーパーウザイ”には感心しました.こんなビールがあったら是非飲んでみたい.

あと再放送で「生徒会役員共」「シドニア」を楽しんでいます.生徒会はOVAも再放送して欲しいんだけど、どうかなぁ?

2020年10月期のスタートはとりあえずこの37タイトルを録画予約しときます.普段よりも録画予約が多いですが、番組紹介を読んだだけで切れる作品が何故か少なかったためです.
アクダマドライブ、アサルトリリィ、安達としまむら、池袋ウエストゲートパーク、いわかける!、オオカミさんは食べられたい、おそ松さん 第3期、おちこぼれフルーツタルト、大人にゃ恋の仕方がわからねぇ!、神様になった日、神達に拾われた男、キミと僕の最後の戦場、あるいは世界が始まる聖戦、ギャルと恐竜、キングスレイド 意志を継ぐものたち、くま クマ 熊 ベアー、ゴールデンカムイ、ご注文はうさぎですか? BLOOM、呪術廻戦、進撃の巨人、ストライクウィッチーズ ROAD to BERLIN、戦翼のシグルドリーヴァ、ダンジョンに出会いを求めるのは間違っているだろうか3、D4DJ First Mix、土下座で頼んでみた、刀使ノ巫女 刻みし一閃の燈火、トニカクカワイイ、NOBLESSE -ノブレス-、半妖の夜叉姫、100万の命の上に俺は立っている、魔王城でおやすみ、禍つヴァールハイト、魔女の旅々、魔法科高校の劣等生、無能なナナ、憂国のモリアーティ、レヱル・ロマネスク、生徒会役員共*(再放送)

かしこ

STM32-DDCアートワーク終了、PCB製造開始

告知です.
コミケ99にて当社のDDC/DACを頒布いたします.
  日付   2021年12月31日(金) 東地区 テ-40b  東5ホール
  サークル名    bangflat
コミケにお越しの際はお立ち寄りいただけますとありがたいです.
商品紹介ページを作りました.
ーーーー
STM32でDDCを作ろう!

アートワークに2週間ぐらいかかったかしら.ケースに収める形態を意識して設計したのでやけに時間がかかりました.

↓DDC基板.両面98x75mm.出来ればこれでfix版にしたいけど、何かしら修正点は見つかってしまうでしょう.

↓DAC基板.AK4490をとりあえず載せてます.両面98x85mm.最終的に4層基板にするので暫定版です.3.5MM JACKが3つある理由は、通常のLRchだけでなく、差動のLch/Rchを設けてあるため.電源は12V入力から、10/7/5/3.3/-5Vを基板上で生成しています.電源電圧が多い基板はかったるいです.
↓試験用PCM5101基板.まぁこれはどーでもいい.

発注先はいつものJLCPCB.
各5枚づつで、送料を含めて$23です.安いよねー

これで10日間ぐらいはDDC業務から解放されるので別の用件を済まそうと思います.
2階にバスルームをつくろうと思っているんですけど、10日間で終わるわけもなし.

かしこ


追記:進捗状況はたぶん深圳の現地時間だと思います.日本時間の今夜21時ごろに出来上がるみたいよ.つうか24時まで生産ライン動かしてるんですか? それで朝4時にはもうラインが動いてる? よく働く人たちだなぁ.
1  MI      2020-09-28 21:03:48         これ何だろう?
2  Drilling      2020-09-28 23:08:59        穴あけ
3  Copper Deposition      2020-09-28 23:17:21       スルーホールメッキ
4  Image the outer layers      2020-09-29 04:29:59        露光
5  Pattern Plating     2020-09-29 09:43:08       エッチング
6  Automatic Optical Inspection(AOI)       2020-09-29 16:33:01     光検
7  Solder Mask        2020-09-30 00:37:50       ハンダレジスト
8  Silkscreen        2020-09-30 00:39:50         シルク印刷
9  Hot Air Solder Leveling(HASL)        2020-09-30 00:41:49       半田メッキ
10  Electrical Test        2020-09-30 14:20:04       導通試験
11  Profiling,V-cut scoring        2020-09-30 17:00:15     切断
12  Final inspection        2020-09-30 17:51:38      出荷検査
13  Delivery             出荷

2020年9月27日日曜日

すがさん....

新しい総理大臣の菅さんからは、公安九課の荒巻課長のこのコマを思い出すんです.

荒巻課長がコントロールする対象はテロリストです.菅さんがコントロールする対象は役人です.菅さんは「霞が関壊滅より存続させてコントロールすることです」と思ってるんじゃないかな? 役人のコントロールが得意なのは自他共に認めるところのようですし.

菅さんは電波事業にはあれこれと口出しするみたいですから、「ケータイ料金下げてくれて有難う菅さん」みたいな場面を見ることになるんだろうなぁ.でもそれって「水戸黄門様、悪代官を成敗してくださって有難う」と根は同じで、黄門様が死んだら別の悪代官が跋扈するわけです.目先の改革とやらで有難うもなかろうにとわたしは思います.ケータイ料金を下げたとしても、もっと大きな悪代官であるNHKを潰せないようではショボイったらないわー.

霞が関をコントロールするのがわたしの得意技であり、そこから派生する成果にご期待ください、と菅さんが言うのだとしたら、それは霞が関隷属の一つのパターンです.アンチ巨人軍という巨人軍隷属形態が昭和時代に在りましたが、あれと同類.

国際情勢は事実上第四次世界大戦に突入しているとわたしは思いますので、安全保障が経済に優越する様相は強まりこそすれ弱まる可能性は少ないでしょう.そんな中で菅さんが霞が関相手のバトルにかまけるつもりなのだとしたら、focusがズレてると思わずにいられません.安全保障優越の時節にインバウンド期待はないでしょうし.

保守業界人は概ね菅新総理を歓迎する御意向のようですが、youtubeでそう言う彼らを見ると痛々しいです.本当は不安や不信を感じていつつも虚勢を張っている風にわたしには見える.上念司は、菅さん期待ですよ~と喋りまくっているけれど果たしてそうかな? 馬淵大使は保守業界人では比較的珍しく、USに刺されて短命政権で終わると言ってます.わたしは後者にリアリティを感じます.
また、安倍さんに三度目の総理になれと期待するヒトもいますけど、表面的にそれが妥当に見えたとしても、諸事情がそれを許さないでしょう.

以上のように、ひら的には菅さんに批判的ですけど、しがらみで何も出来なくなった安倍政権の最期の3年間よりは菅政権に期待します.

願わくば菅さんがこんな古狸だったら楽しいんですがねー.これは攻殻機動隊に出て来る総理大臣です.

かしこ

2020年9月25日金曜日

また水虫に罹りました、お恥ずかしい....

なんか水虫って恥ずかしいんです.肝硬変なら恥ずかしくないですけど.

3か月ほど前に、足の側面に1cmぐらいの赤斑ができ、やがて角質化した表面が剥がれたら今度は直径が拡大し始めて、現在3cmぐらいまで成長しています.

表面は水虫っぽいんだけど、痒みは無いです.それに水虫って指と指の間に出来ることが多いわけですけど足の側面ですからこれは何だろう?

さきほど皮膚科を受診しました.皮膚表面サンプルを顕微鏡で観察して水虫が確定しました.痒みの無い水虫もあるんだそうです.

先生が「飲んでるクスリはありますか?」と聞くので、高血圧と高脂血症治療薬飲んでますと申告.

センセイは薬剤名も知りたそうだったので、

「アレジオンと、、、」

「ん? それはちがくない?」

「あそうでした、アレジオンは鼻炎ですね、、、、アムロピジンでした.血圧はそれです.高脂血は忘れました」

会計待ちをしていて、やっぱガンダムシリーズは記憶に残るんだよなぁと思いつつ、「アムロセイラ」「デギンドズル」などと口走らないでよかったと胸をなでおろしていたわたしでした.

自分へのお見舞いとしてムー最新号を買いました.

かしこ

4連休が過ぎてもアートワーク

告知です.
コミケ99にて当社のDDC/DACを頒布いたします.
  日付   2021年12月31日(金) 東地区 テ-40b  東5ホール
  サークル名    bangflat
コミケにお越しの際はお立ち寄りいただけますとありがたいです.
商品紹介ページを作りました.
ーーーー
みなさんこんばんは、アニメの観過ぎ、ヒラサカです.

4連休が過ぎてもアートワークばっかりやってます.

↓DDCにLCDを付けました.サンプリング周波数とbit数が表示されないと何を聴いてるのか判んなくて不便ですからね.ブレッドボードはこんな状況.LCDは中華様で¥150ぐらいで売ってる1602ってやつ.秋月だと¥500ぐらいですかね.
赤い基板がRev.2のDDC基板ですが、またもやジャンパー線でぐちゃぐちゃになっています.

↓Rev.3 DDC基板のアートワークはこんなにしました.長辺が98mmってところがミソでして、JLCPCBのプリント基板価格が100x100mm以下ならイニシャルコストが大幅に安いんです.

それでもってこの基板の上に重ねてDAC基板を載せます.開発試作なのでAK4490でも載せときますかね.上の写真のほぼ全部をケースに納めます.

ケースは知り合いの工場で作ってもらうことで商談成立しました.  >  2k殿よろしく

かしこ

2020年9月23日水曜日

冴えない彼女の育て方fine. BD全裸待機中

こんにちは.アニメの観過ぎ、ヒラサカです.

出荷されたのはサイトで確認済なんだけど、「冴えカノ BD」は今日来るのかな?

昨日はアニメ1期2期を復習済みで全裸待機しているところ.佐川さん今何処ですかぁ?

ところで以前から思っているのですがこの2人って時空を超えてキャラが被っていると思うんですね.黒髪ロング、ぼっち、基本的につっぱり、本性は乙女、マニア好みのぶってぇ太もも.年齢的には鮎川ちゃんは50歳ぐらいのはずです.

ブツが到着したら続報しまぁす.

------
16時、冴えないブツが到着.比較のため置いたCDケースは本文とは関係ありません.BDなのに箱が巨大なのは、タペストリーが入っているからだと思います.
↓sofmap通販で買った理由は、特典が詩羽先輩だからです.なんと、詩羽先輩大人バージョンときた.うれしいじゃん.他の2人も大人バージョンなのかねぇ?

↓冴えない箱が巨大な理由のもうひとつがこれ.730x515mmサイズのポスター.紙の印刷じゃなくてプラスチックフィルムなんです.それゆえ発色はやや劣る.裏から光を当てて透過光で鑑賞すべきものと言えるでしょう.冴えカノFANは誰でも巨大なトレス台を家に持っているので無問題さ.なっそうだろ?

↓チロッとキーホルダーも入ってました.
↓ほいだばBDへ.まずはBOXカバーは、帯がこちら側だったのでこちらが表面なのでしょう.坂の上の加藤.
そしてBOXカバー裏面.エリリ、せつないのぅ.
↓中箱を開いた状態.あぁぁ此処かぁ.
そして中箱の裏には物件広告が.
1LDKだけど占有面積70平米なので都心では十分広い物件と言えるでしょう.70平米のマンションで4人家族とかザラですからねぇ.池袋駅徒歩10分.しかもこれを2つ借りるとはやりくりが大変そう.
↓さらにその中にDISK CASEがあります.ドラマCD,本編BD,BGMです.
この裏面には関係者全員がいます.伊織もいます.
本編チェックへと移ります.

-----
まず最初にこのシーンでゲラゲラ笑ってから、、、、、サラッと観た感じでは、カットの描き直しはやってない気がしました.

ラストの乾杯シーンの後の声優同士の会話が少し入ってます.1分ぐらいですけどね.

ゲーム版のOPが入っています.TVや劇場版を観てもいずみちゃんキャラをじっくりと拝見するのは難しかったのですが、この動画ではじっくりと見れるデス.微妙な違いを出すために別の絵師に描かせたんですかね???  →なかじまゆか という同人作家でした

バルド9の舞台挨拶動画が入ってます.約30分.こりゃいいわ.

------
ドラマCDについて (トータル28分)
1)加藤&エリリ      ゴメンね会話
2)詩羽&みちる      加藤との破局に期待するダークな詩羽先輩
3)ともや&いずみ&エリリ&加藤       高校卒業の日

まぁドラマCDはそんなに良かったとかいう感想はないかな.

------
これで冴えカノはおしまいなのでしょう.good endingでしたけど喪失感ありありです.

独特な作品が世に出たもんだとつくづく思います.要素的には、ヲタクネタ、業界ネタ、美少女、ラブコメ、ツインテール、ツンデレ、、、、などなどテンプレ要素で胸やけ起こしそうです.フツーだったら相当つまんねぇ作品に堕落しそうなもんですが、堕落圧力を跳ねのけて、ヒラサカ歴代3位作品になりました.

実をいうと失礼ながら、監督の亀井幹太さんの過去作品にはさほど注目するべき作品は無いなぁと思っているんです.なのですが、冴えカノではTV版~劇場版まで良いカットと画面レイアウトを繰り出してくれました.
例えばこのシーンに至るまでの、風呂場から階段を昇って部屋の前で立ち止まってフルチンの流れはオーソドックスながらもロングとアップとパンを緩急自在に多用して良く練って絵コンテ描いたなぁと感心します.
毎話1回ぐらいはこのようなレイアウトも出てきますけど、暴走はないです.若手監督の暴走も楽しいけど、冴えカノはベテランのテクで作られていました.

脚本は丸戸さんによるキャラの味付けの勝利でしょう.
物語の始まりは高校2年生のヲタサーラブコメでした.高校サークルの人間模様に色を添えるだけかと思った登場人物の個性がそのまま商業プロダクションのドロドロにまで連続的に持ち上がって行った構成の巧みさに脱帽です.

古いアニメほど、登場人物の挫折や成長や改心を描きたがる傾向があると思います.ところが冴えカノはそれとは逆で、キャラの気質が変わらないゆえに物語が展開してゆく点が面白いと思うんです.
冴えカノの登場人物は誰も彼も利己的で、好意を寄せる相手にゴマする事すら眼中にない.一貫してそんな奴らですが、彼らを取り巻く環境が変化するので物語が展開します.彼らは戦術を変える必要に迫られたり、協力者を組み替えたりして対処してゆきます.

そういう構造の脚本って非常に今日的だと思うんです.日常に潜在する生存戦略を描いたラブコメとでもいいましょうか.そこに目を付けた丸戸さんは偉いんじゃないでしょうか?

冴えかの、借りかの、謎かの、ドメかの、、、全部好きで困る.

かしこ

2020年9月22日火曜日

4連休はアートワーク

告知です.
コミケ99にて当社のDDC/DACを頒布いたします.
  日付   2021年12月31日(金) 東地区 テ-40b  東5ホール
  サークル名    bangflat
コミケにお越しの際はお立ち寄りいただけますとありがたいです.
商品紹介ページを作りました.

ーーーー
昨夜近所のノムネンに行ったら混んでました.人々がどんどん街に出ているようで好ましい.逆に、ガラ空き貸し切り状態のノムネンでお店の人と飲んでいた頃を懐かしむわたしです.
昨日の高速道路渋滞は60kmなどと酷かったようで、行楽地の皆様におかれましても明けましておめでとうございます.
コロナが解禁されても飲み屋の客は戻らないと予想するヒトもいたのだけれど、わたしは6月の新橋の飲み屋がマッハの速度で混雑モードに戻ったのを見てたので客はすぐ戻るぞと思っとりました.その後すぐにコロナ第2波が来てスッカラカンの夏休みだったわけですけどね、ひー

わたしはこの4連休はずーっとヒッキーでずーっとアートワークしてます.

HAMMOND 1590Bに例のDDCと、それに2段重ねでDACを載せようかと思うのです.
DDCはこのように納まりました.まぁ円満.

ところがDACを1590Bに納めるのは無理っぽい.
オーディオ回路には 3.5MM JACK、DIP IC、DC JACK、電界コン、フィルムコン、、などの前世紀の巨大パーツが多すぎます.パーツを置いた画面でこりゃダメだと悟りました.諸般の事情によりこの画面でも控えめなパーツ数なんです.

はい、ご破算.

かしこ

2020年9月21日月曜日

宇宙飛行士になれるヒトは滅多にいない、まして藤井聡太においておや

昭和育ちのヒラサカとしては、ネットワークビジネスというとAmwayを思い出します.かつて所属したソニーマグネスケールで大流行して同世代の者達が目の色を変えてビタミン売ってたあれは何だったのだろう? 君達の閉塞状況は理解するが、Amwayはその打開策にはならないってどうして分からないかな?と軽蔑して観察してました.一方その頃わたしは転職活動してました.

それから四半世紀が経った現在、ネットワークビジネスとはAmwayほど限定された意味ではなく、SNSで知り合った者同士がZOOMのvirtual meetingでなにか起業する場面を指す用語に変わったように思います.

ウチの奥さんもそんな活動をしていて「今夜はZOOM」などと言って毎晩のようにmeetingしています.定職についていないウチの奥さんが暇なのはわかりますけど、他のZOOM参加者がどうしてあれほど暇を持て余しているのか不思議です.

リビングでZOOMしていると会話の内容はそれとなくわたしの耳に入ります.

ZOOM GPの中に非常にユニークな持論を展開する人がいるんです.彼の主題は「一度でいいから限界超えてみろ」なんです.2~3回聞いたかな.その度にわたしは椅子からズリ落ちそうになりんす.
彼は自分の業務で限界を超えた体験をしたそうです.その体験から「大抵のヒトが現状打破できずに停滞している.だが限界超え体験をすれば誰でも現状打破できる」と確信したようなのです.なので、新ビジネスにもその気概で取り組むべきだ!との論旨で参加者のモチベーションを高めようとなさるわけですね.

あははー、それってSNS projectのモチベーションアップには通用しないから.(爆笑)

限界突破氏はこんなことも言ってました.「オリンピック選手は『もう競技辞めたい楽しくない』と思っているけど、限界を突破する気力で闘っているのだ」

それは正しい.そこまで判っていながら、どうして凡百の者共相手に「限界突破のススメ」なんて説けるのかな?

限界突破出来る奴は普段から何度も限界突破しているものです.限界突破出来ない奴は一度も限界突破せずに凡庸な人生を送ります.他人から促されようとしまいと各個人の限界突破能力は最初から決まっていて不変です.だから限界突破説はprojectのモチベーションアップに寄与しません.

そもそも他人に促されてする限界突破なんか限界突破と呼べないと思います.

成功したらIPOみたいな報酬刺激でする限界突破なんか業務上の優先順位問題に過ぎません.だから限界突破氏の言う「業務で初めて限界突破した」なんかそれを限界突破にカウントすんなよといいたい(笑).そんなの金銭で目の色変えてるAmway参加者と同ランクじゃないですか.

無報酬だけど達成欲求が止まらない状態なら限界突破とカウントして良いと思いますがね.

子供に向かって「夢をあきらめるな、夢を捨てなければいつか必ず夢は叶う」と言った日本人宇宙飛行士がいました.反吐が出るぜ!と思いました.理系のクセに、必要条件をあたかも十分条件の如く語るのはキモイからやめろ.でもその宇宙飛行士のイミフな全能感って限界突破氏のそれと似てるんだよな.

限界突破氏には是非こう断言して笑いものになってもらいたい.

「限界突破すれば誰でも藤井聡太に将棋で勝てる!」

ありえん

2020年9月20日日曜日

「スナック希世乃」全裸待機中

20:00からの「スナック希世乃」待機中です.

誰が来るのかなぁ?

ひら予想 → ミチル

ではまたのちほど....

-----
始まりました.スナック会場は前回と違います.広いカウンターだなぁ.
原作の丸戸センセイ、アニメP、宣伝担当、が登場.原作者の顔は映らないらしい.
声優は来ないのかな?

おっさん3人+加藤の業界人飲み会になっとる.

fine. BDの宣伝.ドラマCDがあるんだね.コメンタリーは声優とスタッフの2種類.

恵ママが「GLISTENING♭」「ULTIMATE♭」を歌います.ウム、これはいいね.

生セリフ「なにひとつ間違ってないよ、あたしの望んだ通りだよ」のシーン.恥ずい.

いやはや、¥2000支払ってBDの宣伝を見せていただきまして大変ありがとうございました.  >  アニプレックスさま

次回は10月16日(金)でぇす.


#アニメ版SAOが終わり、キリトの両親を初めて見たのと、キリトってまだ高校二年なんですって? アスナと200年も暮らした高校二年生とは、いやはや恐れ入りやした.

かしこ

2020年9月19日土曜日

さて、明日は「スナック希世乃」第二回だ

皆さんこんばんわ.アニメの観過ぎ、ヒラサカです.今日は「生徒会役員共」を観ています.第一期OPのモザイクはOVA版では解除されています.読者の皆さんはアニメなんか観てないでバーベQをお楽しみください.

4連休明けの9月23日は、何歳になるのやら不明ですが加藤恵の誕生日であるだけでなく、「冴えない彼女の育て方 fine.」のBD発売日.

その直前に「スナック希世乃」が営業します.→こちら

サブタイトルは、「初めてのお客様!何が飛び出す?冴えカノ祭り」ってなわけで、詩羽先輩かエリリのどちらかがご来店するんじゃないのかね?

楽しみだぞぅ.後日レポします.

なお、第1回は¥1500でしたが、第2回は¥2000にインフレした模様です.

かしこ

STM32でDCC/DDCを作る方向で (62) AK4495でDSD 設計情報(最終回)

告知です.
コミケ99にて当社のDDC/DACを頒布いたします.
  日付   2021年12月31日(金) 東地区 テ-40b  東5ホール
  サークル名    bangflat
コミケにお越しの際はお立ち寄りいただけますとありがたいです.
商品紹介ページを作りました.
ーーーー
STM32でDCC/DDCを作ろう!    AK4495でDSDを聴こう!      INDEXページへ
DSD64/128の音が出たので、今回で最終回にしたいと思います.

走馬灯の如く過去を振り返ります.

一時期ラズパイオーディオをやろうとしたのだけど、あれってDDCの代用品のためにラズパイを活用してるだけじゃんと気づきました.windowsから制御できるUSB HiRes DACが一番使い勝手がイイじゃん.それでDDCを開発し始めました.2019年11月のことでした.
最初はEZ-USBを使って開発して音が出るところまで辿り着いたのだけれど、なんと、feedbackの実装がEZ-USBでは不可能と思われEZ-USBの使用を断念.
世界がコロナでうきゃきゃだった2020年4月からSTM32でDDCを実装するべく活動開始しました.

STM32CubeMXのUSB Audio Class 1.0サンプルをフルに参考にして現在に至ります.

------
以下では設計資料を書きます.
♪なにから伝えればいいのか? わからないまま時は流れて♪

当連載の41~57で説明した時点では、DSDは未実装でした.以下ではDSDを実装したversionを説明します.DSDへの変更点だけを説明します.なので大枠については連載41~57を見てもらうしかないですね.

回路図やcodeへのリンクINDEXページに貼っておきます.わたしは著作権を主張しませんけど、STMのsample codeのlicenseが何かしらあるんだろうね、でもそれがどーなってるかは知らないや.なお、情報の誤りやbugが在ったとしてもわたしは謝罪も賠償も一切しないので自己責任で素直に死ぬなりPCを蹴とばすなり好きにしてくださいね

あと、いずれこのプリント基板+DAC基板を通信販売しますのでその時にはよろしくです.今期中にはECを立ち上げたいなぁ.


【DDC device仕様】
ホストマシン       windows10のみ  (Linuxは未検証)
ホストデバドラ    win10標準のUSB Audio Class 2.0デバイスドライバ
ホストインターフェース      USB 2.0
USBクラス         USB Audio Class 2.0、ただしDSDではDoP
DACインターフェース       I2S
DAC制御インターフェース      I2C(400kHz)
DAC対応         とりあえずAK4495
DAC clock        当基板上のXTALがmaster clock
DAC BITCLK jitter      TBD      (あぁTIA欲しい.....)
対応フォーマット
     PCM     16/24/32bit   44.1/48/88.2/96/176.4/192/352.8/384kHz
     DSD     DSD64=2.8MHz、DSD128=5.6MHz   ※
レイテンシ    TBD
電源             USBバスパワー
消費電流       180mA実測(LEDインジケータ含む/DACを除く)
使用温度       常温

※1:DoPが動く再生アプリと動かない再生アプリがある.TuneBrowserはOKだが、foobar2000 Rev1.6ではNG.その他のアプリは試していない.

※2:WASAPIは動くが、ASIOは動かない


【回路・基板】
おおまかにはこんなモノが基板に乗っかってます.
STM32        USB処理
USB3300     USB2.0 highspeed interface
XC9536        I2S interface
RS232         内部状態モニタのため
PCM5101     モニタ用DAC    32bit/384kHz
ICについて散文的に説明しておきます.

STM32
STM32ラインナップではlow endな部類のSTM32F205を使っています.USB2.0が動くSTM32で一番下のランクじゃないかな.そんなんでDDCが動くのか?が開発のkey pointでしたけど、読者のご協力を得て結果的に動かせました.
ほとんどの処理をperipheralとDMAと割り込みにお任せなのが組み込みCPUのパターンなので、CPUはシーケンサかっつうぐらいの軽い仕事しかしません、一つの例外を除いて.
例外とは、Little Endian→Big Endian変換です.これだけはCPUに働いてもらっています.32bit384kHzではCPUの1/3ぐらいの労力を割いています.

USB Audio Class 2.0のIFをやってもらっています.sample codeのおかげで楽してます.sample codeはUAC1.0だったので、UAC2.0への変更はわたしがやりました.UAC2.0 descriptorの解説はこちらです.

DACをmaster clockで動かすので、USB streamはisochronousの非同期転送です.それゆえfeedbackが必須です.sample codeにはfeedbackが無かったのでそれもわたしが追記しました.1ms毎にレートの上げ下げをホストへ送信しています.→こちらで解説

STM32F205にはRAM容量が64/96/128kbytesの3種あります.いま使ってるのは96kbytesのものです.audio stream bufferにドカッと割り振って60kBぐらい使ってるかんじ.つまるところfeedbackの安定度が高ければもっと浅いbufferでも良いわけで、浅くしても大丈夫だと思っています.やってないだけ.
FLASHは70kbytesぐらいしか消費してません.

audio streamを出すのはSPI1/SPI3を使っています.PCMではSPI1のみ.DSDではSPI1をLchにSPI3をRchに使います.
SPIのサブ機能でそのものズバリのI2SもSTM32に在るのですが使っていません.事情は少々複雑で、SPI1にはI2Sが無いです.SPI2SPI3にはI2Sがありますがbitrate的に32bit192kHzまでしか出せません.なのでSTM32F205のI2Sはボツ.
SPIを使うとLRCKを自分で生成しなくちゃいけなくなります.そのためXC9536を使っています.

DSD対応のためにはDACに「DSDである」「PCMである」と教えてやらねばなりません.DSD対応DACとしてAK4495をひとまず使っています.AK4495のレジスタ設定をするためにI2Cを使います.
PCM5101のような、I2Sを繋げば動くDACならI2CによるDAC制御は不要ですが、AK4495の機能を使いこなすにはI2Cによる制御をしたくなります.

USB3300
STM32のプロセスはUSB2.0の480MHzを増幅できるanalogアンプを含まないのだと想像します.そのためかSTM32はハイエンドCPUに至るまでPhyを内蔵してないんです.仕方なくUSB3300を外付けです.USB3300の価格は中華通販で¥90ぐらいと安いのですがプリント基板はめんどくさいです.

XC9536
ロジック回路です.3つの機能を持ちます.
1)master clock及びbitclkを生成します.源発振は2つのXTALで、44.1kHz系には45.1564MHz、48kHz系には49.152MHzです.STM32に制御されてXTAL選択、分周比選択を行います.
2)LRCKを生成します.SPIの最初のbitから32bit毎にLRCKを反転します.
3)STM32に制御されてDSD/PCMによってRchの信号線をDSD/LRCKの切り替えをします.これはAK4495のDSD信号線仕様がそうなっている事に起因します.

最終的にXC9536の制御線は増えて8本になってしまいました.こんなに増える予定じゃなかったんですがね.全てSTM32が出力する信号です.
PC9_reset       STM32がロジックをresetするための信号
PC8_restart     STM32がSPI-DMAを起動した後に、SPIへSCKを供給させる信号
PB2_clksel       44.1kHz系か48kHz系かのXTALを選択する信号
PA12_clkbothon    再生開始したら不要なXTALをOFFさせる信号
PB14_FS0, PB15_FS1     bitclk等の分周比選択信号(4種類)
PC7_DSD        DSD/PCMの選択信号
DSDR             DSD Rch bit stream.DSD時はLRCK線にこれを出す.

XC9536の主要な出力線です.
I2Sの仕様は32bit LR interleavedです.
I2S信号ではないMCKは何かというと、DACが要求するsys clockなんです.44.1kHz系再生時には22.5782MHz、48kHz系再生時には24.576MHzを出力します.
SCK         SPIへ与えるmaster clock
BCK         DACへ与えるbit clock
LRCK       DACへ与えるLRCK
MCK        DACへ与える22.5782MHzまたは24.576MHz

clk生成するロジック回路は、SPIとDACにとっての最初のbitの諸事情によりBCK=SCKではダメで、timing合わせだの極性反転だのをグダグダとやっています.連載51回でも解説しましたがドロドロしていてマジメに解説する気が起きません.放置プレイ.

RS232、FT232RL
STM32のステートをCOM portへ出力させています.こんなものがterminalに表示されます.
----------F205 USB HS start------------
80 06 0100 0000 0040 -->device ctlsenddata len=18
00 05 001b 0000 0000 -->setaddress
80 06 0200 0000 0109 -->config HS ctlsenddata len=265
80 06 0302 0409 00ff -->string PRODUCT "STM32 Audio Class" 
80 06 0200 0000 0109 -->config HS ctlsenddata len=265
00 09 0001 0000 0000 -->setconfig
01 0b 0000 0001 0000 -->Set Alt0 STOP
a1 02 0100 1200 0100 get clock list
01 0b 0003 0001 0000 -->Set Alt3 32bit STOP
01 0b 0000 0001 0000 -->Set Alt0 STOP
21 01 0100 1200 0004 SET clock frequency Fs=384000 Hz STOP
01 0b 0003 0001 0000 -->Set Alt3 32bit
STOP PKTSTART WAIT0 DACPCM WAIT1 PLAYPCM PLAYING PLAYING
01 0b 0000 0001 0000 -->Set Alt0 STOP

【割り込みについて】
stm32f2xx_it.cに割り込みルーチンが記述されています.

HalfTransfer_CallBack_HS()
TransferComplete_CallBack_HS()
SPI-DMAの割り込みです.半分消化時点で生じる割り込みと、全部消化時点で生じる割り込みです.
消化物は、SPIで出力するaudio streamを積んだリングバッファです.
このルーチンでやっているのは2つ.
1)packetが来ないチェック
2)feedbackのため、リングバッファwrite pointerをsaveしておく

TIM3_IRQHandler()
1mSec周期割り込みです.
用途はひとつだけ、feedbackです.

TIM8_UP_TIM13_IRQHandler()
1Sec周期割り込みです.
UARTへ内部ステータスを出力するお仕事をしています.USB event発生時に逐次UARTへ出力するとUART業務に手間がかかってHOSTがtimeoutすることがあるので、event発生時はメモリに積むだけに止め、postprocess的に1Sec毎にUARTへ出力させています.

【DSDの音声波形と音質】
DDCはI2Sを出力するまでが仕事ですから、DSDの音声波形がどうなっているのかはDDCには無関係です.AK4495の責任区分です.AK4495出力波形を以下に示します.

↓まずは32bit 384kHz PCMの音楽波形、上がLch、下がRch
↓DSD64の音楽波形
↓DSD128の音楽波形
DSD64だけ波形がnoisyです.これは一体どうしたことか?
どうやらこれは、アンチエリアシングフィルタの設定がDSD64にマッチしていないのが原因らしい.DSD64のアンチエリアシングLPFには、cut-off 50kHzで、-20dB@100kHzぐらいが推奨されているんだってさ.ところが現状では100kHzで-2dBぐらいのLPFをAK4495の出力にかませているのでブロード過ぎるのです.DSD128ではエリアシングノイズが高域にシフトするのでナイスな波形になっている.そんな風に推測しています.

聴感ではどうか?
わたしは聴き慣れたDSD音源を持ってないので次の4つを比較しました.
1)CD rippingの原曲flac      16bit 44.1kHz PCM
2)1をwindowsがリアルタイムで変換したstream        32bit  384kHz PCM
3)1をDSD64に変換したstream        1bit  2.8MHz DSD
4)1をDSD128に変換したstream      1bit   5.6MHz DSD

DSD変換はこちらのアプリでやりました.

際立って音が異なるのは1でした.高音域が低レベルでおとなしい再生音です.
234は同じかなぁ.
DSD変換ソフトのフィルタ特性によって高音のピーキングが全然変わってしまうと思われますが、そこまでは試していません.


【STM32 ステート遷移図】
main()にステートの処理codeが記述されています.こんなステート遷移で動きます.

最初はSTOP状態です.packetが来始めます、ある程度バッファに溜まったらDACを設定して、SPI-DMAを起動して、再生開始になります.HOSTから再生開始の合図が来るのではなくて、packet drivenなわけですね.packetが来なくなったりFsが変更されたりしたら再生停止します.
ただし1ヶ所だけ、ゲロが出そうになるのを堪え切れない挙動があります.
再生開始してからDSD markerを検知してバッファをご破算、DAC設定をやり直し、というひでぶな遷移があるんです.PLAY→DSD→DACDSDのルートです.なんでこんな無茶な事をしているのでしょうか?
それは、windows HOSTがDoP markerを最初のpacketから出さず、数mSecぐらい後になってからDoP markerを出してくるんです.なんでそんな後出しじゃんけんをするのか、さっぱり訳が分かりません.それに対処するべく、再生開始から20mSecほどはDoP markerを監視し続け、DoP markerを検知したらご破算のやり直しDSDへ突入させるルートを設けてあるんです.
こんな死亡遊戯をしているので、DSDの再生先頭でプツッと音声にノイズが出ます.DACをmuteするなど、改善の余地があります.


【USBD_AUDIO_DataOut()】
stream packet処理の中心地である関数を説明します.
packet毎(125uSec)にここに飛んできます.
static uint8_t  USBD_AUDIO_DataOut()
{
  if (epnum == AUDIO_OUT_EP)      stream packetのEP1であるか?
  {
何bytesのstreamを受信したか?
  rcvcnt = USBD_GetRxCount(pdev, AUDIO_OUT_EP);

DoP markerをチェックする.
最初に、Alt=1 16bitならPCMです.Alt=3 32bitならPCMです.DSDである可能性があるのはAlt=2 24bitの場合です.
DSDであれば L[0],L[1],marker,R[0],R[1],marker という6bytes単位でstreamが入ってきます.3bytes毎にいるmarkerを監視します.markerは05,05,FA,FAのパターンで並びます.下記ではpacket先頭の連続する6つのmarkerをチェックしています.2連続packetをチェックします.
  if( Alt==0 ) { dsd=0; dsd_old=0; }
  else if( Alt==1 ) { dsd=0; dsd_old=0; } // 16bit
  else if( Alt==3 ) { dsd=0; dsd_old=0; } // 32bit
  else { // 24bit
  uint8_t x0,x1,x2,x3,x4,x5;
  if(haudio->buffer_writing==0) {
  x0 =  haudio->buffer_packet0[2];    // L(0)
  x1 =  haudio->buffer_packet0[2+3];  // R(0)
  x2 = ~haudio->buffer_packet0[2+6];  // L(1)
  x3 = ~haudio->buffer_packet0[2+9];  // R(1)
  x4 =  haudio->buffer_packet0[2+12]; // L(2)
  x5 =  haudio->buffer_packet0[2+15]; // R(2)
  }
  else {
  x0 =  haudio->buffer_packet1[2];    // L(0)
  x1 =  haudio->buffer_packet1[2+3];  // R(0)
  x2 = ~haudio->buffer_packet1[2+6];  // L(1)
  x3 = ~haudio->buffer_packet1[2+9];  // R(1)
  x4 =  haudio->buffer_packet1[2+12]; // L(2)
  x5 =  haudio->buffer_packet1[2+15]; // R(2)
  }
  if( ( x0==5 && x1==5 && x2==5 && x3==5 && x4==5 && x5==5 )
  || ( x0==FA && x1==FA && x2==FA && x3==FA && x4==FA &&
   x5==FA ) ) {
  if(dsd_old==1) dsd=1; // comfirm 2 sequential packets.
  else dsd_old=1;
  }
  }

packetをバッファへコピーします.
DSDの場合.markerは捨てて音声のみをコピーします.その際、コピー先バッファはL/Rchで別々にします.pbufDSD16LとpbufDSD16Rがコピー先です.
バッファ深さを越えたら先頭へ戻る.
  if(dsd==1) {
    中略
  while(i++<size) {
  lp[1] = *psrc8++; // L lower
  lp[0] = *psrc8++; // L higher
  psrc8++;
  rp[1] = *psrc8++; // R lower
  rp[0] = *psrc8++; // R higher
  psrc8++;
  *pdst16L++ = l;
  *pdst16R++ = r;
  if(pdst16L>=&pbufDSD16L[AUDIO_DSD_BUF_SIZE]) 
   pdst16L=pbufDSD16L; // destination buf full rollback
  if(pdst16R>=&pbufDSD16R[AUDIO_DSD_BUF_SIZE])
   pdst16R=pbufDSD16R; // destination buf full rollback
  }
  }

packetをバッファへコピーします.
PCMではL/Rchを1本のバッファへコピーします.pbufPCM32がコピー先です.
ただし、16/24/32bitによってコピーのやり方が異なります.
16bitでは、2bytesを4bytesへコピーします.下位2bytesはゼロ埋めします.
24bitでは、3bytesを4bytesへコピーします.下位1bytesはゼロ埋めします.
32bitでは、4bytesを4bytesへコピーします.
バッファ深さを越えたら先頭へ戻る.
  else {
  switch(Alt) {
    case 1: //16bit
    中略
    while(i++<size) {
    p[1] = *psrc8++;
    p[0] = *psrc8++;
    *pdst32++ = t; // LE to BE convert
    if(pdst32>=&pbufPCM32[ AUDIO_PCM_BUF_SIZE ])
pdst32 = pbufPCM32; // destination buf full rollback
    }
    break;
     case 2: // 24bit
    中略
     while(i++<size) {
     p[2] = *psrc8++;
     p[1] = *psrc8++;
     p[0] = *psrc8++;
     *pdst32++ = t; // LE to BE convert
     if(pdst32>=&pbufPCM32[ AUDIO_PCM_BUF_SIZE ]) 
   pdst32 = pbufPCM32; // destination buf full rollback
    }
    break;
     case 3: // 32bit
    中略
     while(i++<size) {
     *pdst32++ = __REV(*psrc32++); // LE to BE convert
     if(pdst32>=&pbufPCM32[ AUDIO_PCM_BUF_SIZE ]) 
   pdst32 = pbufPCM32; // destination buf full rollback
    }
    break;
     default:;
  }
  }

コピー先バッファポインタを更新する.
DSDでは、packet byte/3 進む.単位はbytes.
バッファ深さを越えたら先頭へ戻る.
  if(dsd==1) { // DSD
  haudio->wr_ptr_DSD_L += rcvcnt/3;
  haudio->wr_ptr_DSD_R += rcvcnt/3;
  if(haudio->wr_ptr_DSD_L >= AUDIO_DSD_BUF_SIZE) { // overflow
  haudio->wr_ptr_DSD_L -= AUDIO_DSD_BUF_SIZE; // rollback
  HAL_GPIO_TogglePin(BUF_WRTOP_PRT, BUF_WRTOP_BIT);
  }
  if(haudio->wr_ptr_DSD_R >= AUDIO_DSD_BUF_SIZE) { // overflow
  haudio->wr_ptr_DSD_R -= AUDIO_DSD_BUF_SIZE; // rollback
  }
  }

コピー先バッファポインタを更新する.
PCMでは、16bit/24bit/32bitによって進むbyte数が異なります.
バッファ深さを越えたら先頭へ戻る.
  else { // PCM
  switch(Alt) {
    case 1: //16bit
    haudio->wr_ptr += rcvcnt*2; // 16bit -> 32bit
    break;
    case 2: // 24bit
    haudio->wr_ptr += rcvcnt*4/3; // 24bit -> 32bit
    break;
    case 3: // 32bit
    haudio->wr_ptr += rcvcnt; // 32bit -> 32bit
    break;
    default:;
  }
  if(haudio->wr_ptr >= AUDIO_PCM_BUF_SIZE) { // overflow
    haudio->wr_ptr -= AUDIO_PCM_BUF_SIZE; // rollback
    HAL_GPIO_TogglePin(BUF_WRTOP_PRT, BUF_WRTOP_BIT);
    }
  }

再生先頭で、かつバッファ半分までstream dataが溜まったらSPI-DMAを起動する.
DSDでは、SPI1とSPI3のDMAを起動する.
ロジック回路をstartし、SCKがSPIへ与えられるようにする.
  if(dsd==1) { // DSD
if (haudio->wr_ptr_DSD_L >= AUDIO_DSD_BUF_SIZE/2) {
   if (audio_cmd == AUDIO_CMD_WAIT1) { // 1st time ?
// off no-use clock
HAL_GPIO_WritePin(FPGA_CKBON_PRT, FPGA_CKBON_BIT, 0);
// reset logic
HAL_GPIO_WritePin(FPGA_RESTART_PRT, FPGA_RESTART_BIT, 1);
// SPI start DSD
HAL_SPI_Transmit_DMA(&hspi1, pbufDSD16L, AUDIO_DSD_BUF_SIZE);
HAL_SPI_Transmit_DMA(&hspi3, pbufDSD16R, AUDIO_DSD_BUF_SIZE);
// start logic
HAL_GPIO_WritePin(FPGA_RESTART_PRT, FPGA_RESTART_BIT, 0);
audio_cmd = AUDIO_CMD_PLAYING; // PLAY
   }
}
  }

再生先頭で、かつバッファ半分までstream dataが溜まったらSPI-DMAを起動する.
PCMでは、SPI1のDMAを起動する.
ロジック回路をstartし、SCKがSPIへ与えられるようにする.
  else { // PCM
if (haudio->wr_ptr >= AUDIO_PCM_BUF_SIZE/2) {
   if (audio_cmd == AUDIO_CMD_WAIT1) { // 1st time ?
HAL_GPIO_TogglePin(BUF_RDTOP_PRT, BUF_RDTOP_BIT);
// off no-use clock
HAL_GPIO_WritePin(FPGA_CKBON_PRT, FPGA_CKBON_BIT, 0);
// reset logic
HAL_GPIO_WritePin(FPGA_RESTART_PRT, FPGA_RESTART_BIT, 1);
// SPI start PCM
HAL_SPI_Transmit_DMA(&hspi1, pbufPCM32, AUDIO_PCM_BUF_SIZE);
// start logic
HAL_GPIO_WritePin(FPGA_RESTART_PRT, FPGA_RESTART_BIT, 0);
audio_cmd = AUDIO_CMD_PLAY; // PLAY
  }
     }
}

次回のpacketを読む準備をする.
packetバッファは0と1の2本ある.書き込み中と読み出し中で操作を分けるため.
  if(haudio->buffer_writing==0)   {
  haudio->buffer_writing = 1;
  USBD_LL_PrepareReceive(pdev, AUDIO_OUT_EP, 
haudio->buffer_packet1, AUDIO_OUT_PACKET);
  }
  else  {
  haudio->buffer_writing = 0;
  USBD_LL_PrepareReceive(pdev, AUDIO_OUT_EP, 
haudio->buffer_packet0, AUDIO_OUT_PACKET);
  }

ステートを遷移させる.
最初のpacketが来たらSTOP→PKTSTARTへ遷移させます.
  if( audio_cmd == AUDIO_CMD_STOP) 
  audio_cmd = AUDIO_CMD_PKTSTART;
再生先頭でバッファが1/4埋まったらDACPCMまたはDACDSDへ遷移させる.
  else if( audio_cmd == AUDIO_CMD_WAIT0 ) {
  if( haudio->wr_ptr > AUDIO_PCM_BUF_SIZE/4 ) 
audio_cmd = AUDIO_CMD_DACPCM;
  else if( haudio->wr_ptr_DSD_L >= AUDIO_DSD_BUF_SIZE/4 ) 
audio_cmd = AUDIO_CMD_DACDSD;
  }
再生開始からおよそ20mSec経過したらPLAY→PLAYINGに遷移させる.
再生開始からおよそ20mSec以前にDSDを検知したらPLAY→DSDに遷移させる.
  else if( audio_cmd == AUDIO_CMD_PLAY ) {
  sumrcvcnt += rcvcnt;
  if(sumrcvcnt > AUDIO_PCM_BUF_SIZE*16) 
  audio_cmd = AUDIO_CMD_PLAYING;
  else if(sumrcvcnt > AUDIO_DSD_BUF_SIZE*16) 
  audio_cmd = AUDIO_CMD_PLAYING;
  else if(dsd==1) audio_cmd = AUDIO_CMD_DSD;
  }


【main()のwhile loop】
main()のwhile loopではステート遷移をしています.
  
switch(audio_cmd)     ステートで分岐
  {
   case AUDIO_CMD_CHANGEALT:
   audio_cmd = AUDIO_CMD_STOP;
break;
   case AUDIO_CMD_CHANGEFS:
   audio_cmd = AUDIO_CMD_STOP;
break;
Packet来ない監視は別の場所で---SPI-DMAのcallback関数---で監視しています.現状はバッファ半周の間にpacketが来なければアウトォ!という監視アルゴリズムなのですが、これだと判定が厳格すぎるかもしれません.HOSTのUSB portに別のdeviceを挿した時などに一瞬audio streamが途切れてアウトォ!と判定されてしまいがちです.
   case AUDIO_CMD_NOPACKET:
    audio_cmd = AUDIO_CMD_STOP;
    break;
   case AUDIO_CMD_STOP:
各種クリア
  packetcnt=0;
        dsd=0; dsd_old=0;
        haudio->buffer_writing = 0U;
        haudio->wr_ptr = 0U;
        haudio->wr_ptr_DSD_L = 0U;
        haudio->wr_ptr_DSD_R = 0U;
        sumrcvcnt = 0;
SPI1とSPI3のDMAを強制停止
    while(HAL_SPI_DeInit(&hspi1)!=HAL_OK); // reset SPI1
    __HAL_RCC_SPI1_FORCE_RESET();
    __HAL_RCC_SPI1_RELEASE_RESET();
    MX_SPI1_Init();
     while(HAL_SPI_DeInit(&hspi3)!=HAL_OK); // reset SPI3
     __HAL_RCC_SPI3_FORCE_RESET();
     __HAL_RCC_SPI3_RELEASE_RESET();
     MX_SPI3_Init();
logic回路制御
     // FPGA clock both on to avoid XTAL unstability
    HAL_GPIO_WritePin(FPGA_CKBON_PRT, FPGA_CKBON_BIT, 1);
     // stop FPGA
    HAL_GPIO_WritePin(FPGA_RESTART_PRT, FPGA_RESTART_BIT, 1);
     // FPGA PCM mode (not DSD)
    HAL_GPIO_WritePin(FPGA_DSD_PRT, FPGA_DSD_BIT, 0);
Fs制御
    switch(Fs){
     case 44100  : fbc=AUDIO_Fs_44_FB; Fs_ctl=AUDIO_Fs_44;  break;
     case 48000  : fbc=AUDIO_Fs_48_FB; Fs_ctl=AUDIO_Fs_48;  break;
     case 44100*2: fbc=AUDIO_Fs_88_FB; Fs_ctl=AUDIO_Fs_88;  break;
     case 48000*2: fbc=AUDIO_Fs_96_FB; Fs_ctl=AUDIO_Fs_96;  break;
     case 44100*4: fbc=AUDIO_Fs176_FB; Fs_ctl=AUDIO_Fs_176; break;
     case 48000*4: fbc=AUDIO_Fs192_FB; Fs_ctl=AUDIO_Fs_192; break;
     case 44100*8: fbc=AUDIO_Fs352_FB; Fs_ctl=AUDIO_Fs_352; break;
     case 48000*8: fbc=AUDIO_Fs384_FB; Fs_ctl=AUDIO_Fs_384; break;
     default:      fbc=AUDIO_Fs_48_FB; Fs_ctl = AUDIO_Fs_48;  break;
    }
     // reset logic
    HAL_GPIO_WritePin(FPGA_RESET_PRT, FPGA_RESET_BIT, 1);
     // logic Fs select
HAL_GPIO_WritePin(FPGA_CKSEL_PRT, FPGA_CKSEL_BIT, (Fs_ctl&4)>>2 );
     // FPGA Fs select
HAL_GPIO_WritePin(FPGA_FS1_PRT,   FPGA_FS1_BIT,   (Fs_ctl&2)>>1 );
HAL_GPIO_WritePin(FPGA_FS0_PRT,   FPGA_FS0_BIT,    Fs_ctl&1 );
       // restart logic
HAL_GPIO_WritePin(FPGA_RESET_PRT, FPGA_RESET_BIT, 0);
    break;
    case AUDIO_CMD_PKTSTART:
     audio_cmd = AUDIO_CMD_WAIT0;
    break;
     case AUDIO_CMD_WAIT0:
    break;
DACをPCMモードに設定する
     case AUDIO_CMD_DACPCM:
    setAK4495(0,0);
    audio_cmd = AUDIO_CMD_WAIT1;
    break;
DACをDSDモードに設定する
     case AUDIO_CMD_DACDSD:
logic回路のFsをDSD用に変更する
if(Fs==176400) Fs_ctl = AUDIO_Fs_44;  
if(Fs==352800) Fs_ctl = AUDIO_Fs_88;
     // reset FPGA
    HAL_GPIO_WritePin(FPGA_RESET_PRT, FPGA_RESET_BIT, 1);
       // FPGA Fs select
HAL_GPIO_WritePin(FPGA_CKSEL_PRT, FPGA_CKSEL_BIT, (Fs_ctl&4)>>2 );
HAL_GPIO_WritePin(FPGA_FS1_PRT,   FPGA_FS1_BIT,   (Fs_ctl&2)>>1 );
HAL_GPIO_WritePin(FPGA_FS0_PRT,   FPGA_FS0_BIT,    Fs_ctl&1 );
     // FPGA DSD mode
    HAL_GPIO_WritePin(FPGA_DSD_PRT,   FPGA_DSD_BIT, 1);
setAK4495( 1, Fs==44100*8 ? 1 : 0); 
// restart logic
HAL_GPIO_WritePin(FPGA_RESET_PRT, FPGA_RESET_BIT, 0);
    audio_cmd = AUDIO_CMD_WAIT1;
break;
     case AUDIO_CMD_WAIT1:
break;
     case AUDIO_CMD_PLAY:
    break;
     case AUDIO_CMD_PLAYING:
    break;
再生開始してからDSDだと判ったとき、バッファをご破算してDSDでrestartする.
     case AUDIO_CMD_DSD: 
    HAL_GPIO_WritePin(FPGA_CKBON_PRT, FPGA_CKBON_BIT, 1);
    HAL_GPIO_WritePin(FPGA_RESTART_PRT, FPGA_RESTART_BIT, 1);
SPI-DMA強制停止
     while(HAL_SPI_DeInit(&hspi1)!=HAL_OK); // reset SPI1
     __HAL_RCC_SPI1_FORCE_RESET();
     __HAL_RCC_SPI1_RELEASE_RESET();
     MX_SPI1_Init();
     while(HAL_SPI_DeInit(&hspi3)!=HAL_OK); // reset SPI3
     __HAL_RCC_SPI3_FORCE_RESET();
     __HAL_RCC_SPI3_RELEASE_RESET();
     MX_SPI3_Init();
各種初期化、バッファご破算
        haudio->buffer_writing = 0U;
        haudio->wr_ptr = 0U;
        haudio->wr_ptr_DSD_L = 0U;
        haudio->wr_ptr_DSD_R = 0U;
DACをDSDモードに設定するステートへ飛ぶ
    audio_cmd = AUDIO_CMD_DACDSD;
    break;
     default:;
  }


かしこ

2020年9月14日月曜日

ARM売却おめでとうございます

ARMの売り先は中華経済結社内の会社転がしで決着しましたね。

ARMがNvidiaへ4兆円を超える額で売られたようです。見込みではなく売却済みという記事を今日目にしました。

今後はどーなりますかね?

ARMが今後も小型CPUのdefactoで居られるかどうか?
技術的には別にARMでなくても構いませんが、ビジネス的には誰もあのセグメントに進出しようと思わないだろうから、結果的にARM defactoは続くと予想するわたしです。
Nvidiaへ渡った事でARM採用に気の進まない企業が増えるとは思いますが、それも代替選択肢があればこそです。誰もARM CPU代替品のビジネスに乗り出さなければARMが廃れる事も無し。

ただしNvidiaが間違えなければです。間違いとは、ARM bizは儲かるビジネスモデルだと誤解してライセンス料を10倍に引き上げる様な行動です。年貢や税金を引き上げたら諸侯はARM国から逃げちゃうもんね。
Nvidiaもそのへんは判っていて、ARM儲からんなぁとボヤきつつ慈善事業を続けてくれると期待しときましょう。

ラッキーだったのは孫さんですね。4兆円で売れて資金繰りにホッとしているでしょう。流石は中華経済結社のフロントです。しかし4兆とは笑う。

これを読んでいるアナタのスマホにも数ドルのARM税がかかっている事をお忘れなく.....

かしこ

STM32でDCC/DDCを作る方向で (61) AK4495でDSDの音が出た!

告知です.
コミケ99にて当社のDDC/DACを頒布いたします.
  日付   2021年12月31日(金) 東地区 テ-40b  東5ホール
  サークル名    bangflat
コミケにお越しの際はお立ち寄りいただけますとありがたいです.
商品紹介ページを作りました.
ーーーー
STM32でDCC/DDCを作ろう!    AK4495でDSDを聴こう!      INDEXページへ

一週間ほど悩んでいました.DSDの音がマトモに出ないんです.デジタル的に歪んだ狂った音が出て来る.

DSD test signalを使ったり、DSD packetをdumpしてチェックしたり、DSD fileが正常であるかどうかをチェックしたり、、、手を尽くしましたがデジタル的に歪んだ狂った音が治りません.しかしこのブロック図の実装は正しくできているようにしか思えません.

連載59回で書いたように、現状使っているHOST環境は、windows 10+foodar1.6+DSD WASAPIでDoPを生成しているのですが、どうもここが怪しい.世間に広く出回っているモノを疑うのは最終手段なのですが、疑ってみました.

再生アプリを別のモノに変えてみます.代替品はTuneBrowserを使ってみます.有償品なので永久に使い続けたくはないですが、30日のお試し期間がありんす.

TuneBrowserをインストし、WASAPIの設定と、DoPの設定をチャチャっと済ませるだけでDSD DoPの準備は完了です.優秀.

さてこれでDSD音源を再生すると、正常な音が出ました.

したがって、DSD死亡の原因はfoodar1.6+DSD WASAPI DoPだったのです.無益な1weekを悲しみます.しかしなぁ、error stopじゃなくて歪んだ音を出す不具合ってのもなんだかなーだよ.

debugのためにcodeを汚してしまったので、綺麗にしてからupしますね.そうしたらようやくこの連載もオシマイになります.EZUSBの頃からカウントすると随分長い時が流れました.USBについてたくさん勉強出来ました.

ヒラサカの作業的には設計情報を公開しまくる状況は終了し、次はプリント基板を小型化するんです.

かしこ

2020年9月11日金曜日

きっとくる~きっとくる~残暑の怪談はAliExpressから

AliExpressから荷物が届いた報告をもって、AliExpを応援する企画の今回はたぶん第20弾.

今日はAliexpressから身に覚えのある商品と、身に覚えのない商品が届きました.

1つは、超音波洗浄器です.これは短納期だったので覚えてた.
8月29日発注  →9月11日着     $60

忘れてたのはEthernet cable testerです.
1月12日発注  →9月11日着     ¥380       納期8ヶ月
納期8ヶ月とはいったい何処を旅していたのでしょうか? ラベルは2枚重ね貼りされていて、各々には中国発(6月13日)、シンガポール発(6月14日)という打刻がありんす.1月発注→6月発送→9月着 とは火星まで行って帰ってこれそうです.中華様サプライチェーンは宇宙規模(五七五)
8ヶ月の間にはデリバリー期限が何度も延長されました.本日は期限切れのあぼーんの日だったんです.ところがあと1時間で期限切れになる寸前に届いたのですから、アバウトなのか計算され尽くされているのかが謎です.もはやご都合主義がホラー級なので♪きっとくる~♪と歌ってしまいました.

なお、あまりにも来るのが遅いので別途Amazonで買ってしまったため、2ヶ所有しているわけなんです.こんなモノが2ヶ在っても意味ないです.

8月10日発注  →8月25日着    ¥1792
7リットルのボトルクーラーは納期2weeksで着いたので優秀です.
だがしかし、段ボールの梱包がベコベコに凹んでいました.写真を撮らなかったのが悔やまれます.そして開封したところ、上面直径が半分ぐらいまで潰れていました.直角方向からグイグイ押して元に戻しました.

今回はAliExpressをたくさん応援できました.

かしこ