2020年頃に熱中して製作した自作エフェクター達

2020年頃に熱中して製作した自作エフェクター達

2019年から2024年頃にかけて製作した自作エフェクターの記録をまとめます。オクターブファズ、ノイズブレンダー、トレブルブースター、トレモロ、A/Bルーパー、TS系オーバードライブ、チェーンソーファズなど、回路図・制作写真・試奏動画を残している記事です。 2000年代前半から趣味として始めた電子工作でしたが、2020年頃には勉強を兼ねて製作した回路をブログに記録するようになりました。この記事では、音作りの狙い、回路の特徴、実際に使ってみた印象を作品ごとに読めるように整理しています。 なお、以前はオーダーメイドのご依頼を受けたり、メルカリで販売することもありましたが、現在はエフェクターの製作は行っておりません。 最初に読むなら、歪み系は「OCTOBUZZ」や「チェーンソーファズ」、音質比較や録音まわりは「TEST BOX」や関連記事のバッファー記事、実用機材としては「A/B LOOPER」から見ると流れを追いやすいです。 OCTOBUZZ オクターブファズの開発 ACETONE FM-2 や ハニーファズ(Baby Crying)、Univox SUPER-FUZZ、Ibanez WAV FUZZ などの回路を参考にしつつ、新井技研オリジナルのオクターブファズを開発しました。その名も「OCTOBUZZ」です♪ https://github.com/aragig/pedal_octobuzz 動画を再生 動画を再生 OCTOBUZZ の全体の回路図 ...

公開: 2024年7月7日 · 更新: 2026年5月1日 · Toshihiko Arai

PostgreSQLと向き合うための 現場で使えるデータベース操作・SQLノート

はじめに この記事では、PostgreSQL を実務で使うときに毎回見直したくなる操作を 1 本にまとめています。Rocky Linux と macOS でのインストール手順、LAN 越しの外部接続設定、pg_dump / pg_restore を使ったバックアップ・リストア、そして psql の便利コマンドや SQL の基本までを順に確認できる構成です。 MySQL について同じ粒度でまとめたものは MySQLと向き合うための 現場で使えるデータベース操作・SQLノート をご覧ください。 Rocky Linuxにインストール PostgreSQL 13.15 を Rocky Linux にインストールする手順は以下の通りです。 メモ: 記事執筆時は PostgreSQL 13 系を入れています。PostgreSQL 13 はコミュニティサポートが 2025 年 11 月で終了しているため、新規構築では postgresql16-server など現役メジャーバージョンの利用を検討してください。手順の流れ自体はバージョンとリポジトリの番号を読み替えればそのまま使えます。また、Rocky Linux 9 系を使っている場合は EL-8 を EL-9 に置き換えてください。 リポジトリを有効化する まず、PostgreSQL 13 のリポジトリを追加します。 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm PostgreSQL 13をインストールする PostgreSQL 13 のインストールを行います。AppStream 側に同梱されている古い postgresql モジュールが優先されないよう、無効化してから入れるのが安全です。 sudo dnf -qy module disable postgresql sudo dnf install -y postgresql13-server PostgreSQLの初期化 PostgreSQLのデータベースを初期化します。 ...

公開: 2024年7月4日 · 更新: 2026年5月27日 · Toshihiko Arai
ESP32 で Sigfox をはじめる

ESP32 で Sigfox をはじめる

