ブログ内検索

プログラミング教材開発
大阪府高槻市原地区で肥料教室を開いています
検索キーワード:「canvas」
 

QRCode.jsを試してみた

/** Geminiが自動生成した概要 **/
使い捨てURLのQRコードをBootstrapのモーダル内に表示する際、QRCode.jsで生成したQRコードのセンタリングに苦労した。QRCode.jsは簡単にQRコードを生成できるが、出力される<div>内の<img>タグの幅が100%になるため、`text-center`クラスが効かない。DOMで出力された<canvas>タグのサイズに合わせて、<div id="qrcode">に`style="width:128px;margin:0 auto;"`を指定することで、QRコードをモーダル中央に表示できた。

 

JavaScriptのAnalyzerNodeで音に反応して動きを変えてみる

/** Geminiが自動生成した概要 **/
Web Audio APIのAnalyzerNodeを用いて、音声でアニメーションを制御する方法を紹介しています。 円が画面端で跳ね返る単純なアニメーションに、音声の周波数データ解析を組み込みました。 周波数データが一定閾値を超えると、円の進行方向がランダムに変化します。 音が途切れてもデータが残るため、setTimeoutを用いて一定時間反応しないように制御しています。 具体的には、`analyser.getByteFrequencyData(data)`で周波数データを取得し、`data[20]`の値が閾値を超えた場合に円の移動方向を反転させています。

 

JavaScriptのAnalyzerNodeで拾った音の周波数を可視化してみる3

/** Geminiが自動生成した概要 **/
BiquadFilterNodeは、2次セクションを持つデジタルフィルターで、オーディオ信号の変更に使用されます。`type`プロパティでフィルターの種類を指定し、`frequency`でカットオフ周波数または中心周波数を設定します。`Q`プロパティはフィルターの帯域幅を制御します。`gain`は特定のフィルタータイプでのみ使用されます。主なフィルタータイプは、ローパス、ハイパス、バンドパス、バンドストップ、ローシェルフ、ハイシェルフ、ノッチ、オールパスです。ローパスは指定周波数以下の周波数を通過させ、ハイパスは指定周波数以上の周波数を通過させます。バンドパスは特定の周波数帯域を通過させ、バンドストップはその帯域を減衰させます。シェルフフィルターは特定の周波数以上または以下のゲインを調整し、ノッチフィルターは特定の周波数を除去します。オールパスフィルターはすべての周波数を通過させますが、位相を変化させます。

 

JavaScriptのAnalyzerNodeで拾った音の周波数を可視化してみる2

/** Geminiが自動生成した概要 **/
Web Audio APIを用いてマイク入力の音声の周波数を可視化するJavaScriptコード例を紹介している。AnalyzerNodeでFFTを行い、得られた周波数データをcanvasにグラフとして描画する。コードでは、マイクへのアクセス、AudioContextとAnalyserNodeの作成、周波数データの取得と描画処理を解説。実行すると音声入力に応じてリアルタイムに周波数グラフが変化するが、ハウリングが発生しやすい点についても言及している。

 

JavaScriptのAnalyzerNodeで拾った音の周波数を可視化してみる1

/** Geminiが自動生成した概要 **/
この記事は、JavaScriptで音の周波数を可視化する方法を学ぶための導入部分です。音のデジタル化に不可欠なフーリエ変換の概念を、三角関数のグラフを用いて分かりやすく解説しています。sin波、cos波、そしてそれらの合成波のグラフを示し、複雑な波形も三角関数の組み合わせで表現できることを説明。式の係数を配列データとして取り出すことで、音をデジタルデータとして扱えるようになることを示しています。最後に、高速フーリエ変換(FFT)に触れ、次回JavaScriptでの実装を示唆しています。記事には、HTML5 Canvasを使ったsin波を描画するコード例も掲載されています。

 

D3.jsの4.X系で折れ線グラフを作成してみた

/** Geminiが自動生成した概要 **/
D3.jsを3系から4系にバージョンアップして折れ線グラフを作成した際の変更点についての記事です。4系ではscale関連の記述方法が変わり、`d3.scale.linear()`が`d3.scaleLinear()`に、`d3.scale.ordinal().rangePoints()`が`d3.scalePoint()`に変更されました。特に`scalePoint()`を見つけるのに苦労したようです。また、`d3.axis.svg.axis()`が`d3.axisBottom()`のようにシンプルになりました。これらの変更点に苦労しつつも、無事にグラフ作成できたことが記述されています。

 

中学生にプログラミングを教えてみて。その2

/** Geminiが自動生成した概要 **/
中学生にJavaScriptでプログラミングを教えるにあたり、canvasを使ったゲーム作成に興味を持つ生徒が多い一方、基礎習得の必要性を感じた筆者は、canvasの練習を通して、メソッドの活用、オブジェクトの理解、配列の利用という3つの重要項目を特定した。 これらの概念を「おまじない」として片付けず、生徒に楽しく理解してもらう方法を模索し、計算機、名簿、タイピングソフトの作成を通して、実践的にコードに触れさせながら習熟させる方針を立てた。

 

中学生にプログラミングを教えてみて。その1

/** Geminiが自動生成した概要 **/
プログラミング未経験者がNPOで小中学生にプログラミングを教えることになった。教材選びでは、Scratchは力技での解決を招きやすく、PHPは環境構築が面倒、Javaは難易度が高いため却下。JavaScriptは環境構築が容易で、様々な可能性を秘めていることから採用。ただし、柔軟すぎるが故のコードの煩雑さを懸念し、自身もJavaScriptを改めて学び直すことにした。


Powered by SOY CMS   ↑トップへ