Smile Engineering Blog

ジェイエスピーからTipsや技術特集、プロジェクト物語を発信します

デジタルオーディオのボリュームをやってみる

DSP(Digital Signal Processor)のファームウェアを実装する時、いつも悩むことは、自分が実装した信号処理のプログラムが正しいか(?)、どのように検証するかで、 WindowsやLinuxでその期待の動作を十分に検証し(期待値を作り)、組み込んだファームウェア…

MIPSとMCPS

ソフトウェアの要件として、性能をMCPSでオーダーされたケースがありました。 前記事の「MIPSとMCPS(?)、100MIPSは100MHzで動くか?」では、 ソフトウェアのベンチマークとして、MIPS【Million Instructions Per Second 】と、MCPS【Million Cycles Per Seco…

コマンド 繰り返し 実行

誰しもコマンドを定期実行したいがために以下のようなスクリプトを書いたことがあると思います。 #!/bin/sh while : do clear date '+%s' netstat -anpt sleep 1 done

Date ヘッダ

はじめに テストなんかで急に Date ヘッダ を用意しなきゃダメな場面はよくあると思います。今までは Epoch Converter からコピーペなどして使っていたんですが、ローカルで求める方法があったのでご紹介します。

WAVフォーマットとヘッダ

「PCMにWAVヘッダを付ける」では、WAVヘッダを紹介しました。 WAVフォーマット(*.wav)は、 ファイルコンテナの一種で音源データを格納するファイル形式ですが、手っ取り早く リニアPCMにWAVヘッダを付けるだけでもWAVファイルとして扱うことが出来ます。 W…

あなたのLinuxは大丈夫? End Of Life を調べてみよう

Ubuntu21.04リリース!・・・の裏でこの季節が来てしまった 先日 別の方のブログ記事 で、Ubuntu 21.04がリリースについて触れられていました。 筆者は別の人間なのでまだ触っていませんが、それと同時に気になることが山のように出てきまして。。。 それは…

Wayland でのコマンドラインによる解像度変更

はじめに Ubuntu 21.04 がリリースされました。この版からデフォルトのウィンドウプロトコル(ディスプレイサーバプロトコル、ウィンドウシステム)として、Xorg に変わり Wayland が採用されています。 今までは xrandr コマンドを用いたスクリプトで解像度…

Audacityのバージョンアップ