はじめに この記事では、ESP32 と Sigfox ブレイクアウトボード BRKLSM100A を使って、WiFiの届かない数キロメートル先の基地局へセンサーデータを送信する方法を解説します。Sigfox は年間1000円程度・アクセスポイント不要で使える LPWAN サービスで、ESP-NOW や BLE が届かない広域 IoT 通信に適しています。ATコマンドの設定手順から Sigfox クラウドの Callback 設定(Slack 通知)まで、実際に躓いた点も含めて紹介します。 Sigfox の具体的な設定方法や技術的な質問にはお答えできませんのでご了承ください。 Sigfoxとは Sigfox は、低消費電力の広域ネットワーク(LPWAN: Low Power Wide Area Network)技術の一つで、主に IoT デバイス向けに設計されています。LPWANは0G回線とも呼ばれています。Sigfox サービスを展開するのはフランスの会社ですが、日本では 京セラさんが代理店 として窓口に立ってくれています。なにか分からないことがあれば、京セラさんが丁寧にご回答してくれます。 https://www.kccs.co.jp/contact/sigfox/inquiry/ 以下、Sigfox の特徴をまとめておきます。 低消費電力 デバイスのバッテリー寿命が数年に渡ることが可能です。通信頻度が低く、消費電力が非常に少ない設計になっています。Sigfox デバイスを制御するには、UART の AT コマンドを使います。Arduino や ESP32、または PIC などでも制御できます。低消費電力の PIC であれば、Sigfox デバイスと組み合わせて太陽電池やリチウム電池で長期間運用も実現可能です。 広範囲カバー Sigfox デバイスから Sigfox 基地局(Sigfox ゲートウェイ)まで、数キロメートルから数十キロメートルにわたる広範囲の通信が可能です。都市部では数キロメートル、農村部では数十キロメートルの通信距離をカバーします。Sigfox GW(ゲートウェイ)は自前で用意する必要はありません。下記 URL に Sigfox 通信できるエリアが示されています。日本の首都圏で広く展開されており、山間部などの一部地方ではつながらない場合があります。 https://www.kccs.co.jp/sigfox/area/ 世界中の多くの国で利用可能で、国境を越えた通信が容易に行えます。Sigfox のネットワークオペレーターがインフラを提供します。 低データレート 1回の通信で最大12バイトのペイロードを送信できます。16進数2文字で1バイトなので、最大24桁の16進文字列(例: 0123456789ABCDEF01234567)まで送れます。センサ値をバイナリに詰めて16進文字列として送れば、12バイト内に複数の値を収められます。一日の送信回数に制限があり、通常は140回までです。 ...

公開: 2024年6月28日 · 更新: 2026年5月25日 · Toshihiko Arai
Square Terminal APIを使った会計処理

Square Terminal APIを使った会計処理

この記事の範囲と前提 以前、オリジナルの Android アプリから Square Terminal 端末と連携して会計処理をする仕事に携わったときの記録です。公式ドキュメントが分散しており目当ての情報に辿り着くまで苦労したので、プロジェクトの備忘録として大まかな手順をまとめました。 この記事では次のことを扱います。 Square Terminal 端末をアプリ側のカードリーダーとして使う前提 Terminal API でデバイスコードを発行し、端末とペアリングするまで アプリ側からチェックアウト(金額表示)リクエストを送り、状態を確認・キャンセルするまで ACCESS_TOKEN、device_id、idempotency_key といった必須の値の扱い Webhook の利用シーンと最低限の運用注意 前提として次が必要です。 Square Developer アカウントと、そこで作成した Application 一式(ACCESS_TOKEN・location_id 取得用) 本番アカウントでサインインできる Square Terminal 端末 1 台以上 端末を叩く側のアプリケーション(この記事では Android アプリを想定していますが、HTTP が投げられれば言語は問いません) curl または Square API Explorer など、API を叩ける環境 サンプルコードでは Square-Version として 2024-06-04 と 2024-04-17 の両方が出てきます。これは当時実際に動作確認したバージョンで、現行の API バージョンに合わせて読み替えてください。Square API は後方互換を保ったままバージョン番号が定期的に上がっていく仕組みです。 この記事の内容に関する個別の質問にはお答えできません。あくまで「当時こうやって動かしたメモ」として参照してください。 公式ドキュメントとツール 実装中によく参照したものは次の通りです。手元から開きやすいよう、最初にまとめておきます。 Terminal API クイックスタート(公式) Square Terminal の支払いフロー(公式) CreateDeviceCode(API Explorer) 関連する記事 Android アプリ側の作りや、ACCESS_TOKEN を扱う中間サーバーの作り方は別記事にまとめています。Square 連携を組み立てる前後で参考になりそうなものを並べておきます。 ...

公開: 2024年6月19日 · 更新: 2026年5月30日 · Toshihiko Arai

CRパッシブノイズフィルター「DESERT MOON」の開発

