メインコンテンツへスキップ

abcjs

abcjsはABC記譜法で書いたテキストからブラウザ上で楽譜を表示できるJavascriptのライブラリ

Obsidianではobsidian-plugin-abcjsというプラグインがあり、ノート内で楽譜を表示することができる。

関連記事

Amazonの商品紹介Markdownをつくるブックマークレット

このサイトはObsidianで管理しているノートをQuartzで公開しており、全てのテキストはMarkdownで書いている。 このため、Amazonの商品紹介をするのがなかなか面倒であり、これを改善するためのブックマークレットを書いた。 使い方 # Amazonの商品ページに行ってこのブックマークレットを起動すると、以下のようなMarkdownが生成され、クリップボードへコピーされる。 ![[オン] ランニングシューズ Cloudmonster メンズ](https://a.media-amazon.com/images/I/51lG1xvL7nL._AC_SY200_.jpg) [[オン] ランニングシューズ Cloudmonster メンズ](https://www.amazon.co.jp/gp/product/B0CN337TNH/?tag=namaraiicom-22) 出力はこんな感じ。殺風景だけどMarkdownだけで書いていて、専用のCSSを当てていないのでやむをえない。 [オン] ランニングシューズ Cloudmonster メンズ 実装 # 実装はこんな感じ。Amazon(JP)で複数ジャンルの商品ページのHTMLを確認し、チェックした範囲では動作しているが、うまく動かないページもあると思う。 もし、動かないページをみつけたらこちらまでご連絡いただければ幸い。ブックマークレットへの変換は以下のページが便利です。 Bookmarklet スクリプト変換 (function() { function copyToClipboard(text) { navigator.clipboard.writeText(text).then(function() { alert('クリップボードにコピーされました'); }).catch(function(error) { console.error('クリップボードへのコピーに失敗しました', error); }); } function getElement(selector) { return document.querySelector(selector); } try { var size = 200; var asinElement = getElement('input#ASIN'); if (!asinElement) throw new Error('ASINが見つかりませんでした'); var asin = asinElement.value; var titleElement = getElement('span#productTitle'); if (!titleElement) throw new Error('製品名が見つかりませんでした'); var title = titleElement.textContent.trim(); var thumbnailUrl = getElement('img#landingImage')?.src || getElement('img[src*="_SY"]')?.src || getElement('input#productImageUrl')?.value || getElement('img[src*="_SX"]')?.src; if (!thumbnailUrl) { throw new Error('サムネイル画像が見つかりませんでした'); } var productUrl = 'https://www.amazon.co.jp/gp/product/' + asin + '/?tag=namaraiicom-22'; var modifiedUrl; var sizeMatch = thumbnailUrl.match(/_(_SY|_SX)(\d+)_/); if (sizeMatch && sizeMatch[2]) { modifiedUrl = thumbnailUrl.replace(/_(_SY|_SX)\d+_/, `_${sizeMatch[1]}${size}_`); } else if (thumbnailUrl.match(/_(SY|SX)(\d+)_/)) { modifiedUrl = thumbnailUrl.replace(/_(SY|SX)\d+_/, `_SY${size}_`); } else { modifiedUrl = thumbnailUrl; } var markdownContent = `![${title}](${modifiedUrl})\n\n[${title}](${productUrl})`; copyToClipboard(markdownContent); } catch (error) { console.error(error); } })();

Amazonから書誌情報をTextwellへ取り込むブックマークレット