Audacity Ver 3.0.0がリリースされていました。 リリース情報を見ると(こちら)、 Ver 2.4.2からのメジャーバージョンアップです(2021/3/17)。 インストールされているバージョンをチェック アップデートのチェック Windows 10でアップデート(新規インス…

Vite2+Capacitor2でWEB&モバイル開発環境構築

1つのソースコードで、WEB・モバイル端末・デスクトップ向けのアプリを開発するプラットフォームは、「ReactNative」「Flutter」「Xamarin」「Uno Platform」「Unity」などが有名で、それぞれ特徴を持っています。 当記事では、Vueの開発におけるホットリロ…

Easy-RSA による公開鍵基盤(PKI) その 2

OSS

はじめに 前回 は Easy-RSA を用いてプライベートな認証局(CA)を構築するところまで実施しました。今回は引き続き Web サーバ用の証明書を作成するまでを試してみたいと思います。 手順: 利用者(Web サーバ側)で秘密鍵、CSR を作成 認証局(CA)に CSR …

FIRフィルタを固定小数点化してみる

「FIRのフレーム処理」 では、FIRフィルタのフレーム化(実装)を紹介しましたが、今回は組み込み向けの話しをしたいと思います。 信号処理の組み込みと言えば、まずはDSP*1を思いつきますが、 RISC CPUによるSIMD*2やVLIW*3のように、並列処理により信号処…

思考のサルベージ(その14)

各工程で心がけたい思想を掘り起こしてみる 処理性能を求められるシステムでは、CPUを最大限有効に稼働させなければなりません。「空いた時間の上手な使い方」について考えてみます。 HWサポート 複数個のデータを元に複雑な演算をする必要があるとします。…

Easy-RSA による公開鍵基盤(PKI)

OSS

はじめに いわゆるオレオレ的な証明書の発行のためにプライベートな認証局(CA)を構築する、なんて経験は誰もがあるはず。自分も今までは CA スクリプトなど使いながらわりと苦労して構築してたんですが Easy-RSA なるシェルで簡単に構築できることが分かっ…

Fedora34でデフォルトIMEがAnthyになるですって!?? 〜OSSかな漢字変換再考〜

え、Anthy・・・!?!? 昨年末、LinuxディストリビューションのFedora界隈でこんなディスカッションなるものがあったそうです。。。 fedoraproject.org 中身はタイトルのとおりなのですが、、、 Fedora次期バージョン(=Fedora34)からデフォルトIMEがIBu…

FIRフィルタのフレーム処理

信号処理ではそのアルゴリズムによってフレーム単位で処理している場合が多いです。 フーリエ変換を行う場合は、そのサイズ(点数)でフレーム化されたりします。 このようなケースを考えたとき、フィルタもそのフレームサイズに適した形が都合が良く、高速…

思考のサルベージ(その13)

各工程で心がけたい思想を掘り起こしてみる 年末ですね。ということで開発の最後に片づける「ドキュメント整理」について考えてみます。 ドキュメント整理とは? ドキュメント整理とは、要求仕様書とそれに対する上流工程から下流工程の設計書、試験仕様書な…

GPG キーのエクスポート/インポート

はじめに 過去の投稿「GitHub の Verified マーク」の中で GPG を使用しました。マシンの買い替えにあたり、手っ取り早く GPG キーを移行することにしたので備忘のためこの手順を残しておきます。 移行は、 古いマシンで GPG キー、GPG 署名キーのエクスポー…

Audacity『ノイズ除去』の周波数特性

「Audacityのノイズ除去を検証してみる」では、AudacityのNoise Reductionが周波数を分析しているのならば、特定の周波数をノイズとした時、その周波数が消えるか?という観点で調べてみました。周波数特性についてもう少し検証してみます。 周波数特性を調…

The Continuing Story of Error Correction Code 6

行列 はじめに ここまでの記事で4ビットの送信語、、、、から単一パリティ符号やハミング符号を生成する、ということを考えてきました。 今回からはこれらの符号生成などを行列を使って表現する、ということをやってみたいと思います。 ところで行列、やった…

SAS備忘録

はじめに SASについて本人の備忘録もかねてまとめていきます。 はじめに SASとは 基礎 SASデータセット SASプログラムの構成 DATAステップ リスト入力によるデータセット作成 setステートメントによるデータセットの読み込み setステートメントによる縦結合 …

思考のサルベージ(その12)

各工程で心がけたい思想を掘り起こしてみる 今回は開発中の製品で見つけた不具合の過去製品への「フィードバック」について考えてみます。 ここでは、現在開発中の商品をPRODUCT-2、過去製品をPRODUCT-1と呼びましょう。PRODUCT-1はすでに客先リリース済みで…

Singularityでお手軽コンテナ運用! 〜CUDAも使えます〜

Singularityってなに!? 今回はSingularityを使って、コンテナ運用する方法を紹介します。 singularity.lbl.gov って、そもそもそれは一体何!?と思われる方も多いかと思いますが、一言で言うとDockerのようなコンテナフレームワークです。 Singularityに…

Node.js のインストール

はじめに node のバージョン管理に n を使っています。今までは n を npm で導入していて、そのためには先ず node/npm をシステムにインストールする必要があったのですが、これ無しに、直接 n をインストール方法を知ったので備忘のために記します。 直接イ…

Audacityの「ノイズ除去」を検証してみる

「Audacityでノイズ除去」では AudacityのNoise Reductionを紹介しましたが、はたしてどんなアルゴリズムなのでしょうか。気になったので少し検証してみます。 Audacityのソースコード 特定の周波数をノイズとして消してみる 1kHzの正弦波を生成 2kHzの正弦…

The Continuing Story of Error Correction Code 5

ハミング符号再訪 ハミング符号は誤り訂正の基礎 The Continuing Story of Error Correction Code 2 - Smile Engineering Blog で7ビットハミング符号を構成してみました。 このハミング符号はSECDED、CRC符号、BCH符号、リードソロモン符号などの基礎となっ…

curl 備忘録

はじめに 近ごろは Postman を使うことが多くなりましたが、サーバからのリクエストなどではコマンドラインが必要です。検索キーワード上位ランクイン確実な curl コマンドのオプションについてまとめました。

JupyterNotebook拡張機能「nbextensions」について

はじめに Jupyter Notebookをより使い勝手をよくするjupyter_contrib_nbextensionsがあります。 Notebook上でいろいろな拡張機能が使えるようになるものですが使用してみて個人的に便利だったものについて紹介します。

思考のサルベージ(その11)

各工程で心がけたい思想を掘り起こしてみる 前回は、開発メンバの「増員」をテーマとして、増員メンバを迎える立場で考えてみました。せっかくなので、増員メンバとして、新規にプロジェクト参入する立場についても考えてみます。 状況把握 プロジェクトへの…

Linux Mint 20 Ulyana 開発環境用初期設定

6月27日に「Linux Mint」の最新メジャーリリースとなるバージョン20(開発コード「Ulyana」)がリリースされました。 「Linux Mint」はUbuntuベースのデスクトップ型Linuxディストリビューションのひとつです。 当記事では、64bitのWindows上にVMware Workst…

Audacityでノイズ除去

Audacityのノイズ除去(Noise Reduction)は、はじめにノイズの範囲を指定してノイズプロファイルを取得する(ステップ1)、そしてノイズを除去したい範囲を選択してフィルタリングする(ステップ2)という2段階の手順になっています。Audacityについては…