はじめに ギターやベースの高域ノイズを軽減するため、CRローパスフィルタを使ったパッシブノイズフィルター「DESERT MOON」を開発しました。ストラトキャスターやジャズベースのようなシングルコイルPU、ピエゾピックアップの高域ノイズを、無電源の小さな機材で抑える狙いです。 ただし、高域ノイズを落とすほど音色にも影響します。この記事では、使い方、初期版とV2.0の違い、コンデンサ値とカットオフ周波数の考え方を、実際に作った回路をもとに整理します。 「DESERT MOON」の動画のご紹介 どのようにノイズが減少するかは、ぜひこれらの動画をご視聴ください。 ▼ 初期バージョンの動画です 動画を再生 ▼ 薄型に改良したV2.0の動画です 動画を再生 使い方 仕組みはCRローパス(ハイカット)フィルタでして、エフェクタを挟まず、ギター出力後の初段階で繋いでもらう形になります。ロータリースイッチによってコンデンサ(C)の値を切り替えることで、音に影響しないぎりぎりのラインを狙った高域ノイズの低減対策が実施できます。 ...

公開: 2024年4月15日 · 更新: 2026年5月1日 · Toshihiko Arai
スパイスで作るチャイ カルダモン/クローブ/シナモン/ブラックペッパー

スパイスで作るチャイ カルダモン/クローブ/シナモン/ブラックペッパー

材料(2杯分) 食材 分量 備考 A カルダモン 4粒 A クローブ 4粒 A 黒胡椒 4粒 A シナモンパウダー 小さじ2 A 水 200ml 紅茶 1パック 緑茶でも可 牛乳 240ml 砂糖 大さじ1 作り方 材料Aを鍋に入れ、煮出す 火を止め茶葉を入れて2分置く 牛乳と砂糖を加えて沸騰する直前で止める ③を濾して完成

公開: 2024年3月17日 · 更新: 2026年2月18日 · Toshihiko Arai
ダイソーのBluetoothリモコンシャッターをESP32でハックする

ダイソーのBluetoothリモコンシャッターをESP32でハックする

ダイソーで販売されている300円のBluetoothリモコンシャッター(Remote Shutter)を、ESP32側から BLE HIDデバイス として検出・接続し、ボタンが押されたタイミングで LED を点灯/消灯させてみました。スマホ用のシャッターリモコンを、自作IoTのトリガーとして再利用するイメージです。 この記事では、ESP32とリモコンシャッターをBLEで繋ぐ最小スケッチ、PlatformIO 側で踏みやすい arduino-esp32 のバージョン問題、そして同じ仕組みを使いやすくまとめた自作ライブラリ「BlueShutHacker」の使い方までを紹介します。ESP32でのBLE開発の流れを掴みたい方や、安価な市販Bluetoothデバイスを入力源として使い回したい方向けです。 実装にあたっては、下記の二つの記事をとても参考にさせていただきました。 https://wakwak-koba.hatenadiary.jp/entry/20181009/p1 https://lang-ship.com/blog/work/m5stickc-esp32-bluetooth-shutter-1-0-4/ 動画を再生 必要なもの 最小構成で動かす場合に用意したものは次の通りです。 ESP32 開発ボード(ESP32 DevKitC など、BLE対応のもの) ダイソーの Bluetooth リモコンシャッター(300円・ボタン電池付属) LED 1個と電流制限抵抗(330Ω 前後)、配線用ジャンパー線 PlatformIO(VS Code または CLion)または Arduino IDE ESP32 自体の最初の動作確認がまだの場合は、先に ESP32でLチカするまでの設定 で Arduino IDE からの書き込みまで通しておくと、本記事の内容に集中できます。 リモコンシャッターでLチカさせる ESP32をつかって、リモコンシャッターのボタンが押されたらLEDの点灯状態を変化させてみました。 ソースコード こちらがそのソースコードです: #include <Arduino.h> #include "BLEDevice.h" #define LED_PIN 13 static uint16_t GATT_HID = 0x1812; //static BLEUUID GATT_HID_REPORT((uint16_t) 0x2a4d); static BLEAddress *pServerAddress = NULL; class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks { void onResult(BLEAdvertisedDevice advertisedDevice) { if (advertisedDevice.haveServiceUUID() && advertisedDevice.getServiceUUID().equals(GATT_HID)) { advertisedDevice.getScan()->stop(); pServerAddress = new BLEAddress(advertisedDevice.getAddress()); Serial.print("found device:"); Serial.println(pServerAddress->toString().c_str()); // 2a:07:98:10:33:fa } } }; void updateLedState() { static boolean ledState = true; if (ledState == 0) { digitalWrite(LED_PIN, LOW); } else { digitalWrite(LED_PIN, HIGH); } ledState = !ledState; } static void notifyCallback(BLERemoteCharacteristic *pBLERemoteCharacteristic, uint8_t *pData, size_t length, bool isNotify) { Serial.println("notifyCallback"); switch (pData[0]) { case 0x01: // Volume Up Serial.println("Volume Up"); updateLedState(); break; case 0x02: // Volume Down Serial.println("Volume Down"); updateLedState(); break; } } void setup() { Serial.begin(115200); pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, LOW); BLEDevice::init(""); BLEScan *pBLEScan = BLEDevice::getScan(); pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks()); pBLEScan->setActiveScan(true); pBLEScan->start(30); } void loop() { static boolean connected = false; if (pServerAddress != NULL && !connected) { BLEClient *pClient = BLEDevice::createClient(); pClient->connect(*pServerAddress); if(pClient->isConnected()) { Serial.println("connected"); } else { return; } //! arduino-esp32のバージョンによってはクラッシュするので注意 //! ver 2.0.2 だとここで落ちる → ver 2.0.14 または ver 3.20014.0 で動作確認済み BLERemoteService *pRemoteService = pClient->getService(GATT_HID); if (pRemoteService) { // BLERemoteCharacteristic *pRemoteCharacteristic = pRemoteService->getCharacteristic(GATT_HID_REPORT); // pRemoteCharacteristic->registerForNotify(notifyCallback); std::map<uint16_t, BLERemoteCharacteristic*>* mapCharacteristics = pRemoteService->getCharacteristicsByHandle(); for (std::map<uint16_t, BLERemoteCharacteristic*>::iterator i = mapCharacteristics->begin(); i != mapCharacteristics->end(); ++i) { Serial.print("connected to:"); Serial.println(i->second->getUUID().toString().c_str()); if (i->second->canNotify()) { Serial.println(" - Add Notify"); i->second->registerForNotify(notifyCallback); } } connected = true; } } delay(10); // 高負荷防止 } 注意点 ソースコードをアップロードするにあたって、注意点があります。PlatformIO を使う場合、arduino-esp32 のバージョンが古いとクラッシュします。ソースコード内のコメント注釈のとおり、version 2.0.2 だとダメでした。version 2.0.14 以降であれば問題なさそうです。 ...