bibinfo-exporter/script.js at main · goryugocast/bibinfo-exporterを参考にAmazonから書誌情報をへ取り込むブックマークレットを作成した。 直接Obsidianに取り込むのは自分の運用に合わないためTextwellへ追記するように。 こちらは書籍専用で、著者名や出版社、出版日などを取り込む。 Amazonの書誌情報をTextwellの追記するブックマークレット javascript: (() => { const dest_path = 'notes'; //ファイルを格納するパス const amazon_id = 'namaraiicom-22'; // アフィリエイトID let p = document.getElementById("productTitle"); //書籍のタイトルの処理 p = p ? p : document.getElementById("ebooksProductTitle"); const title = p.innerText.trim(); let asin = document.getElementById('ASIN'); //ASIN番号の処理 const a = asin ? asin.value : document.getElementsByName('ASIN.0')[0].value; const url = `https://www.amazon.co.jp/exec/obidos/ASIN/${a}/${amazon_id}/`; const link = `[${title}](${url})`; let image = document.getElementById("imgTagWrapperId"); //書影の処理 image = image ? image : document.getElementById("ebooksImgBlkFront"); const imageurl = image.querySelector("img").getAttribute("src"); const c = document.getElementsByClassName('author'); const pub = []; const ct_list = []; // ctの各要素を保存する配列を新たに定義 for (let g = 0; g < c.length; g++) { const at = c[g].innerText.replace(/\r?\n/g, '').replace(/,/,''); const pu = at.match(/\(.+\)/); const ct = at.replace(/\(.+\)/,'').replace(/ /g,''); ct_list.push(ct); // ctを配列に追加 pub.push(`${pu} [[${ct}]]`); } const author = pub.join(' '); let h1title = `『${title}』`; h1title = h1title.replace(/[\\/:*?"<>|.]/g, char => ({ ':': ':', '\\': '\', '/': '/', '?': '?', '*': '*', '"': '”', '<': '<', '>': '>', '|': '|', '.': '.' }[char])); const mdimage = `[![|100](${imageurl})](${url})`; // 登録情報欄を取得 let detail = document.getElementById('detailBullets_feature_div'); if (!detail) { const subdoc = document.getElementById("product-description-iframe").contentWindow.document; detail = subdoc.getElementById("detailBullets_feature_div"); } const detailtext = detail.innerText; const pubdata = detailtext.split(/\n/); pubdata[2] = pubdata[2]?.slice(10); // 出版社 const date = new Date().toLocaleDateString('sv-SE'); const lines = `---%0D%0Atitle: "${h1title}"%0D%0Adate%3A%20${date}%0D%0Aupdated%3A%20${date}%0D%0Andl%3A%0D%0Atags%3A%20読書メモ%0D%0Adraft%3A%20true%0D%0A---%0D%0A${mdimage}%0D%0A-%20${link}%0D%0A-%20${author}%0d%0A-%20${pubdata[2]}%0D%0A%0D%0A%23%23 関連・思い出した本 %0d%0A%23%23 読書メモ%0d%0A`; const app = `textwell:///add?text=${lines}`; window.open(app); })(); こちらは一般的な商品の画像と商品名を取り込む。 Amazon商品の商品名と画像へのリンクをTextwellに追加するブックマークレット javascript: (() => { const dest_path = "notes"; //ファイルを格納するパス const amazon_id = "namaraiicom-22"; // アフィリエイトID let p = document.getElementById("productTitle") || document.getElementById("ebooksProductTitle"); //書籍のタイトルの処理 const title = p.innerText.trim(); const asinElement = document.getElementById('ASIN') || document.getElementsByName('ASIN.0')[0]; //ASIN番号の処理 const a = asinElement.value; const url = `https://www.amazon.co.jp/exec/obidos/ASIN/${a}/${amazon_id}/`; const link = `[${title}](${url})`; const image = document.getElementById("landingImage"); const imageurl = image.getAttribute("src"); // 自分が必要なパラメータに変換 let h1title = title.replace(/[\\/:*?"<>|.]/g, char => ({ ':': ':', '\\': '\', '/': '/', '?': '?', '*': '*', '"': '”', '<': '<', '>': '>', '|': '|', '.': '.' }[char])); const mdimage = `[![|100](${imageurl})](${url})`; const lines = `${mdimage}%0D%0A%0D%0A${link}%0D%0A`; const app = `textwell:///add?text=${lines}`; window.open(app); })();

Obsidianのデイリーノートへ追記するTextwellのアクション

ObsidianのデイリーノートへTextwell から追記するためのアクション。TextwellからObsidianのデイリーノートを書く方法 - Jazzと読書の日々を参考にさせていただき以下の修正を行った。 デイリーノートのディレクトリ構成(YYYY/MM/YYYY-MM-DD.mdとした) 新規作成ではなく追記に変更 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 // デイリーノートのルートディレクトリ Root = "journal"; url = "obsidian://"; d = new Date(); y = d.getFullYear(); m = Zero(d.getMonth()+1); // デイリーノートのディレクトリ構成対応(YYYY/MM/YYYY-MM-DD.md) Folder = Root + "/" + y + "/" + m; Title = y + "-" + m + "-" + Zero(d.getDate()); if(Folder) Title = Folder + "/" + Title; if(T.text) url+= "new?content=" + encodeURIComponent("\n") + T.stdin.text + "&file=" + encodeURIComponent(Title) + "&append"; T(url,{option:"cutWhole"}); function Zero(x){ return ("00"+x).slice(-2); }

Textwell

Textwell - The Modeless Textbox for iPhone, iPad, iPod touch, Mac, and Watch. メモ、メッセージ、ブログ、検索、投稿など、あらゆる文章作成タスクに使用できる多目的テキストエディタ ファイリングやスタイリングのための機能はないが、JavaScriptベースのカスタマイズ可能なアクション、自動履歴、クラウド同期などをサポートしており、シンプルで拡張性が高い Mac版、iOS版、AppleWatch版がある Textwell | URL Schemes 自作のアクションなど # ソートして重複行を削除するTextwellのアクション Obsidianのデイリーノートへ追記するTextwellのアクション Amazonから書誌情報をTextwellへ取り込むブックマークレット

iZotope RX9

iZotope RX 9 Standardは、音声修復・復元に特化したプロフェッショナル向けのオーディオ処理ソフトウェア。ノイズ除去、クリック音の修正、音声の復元など、様々な音声問題を解決するための強力なツールセットを提供している。 スタンドアロンアプリケーションとしても、DAWのプラグインとしても使用可能で、音楽制作、ポッドキャスト制作、映像制作、音声復元作業などの分野で広く活用されている。 iZotope RX 9 Standard プラグイン一覧 # プラグイン名 主な機能 用途の例 Breath Control 息継ぎ音の調整・除去 ボーカル録音の仕上げ、ナレーション品質向上、ポッドキャスト編集 Connect 他のiZotope製品との連携 Neutron、Ozone等との統合ワークフロー、プロジェクト間連携 De-click クリック音・ポップ音の除去 レコードのデジタル化、マイクの雑音除去、編集時のカットノイズ修正 De-clip クリッピング(音割れ)の修復 過入力で歪んだ録音の修正、ライブ録音の音割れ改善 De-crackle パチパチ音・ひび割れ音の除去 古いレコードの復元、テープ録音の修復、劣化した音源の改善 De-ess 歯擦音(S音)の軽減 ボーカル録音のサ行刺激音除去、ナレーション品質向上、過剰な高域成分軽減 De-hum ハム音・ブーン音の除去 電源ノイズの除去、グランドループノイズの修正、60Hz/50Hzハムの除去 De-plosive 破裂音(P音、B音)の軽減 マイク録音のポップ音除去、近接録音の改善、音声品質向上 De-reverb 不要なリバーブ・エコーの除去 部屋鳴りの軽減、録音環境の音響特性修正、ダイアログのクリアニング Guitar De-noise ギター特有ノイズの除去 エレキギター録音のハムノイズ除去、アンプノイズの軽減 Monitor リアルタイム音声モニタリング 録音中の問題検出、ライブ配信品質確認、音声レベル監視 Mouth De-click 口の音(舌打ち、唇音)の除去 ボーカリストの口音除去、ナレーター音声の改善、インタビュー音声修正 Music Rebalance 音楽要素の分離・調整 ボーカル抽出、楽器成分の分離、ステムトラック作成、ミックス調整 Spectral De-noise スペクトラム解析ノイズ除去 精密なノイズ除去、特定周波数の問題修正、高度な音質改善 Spectral Editor スペクトラム表示編集環境 視覚的音声編集、周波数ドメイン修正、精密な音声加工 Voice De-noise 音声に特化したノイズ除去 ボーカル録音のクリーニング、電話音声の改善、ナレーション音質向上

コンプレッサーのパラメータ

コンプレッサーは音声の音量差(ダイナミックレンジ)を縮める。大きな音を小さくし、全体的に音量を均一にすることで、聞きやすい音声に仕上げることができる。 パラメータの説明と設定の目安 # パラメータ 説明 設定の目安 スレッショルド (Threshold) コンプレッサーが働き始める音量のレベル 音源のピークレベルを見て、それがどの程度圧縮されるか望むかに応じて設定する。一般的には、ピークレベルより少し下の値から始め、必要に応じて調整する レシオ (Ratio) スレッショルドを超えた音量がどの程度圧縮されるかの比率 軽い圧縮には2:1から4:1、より強い圧縮には5:1以上を試す。音圧を上げたい場合は、4:1から始めるのが一般的だが、過度に圧縮しすぎないよう注意が必要 アタック (Attack) コンプレッサーが完全に作動するまでの時間 瞬時に反応させたい場合は短いアタックタイム(例:0.1msから10ms)、トランジェントを保持したい場合は長めに設定(例:30msから100ms)。ドラムなどのパンチ感を保ちたい場合は、アタックを遅めに設定 リリース (Release) コンプレッサーが作動を停止して通常のレベルに戻るまでの時間 自然なサウンドにするためには、リリースタイムを長めに設定(例:100msから1s)。リリースタイムが短すぎると不自然なポンピング効果が生じることがある ニー (Knee) スレッショルド周辺でのコンプレッサーの作動の滑らかさを調整。ハードニーは即座に圧縮を開始し、ソフトニーは徐々に圧縮を開始 より自然な圧縮を求める場合はソフトニーを、より明確な圧縮効果を求める場合はハードニーを選択 パラメータ間の関係性 # スレッショルドとレシオは、どれだけの圧縮をかけるかを決定する。スレッショルドを下げるとより多くの信号が圧縮され、レシオを上げるとその圧縮が強くなる アタックとリリースは、圧縮のタイミングとサウンドの自然さをコントロールする。アタックを遅くするとトランジェントが保持され、リリースを調整することでサウンドの自然な流れを保つことができる ニーは、スレッショルド周辺での圧縮の開始の滑らかさを決定する。ソフトニーはより自然な圧縮を、ハードニーはより明確な圧縮効果を提供する Podcastやナレーションの音声に適用する場合の例 # 刺す順番 # EQ→コンプレッサー→リミッター コンプレッサー # パラメータ 推奨値 設定の目安 スレッショルド (Threshold) -18dB ~ -12dB 通常の話し声がこのレベルを少し超える程度に設定 レシオ (Ratio) 3:1 ~ 6:1 3:1 = 自然な圧縮(軽め) 4:1 = 標準的な設定 6:1 = しっかりとした圧縮 アタック (Attack) 3ms ~ 10ms 早すぎる(1ms以下)= 不自然な音 遅すぎる(30ms以上)= 瞬間的な大音量を逃してしまう リリース (Release) 100ms ~ 300ms 自然なサウンドにするためには、話し方のテンポに合わせて調整 ニー (Knee) ソフトニー始 より自然な圧縮を求める場合はソフトニーを、より明確な圧縮効果を求める場合はハードニーを選択 メイクアップゲインは+3dB〜+6dB(圧縮量に応じて調整) レシオ3:1、スレッドショルド-18dBから始め、実際の音声を聞きながらパラメーターを微調整 リミッター # パラメータ 推奨値 設定の目安 Ceiling/Output Level(シーリング/出力レベル) -1dB〜0.3dB 絶対に超えてはいけない最大音量 -1dB = 安全マージンを取った設定 -0.3dB = ギリギリまで音量を稼ぎたい場合 Threshold(スレッショルド) -3dB ~ -1dB リミッターが動作を開始する音量レベル Ceiling -1dB、Threshold -2dB = 1dBの余裕 Release Time(リリースタイム) 5ms ~ 50ms リミッターが解除されるまでの時間 短い(5-10ms)= 透明感のあるリミッティング 長い(30-50ms)= よりスムーズだが音量変動が目立つ場合がある Look-ahead(ルックアヘッド) 2ms ~ 5ms 音声を先読みしてリミッティングのタイミングを最適化 ISR(Internal Sample Rate) 高い設定(多くの場合自動) リミッター内部の処理精度。より正確なピーク検出が可能に Ceiling-1dB、ThresholdをCeilingより2-3dB低く、Release10ms程度から開始 実際の音声で確認しなら調整。ゲインリダクションメーター1-3dB程度の軽いリミッティングが理想、 不自然なポンピング音がする場合はRelease Timeを長めに ピークが0dBを越えてないことを確認 EQ # 周波数帯域 周波数 例 低域(20Hz - 200Hz) 80Hz以下 不要なランブル音、エアコン音など 80Hz - 200Hz 声の厚み、温かみ 低中域(200Hz - 800Hz) 1kHz - 3kHz 声の温かみ、ボディ感 過度に強調すると[こもった」音になる 必要に応じて軽く減衰 中域(800Hz - 3kHz) 1kHz - 3kHz 声の存在感、前に出る感じ 2kHz - 3kHz 明瞭度に重要 声を前に出したい場合に軽く調整 高中域(3kHz - 8kHz) 3kHz - 6kHz 子音の明瞭度 5kHz - 8kHz 声の輝き、クリアさ 聞き取りやすさ向上のため軽く強調 高域(8kHz以上) 8kHz - 12kHz 空気感、オープンさ 12kHz以上 通常は不要(ノイズの場合が多い) 基本的な男性声用設定 # 60Hz以下: High-pass filter(不要な低域カット) 200Hz: -2dB(こもりを軽減) 1kHz: +1dB(存在感向上) 3kHz: +2dB(明瞭度向上) 6kHz: +1dB(クリアさ向上) 12kHz以上: -3dB(ノイズ軽減) 基本的な女性声用設定 # 80Hz以下: High-pass filter 300Hz: -1dB(こもりを軽減) 2kHz: +1.5dB(存在感向上) 4kHz: +2dB(明瞭度向上) 8kHz: +1dB(輝き向上) 15kHz以上: -2dB(ノイズ軽減)