公開: 2024年3月14日 · 更新: 2026年5月28日 · Toshihiko Arai
ほうれん草とベーコンのバター炒めの作り方・レシピ

ほうれん草とベーコンのバター炒めの作り方・レシピ

ほうれん草とベーコンのバター炒めのレシピ・作り方 バター風味豊かにするには、バターで炒めず、 バターを最後に入れて和える のがポイントです^^ <材料(1人分)> 食材 分量 備考 ほうれん草 適量 ベーコン 適量 しめじ 適量 にんにく 一片 スライス ブラックペッパー 少々 塩 少々 しょうゆ 小さじ1 バター 10g オリーブオイル 大さじ1 <作り方> フライパンにオリーブオイルをひいて、にんにくを炒める ベーコン、しめじ、ほうれん草の順で炒め塩こしょうする ほうれん草が柔らかくなったらバターとしょうゆを加え、火を止めて和えたら完成 ポイント バターは最初に入れるよりも最後に加え、半分溶けて固形が残っているくらいの方が、風味があっておいしいです。バター炒めというよりは、バター和えと言ったほうがよいかもしれませんが。

公開: 2024年3月2日 · 更新: 2026年2月18日 · Toshihiko Arai
手作り味噌を仕込む様子

手作り味噌の作り方|カビの取り除き方と半年熟成の記録

大豆、米麹、塩で手作り味噌を仕込みました。大豆を柔らかく煮て、塩切りこうじと混ぜ、空気を抜きながら保存瓶へ詰めて数か月熟成させます。 手作り味噌で気になるのが、途中で出てくるカビです。今回も3か月後に表面と瓶の周りへカビが出ましたが、その部分を取り除いて熟成を続け、半年後には味噌として使える状態になりました。カビが出たから即失敗ではありませんが、状態を見ながら無理せず扱うのが大事です。 手作り味噌の要点 大豆は指で簡単につぶれるくらい柔らかく煮る 米麹と塩は先に混ぜて、塩切りこうじにする 大豆は人肌くらいまで冷ましてから麹と合わせる 保存瓶へ詰めるときは空気をできるだけ抜く カビが出たら周辺を大きめに取り除き、異臭や強い違和感があれば食べない 自家製みその作り方 <材料(作りやすい分量)> 食材 分量 こうじ 500g 塩 200g 大豆 500g 種水(煮汁) 230cc <作り方> 大豆を鍋に入れ、大豆の量の3倍の水で一晩おく 翌日、鍋を火にかけアクを取りながら、大豆が柔らかくなるまで3〜4時間煮る ボウルで塩と麹を混ぜ合わせておく(塩切りこうじ) 茹で上がった大豆をザルにあげつつ、種水(煮汁)を取っておく 煮豆を熱いうちに潰す ③の塩切りこうじに、④の冷ました種水を少し加えて混ぜる ⑥を煮豆に加えて混ぜ合わせる。種水を少しずつ入れながら耳たぶくらいの硬さになるように調整する ⑦をだんご状にして、保存瓶にペタペタと貼りながら、空気を出すように押し詰めていく 表面に手塩を振り、ラップを貼り付け重石を置いてフタをする。そのまま常温の冷暗所で保存する 3か月以上したら様子を見て、カビが生えていたら取り除く。味を見て味噌の完成 <動画> レシピ動画はYouTubeの キッチンノート channel で公開中です。ぜひこちらの動画もご参考になさってみてください。 動画を再生 自家製みその実践 ここからは実際に作っている様子をご紹介いたします。 前日の準備 国産大豆を500g用意しました。 前日に大豆をたっぷりの水に浸けておきます。大豆の3倍くらいの水が良いそうです。 当日、大豆を茹ではじめる 鍋に大豆と浸しておいた水を入れ、水を足してたっぷりの水で茹でます。沸騰直前で弱火にし、水の量を絶やさず3〜4時間茹でます。 指で簡単につぶれるくらい柔らかくなったらOKです。 ...

公開: 2024年3月1日 · 更新: 2026年4月26日 · Toshihiko Arai
海老とチンゲン菜の中華料理炒めの作り方・レシピ

海老とチンゲン菜の中華料理炒めの作り方・レシピ

海老とチンゲン菜を、オイスターソースベースで手早く炒める中華風おかずです。エビは下味をつけて先に焼き、チンゲン菜は硬い部分から炒めると食感が残ります。 合わせ調味料に片栗粉を入れておくので、最後に具材を戻して絡めるだけでまとまりやすいです。ご飯に合わせる一皿として作りやすい分量です。 海老とチンゲン菜の中華料理炒めのレシピ・作り方 中華料理というと難しそうなイメージですが、ここでは 味付け工程をシンプルにして、作りやすくしてみました。 <材料(1人分)> 食材 分量 備考 えび 適量 バナメイエビなど チンゲン菜 1束 食べやすいサイズにカット しめじ 適量 石ずきを切り落とす A 酒 大さじ1 A 片栗粉 大さじ1 A サラダ油 大さじ1 B 酒 大さじ1 B オイスターソース 大さじ1 B ニンニク 1片 すりおろし B 生姜 1片 すりおろし B 醤油 小さじ1 B 砂糖 小さじ1 B 片栗粉 小さじ1 ブラックペッパー 少々 ごま油 小さじ1 <作り方> ボウルに水をはり塩分濃度3%になるように塩水を作る ①を使ってえびの殻を剥き、背に包丁を入れてワタを取る 調味料Aをバットに入れ、水気を切ったえびに下味をつける プライパンにサラダ油を引き、チンゲン菜の硬い部分から炒め、葉を加えて炒めたら一旦取り出す 再びサラダ油を引き、えびを中火で両面1分ずつ焼いて取り出す しめじをフライパンで炒めたら、チンゲン菜を戻し入れ、調味料Bとえびを加えて絡ませる。 最後に、ブラックペッパーとごま油を振って完成。 <動画> レシピ動画はYouTubeの キッチンノート channel で公開中です。ぜひこちらの動画もご参考になさってみてください。 ...

公開: 2024年2月29日 · 更新: 2026年5月2日 · Toshihiko Arai