時々唸るファンの音

色々と勉強してみたいと思ってる人の備忘録。

シンクルームを用いて収録するpodcast<実践編>

前回 タイトル通りのことを構想したふぁんだったのですが、

これを無事実践することに成功しましたのでここに報告します。

 

ふぁんFMに第0回として、お試し収録したのを近日アップロード予定だったりします!無事アップロードが出来たら聞いていただければうれしいなーと思います。(その際にはこちらでもそっと報告します。)

 

実際にシンクルームを使って収録してみて

 

まずはこれを聞いてもらおう!

 

 ディスコードも音質相当いいけど、それを飛び越える音質の良さがあった。

そしてズレない!!!ズレない!!!!!!!!!!!!!!!!!!

 

いいところもそれなりにあるんだけど、簡単には導入できないんだろうなって点を挙げておく。

回線がよくないとツラい

これは当然なんだけど、回線がかなり強くないとラグが出てプツプツする。

ゴールデンタイムに使用する際には回線品質にある程度自信がないとおそらく使い物にならないはず。

インターフェースの設置は慣れてないと大変

私は結構前からそういう機材を使ってたのである程度扱えるけど、

触ったことがないと結構大変みたい(友人を見てて)

編集作業は普段よりは丁寧にする必要がある

音声編集、素人ながら慣れてきた感じなのですが………

今までの知識を必死に使いながら編集しました。

ホワイトノイズは自分ひとりで収録するよりは結構強くのるので、その除去作業が普段より大変だったり、通信品質が悪い時にプツプツしたときのプツプツをなるべく柔らかくする作業とかは新しい作業だったりした。

逆に、通信品質が安定してるときの音声は抜群にきれいなのでホワイトノイズを取る作業を少しするだけで他にはほぼいじらなくてよかった。

無編集でもそれなりにはきれいだけど、聞きやすさを上げるにはここら辺の編集作業はあったほうがいいのかなー?と個人的には思う。(あくまで個人の感想です)

 

まとめ

簡単には導入できないし、これをpodcastにするには少し丁寧に編集したほうがよりよい感じになるって点はあるけど、完全オンラインで収録でいい感じの音質で収録する新たな方法として、私はもうちょっとコレを試してみたい…!

 

 

シンクルームを用いて収録するPodcast<構想編>

おひさしぶりです!

ふぁんです。

 

今日はPodcastの収録方法についてのブログを書こうと思います。

ズバリ…

 

シンクルームを用いて収録するPodcast

まずは、シンクルームの紹介をしようと思います。

公式サイトはこちら→

syncroom.yamaha.com

 

YAMAHAが開発したシンクルームというアプリケーションです。

もともと遠隔にいる人たちでセッションをする目的で作られた感じのアプリだったと思います。

何度かリモートで収録してるのですが、

一緒にタイトルコールをしようとするとズレてしまったり

通話の品質が安定しなかったりと問題があったのですが

 

あれ…もしかしてシンクルーム使えばラグ0でいい音質で収録できるのでは…?

と思った感じです。

 

このアプリケーション、ASIOドライバ対応してるオーディオインターフェースないと動かないとか、回線が強くないとダメとかあるのですが、それさえクリアできればいい環境で収録できそうな気がします!

 

我が家の中で、2台PCをセッティングして、テスト収録したのですが

思いのほかいい感じで驚いています!

 

残念ながら、夫は声出し・顔出しNGなのでオープンにはできません…

(なので、このブログのタイトルが構想編になっています)

 

私なりの詳しい使い方のまとめとかは

いずれきちんと収録出来たときに実際の様子と合わせて

<実践編>としてまとめようと思ってます。

 

現在、新番組の構想を練っています。

(ふぁんfmもそのうち更新予定です…ごめんなさい)

高校時代の友人と二人でおしゃべりする番組を作りたいなと思っています。

 準備中ですので、気長にお待ちください。

 

シンクルームを使えば、3人でも4人でも声合わせてタイトルコールできます!!!!!

楽しそう~~~~!

オーディオインターフェースとアナログミキサーを使用してPodcastの収録をした話

こんにちは~~!ふぁんです♪

Podcast 無理のない範囲で気軽に更新しようと思ってます!

誰かゲストを呼ぶのになるべくハードルを下げたい。と考えていました。

 

けっこうきれいな音質で収録しようとすると、

相手にも収録をしてもらうってのは一つ手段だと思うのですが

相手が収録の環境を持ってなかったりするとなかなか大変だよなぁと思っていたのです。

 

そこで、私の持ってるオーディオインターフェースとアナログミキサーである程度の解決ができそうだったので、ご紹介しようと思います。

 

今回しようしたもの

オーディオインターフェース:AG03

アナログミキサー:XENYX502

収録用PC

通話用PC

 

①まず、通話用のPCにAG03を接続します。

②AG03のLINEOUTに接続------>XENYX502のINPUTに接続

③XENYX502のヘッドフォンーーーーー>収録用PCのマイクの部分に接続

 

接続周りはこんな感じです。

 

あとは

通話用PCでの通話を

収録用PCの録音ソフトで拾ってあげる感じです。

 

AG03って、LOOPBACKついてるじゃん?

そうなのですが、ループバックをすると

相手の声がそのまま相手に返ってくるという現象が起きてトークバックが起きてしまうこともあります。

それを確実に阻止しつつある程度の品質を保とうとしたらこうなりました。

 

仮想ステミキじゃだめ?

たぶん全然ありだとおもうけど、

私の環境で適切に動作してくれなかったので、アナログミキサーに頼ることに。

確実に取れるし遅延も少ないし、悪くないと思ってる……!

 

相手の通話品質がある程度しっかりしてれば、

そのままきれいに収録できるよ!

 

~おしらせ~

ふぁんFMではゲストに出てもいいかたを募集しています!

ふぁんと雑にぬるっと雑談してもいいよ!って方がいたら

どうぞ気軽にご連絡ください~!

お待ちしております~~~~!

初心者がdiscordのbotを作ったお話。

おひさしぶりです

まずはさわやかに挨拶。

めっちゃ久しぶりです。生きてます。少し現実逃避してたけど、一応生きてます……。

お休みしてる間にいろいろやるべきことのスマート化をしました。

 

本題

ということで、本題いきますね。

今日は、discordのbotをつくってみた!というお話をしたいと思います。

まずは、こちらを見て頂こう。

 

あの後ちょっと機能足したけど、基本的にはコレ。 

なんでソレを作ろうとしたのか。

巷でちょこっと話題になってるN予備校のプログラミング入門でslackのbotを作ろうという内容があるのですが、それに取り組んでみたあと

ふぁん「あれ、これアレでは……よく使うdiscordのbot作れば楽しいんじゃね…?」

 

思い立ったが吉日…

さっそく取り組むことに。

 準備編

→基本的にはN予備校のプログラミング入門で基本的な環境構築ができてたのでそれに準拠します。

(色々記事を見てたら、ブラウザ上でdiscordbotを作れるサービスもあって試しに利用してみたんだけど、5分に1回アクセスさせるのがめんどくさかったし、やりたいことのテンプレートを利用したときのbotの動きがちょっと怪しかったので使用しないことにしました。)

 

N予備校プログラミング入門の記事のままだと、nodeのバージョンが低くて何もできないので、とりあえず最新版をツッコみます。

 

discord.jsを使ってもよかったのですが、

今回はErisを採用。(やりたいことの記事が全部コレ使用のモノだったので)

 

これらをすべて準備して、いよいよコードを書いていきます。

コードを書く

今回やらせたかったことは以下の事です

botにリプライでヘルプを出す

●「おみくじ」と記述でおみくじ機能

●ボイスチャンネルの入退室のお知らせを指定のチャンネルに流す。

--後で実装したのはおみくじ機能とほぼ一緒ですが、

FF14のコンテンツ、トレジャーハントの扉チョイス支援

(おみくじ機能の中身変えただけ)

 

記述の仕方は違うとは思うんだけど、

どういうことができるのか どんなイメージで実装するのかを参考にしたのがこちら。

 

scrapbox.io

 

やりたいことの逆引きで、ああこんなことができるんだなーを想像。

あとは一つずつ実装していく感じです。

 

 

const Eris = require("eris");

// botのトークンID
var bot = new Eris(
  ”botのトークンIDを調べて入れる。”
);
const textChannelId = "発言したいテキストチャンネルのIDを調べて入れる。";


bot.on("ready", () => {
  // botの準備できたら呼び出されるイベント
  console.log("Ready!");
});

// チャンネルに発言があったときのアクション

bot.on("messageCreate", (message) => {
  // botのメッセージは無視
  if (message.author.bot) return;

  // botにメンションでヘルプ
  message.mentions.forEach((user) => {
    if (user.bot) {
      bot.createMessage(
        textChannelId,
        "このbotのできる事 \n ●VCチャンネルの入退室のお知らせ \n ●「おみくじ」… おみくじがひけます \n ●「!扉」…地図の扉チョイス支援します \n ●「!深層」…地図の扉チョイス支援をします。(深層用) \n となっております。" 
      );
      return;
    }
  });
  
// おみくじ機能
  if (message.content === "おみくじ") {
    const lots = ["大吉", "中吉", "小吉", "末吉", "凶"];
    const lot = lots[Math.floor(Math.random() * lots.length)];
    bot.createMessage(textChannelId, `君の運勢は${lot} です!`);
  }
// 地図
  if (message.content === "!扉") {
    const doors = ['左','右'];
    const destinyDoor = doors[Math.floor(Math.random() * doors.length)];
    bot.createMessage(textChannelId, `君の行くべき道は${destinyDoor} だ!!`);
  }
  if (message.content === "!深層") {
    const doors = ['左','右','中央'];
    const destinyDoor = doors[Math.floor(Math.random() * doors.length)];
    bot.createMessage(textChannelId, `君の行くべき道は${destinyDoor} だ!!`);
  }

// 吉田
if (message.content === "!吉田") {
  bot.createMessage(textChannelId, `ミラクルフラッシュが決まったァァァ!`);
}
});

//入退室処理
bot.on("voiceChannelJoin", (member, newChannel) => {

  let ch = newChannel.guild.defaultChannel;
  bot.createMessage(
    textChannelId,
    member.username + "がVCチャンネル[" + newChannel.name + "] に滑り込んだ!"
  );
});

bot.on("voiceChannelLeave", (member, oldChannel) => {
  let ch = oldChannel.guild.defaultChannel;
  bot.createMessage(
    textChannelId,
    member.username + "がVCチャンネル[" + oldChannel.name + "] から逃げ出した!"
  );
});

// Discord に接続します。
bot.connect();

これで最初にやりたいと思ったことは全部実装できてる(はず)です。
botトークンIDは絶対に他人に漏らしてはいけないということを心にとめましょう。
ダメ、絶対。

botのIDの取得の仕方は先人が色々書いてくれてるので、詳しくは割愛するけど
Discord Developer Portalここからbot作ったりなどの管理ができるので、このあたりをよく見てみるといいと思う。

作ってみた感想

まずはN予備校のコンテンツがすごくてだいたい環境構築出来てたのがありがたかった。
これ、独力で全部やろうとするとすごく大変そう。
最初詰まったのは、Erisがうまくインストールできなかったことなんだけど、
よくエラーメッセージ読んだら「バージョン低くて無理です…」って感じだったから、バージョン上げてみたらスイスイいったので
きちんとエラーメッセージは読もうという感じです。

あとはbotの発言を無視しないと永久にチャットが流れてしまって、こういうことにきをつけないとダメなんだな~と。

色々勉強になりました。

楽しかったです。。

フィボナッチ数列とメモ化についての備忘録

久しぶりに技術っぽいブログを書く

おひさしぶりです。

ちょっとずついろんなことを学んでいる今日この頃です。

(たまにどうぶつの森してるけど…


 

今日は勉強していて初耳だったメモ化についての備忘録です。

私のために書くので分かりづらいとは思いますが…

知らなかった人は「へ~!」

知ってた人は「そうそう」って思ってくれれば幸いです。

(そもそもの解釈が間違ってたらさーせん!)
 

フィボナッチ数列について

これは有名な数列だから、ご存じの方も多いと思います。

n番目のフィボナッチ数をFnであらわすと、Fnは再帰的に…

F0 = 0,
F1 = 1,

Fn+2 = Fn +F(n+1) (n≧0) で定義される…

フィボナッチ数 - Wikipediaより

ってやつ。

実際の数字で言うと
0,1,1,2,3,5,8,13,21,34,55,89,144,233....って感じにふえてくやつだね。

0 と 1 があって
0 + 1 = 1
1 + 1 = 2
2 + 1 = 3
3 + 2 = 5
5 + 3 = 8
8 + 5 = 13
(以下略)
これを式にすると上記のものになるって感じだ。

それをプログラミングするとどうなる…?

私の安直な頭で最初に思い浮かんだのがコレ

JavaScript>

function fibonacci(n) {
  if (n === 0) {
    return 0;
  } else if (n === 1) {
    return 1;
  }
  return fibonacci(n - 1) + fibonacci(n - 2);
}
const length = 40;
for (let i = 0; i <= length; i++) {
  console.log(fibonacci(i));
}

一応出力はできるけど、const lengthを増やした時になんだか早くない。
なんでだ~?って思ったら
const lengthを増やすと爆発的に足し算する回数が増えてしまうみたいなんだって。
(こういう処理の増え方を指数オーダーと言うらしい…しらなかった…)

そこでアルゴリズムを使ってみるといい。

1度使った計算を保存し、後からをそれを読み取れればもしかして…
大幅に計算量が減るのでは……

そういう小技を「メモ化」というらしい。

なるほどなるほど。

それを実際のソースコードにするとこうなる。

JavaScript>

const memo = new Map();

memo.set(0, 0);
memo.set(1, 1);

function fib(n) {
  if(memo.has(n)) {
    return memo.get(n);
  }
  const value = fib(n - 1) + fib(n - 2);
  memo.set(n, value);
  return value;
}

const length = 40;
for (let i = 0; i <= length; i++) {
  console.log(fib(i));

なるほどなるほど、

memoの1番目には0、memoの2番目には1が入っていて
もし、nにすでにnが含まれていたらnを返し、
入ってなかったら計算済みのフィボナッチ数をmemoの中にぶち込むのか…?
(という雑な認識)

そして最後にvalueを返して出力…
なるほど…

たしかに足し算の回数が圧倒的に少ないように思える。
っていうか少ないじゃん。

これ考えた人すごく賢い、賢い…すごい…

ということでいろいろ勉強した1日でした。まる。

2020-3-19 ほんの少しの休息と

お休みをもらっていました

どうもみなさま、お久しぶりです。

かっ飛ばしすぎたのがよくなかったのかどうかはわからないのですが、少しエネルギー切れを起こしてお休みをしていました。

特別何も言わずに休んでしまい、一部の方に心配をおかけしました。

ごめんよ~!

 

今回の体調不良について

完全に予想はしていました…。

予測可能回避不可能的な感じでした…。

予測していてもどうにもならないこともあるんだなぁと再確認しました。

 

(良い子のみんなは、気付いたときにしっかり休むのだよ!)

 

ゆっくり過ごして今はちょっと元気になってきました。

今度はゆるゆる勉強していきたいと思ってます。

 

最近の過ごし方。

家でのんびりしてることが多いのですが、一日のうち少しでも散歩へ出るようにしています。

太陽光!大事!とっても!

 

あとは前々から少しずつ頑張ってた、N予備校のwebのアレも少しずつ進めて鬼門の2章もなんとか終わりそうです。うむうむ。

 

Podcastについて

ちょっとエネルギー使うことなので、

不定期更新になるかもしれないのですがまたやっていきたいなーと思ってます。

更新したときは聞いてくれると嬉しいです♪

 

よろしくおねがいします。

 

また、ゆるゆるTwitterとかで絡んでくれると嬉しいです。

よろしくお願いします。

 

 

2020-02-03 「嫌いにならないこと」を続ける重要性

「嫌いにならないこと」を続ける重要性

本日の日記の本編です。

最近、どこかでジュニアエンジニアになるのに500~1000時間くらい時間があればよいとかいう内容のものを見かけた気がしました。

 

ふぁん「なるほど…?新生~漆黒まで走る時間でいいのね!意外といけるかも。」(FF14脳)

 

という半分冗談みたいなお話は置いておいて、

 

そのジュニアエンジニアになるための時間の話を某所でしたところ、

「人が何かをきちんと習得するのに1万時間かかるという話を聞いたことがあります。なので、500~1000時間というのはある意味納得の時間数ですね。」とお返事をもらいました。

 

1万時間。たしかに。

実は、1万時間という時間数に心当たりがあります。

私が0歳~20歳(大学入学)までにかけた音楽の時間数はトータルで最低1万2000時間になります。

(授業以外の自主練(中高):2時間*6年、部活+外部合唱団練習(高校)3時間*3年、浪人時代12時間*1年=だいたい12000時間)

 

それを考えると「何かを修得するのに10000時間」というのは割と納得いく時間数ではあります。

 

好き*時間数 is 最強!だけど…

「好き」で時間数かけてる人は無茶苦茶強いです。

本当に強いです。

マジで強いです。

 

私も最初は好きで時間をかけていましたが、

大学に入って「好き」な音楽に自分を否定されてる感覚をしょっちゅう味わうようになり、苦しくなってしまいました。

結局、それが私が大学に通い続けられなくなる一つの要因になってしまいました。

 

その結果何が待っていたかというと、

「音楽がやれない」というところまで行きつきます。

1~2年ろくにやれなかったのを今でも覚えています。

 

好きって、案外怖いのかもしれない。

とぼんやりおもったりしました。

 

実は嫌いにならないことが一番重要なのではないか

何かすること、それ自体は特別好きなことじゃなくてもいいと思ってます。

1番好きじゃなくても全然いい。

でも「嫌いにならないこと」をやった方が、最終的にかけられる時間数が多くなる。

つまり、その分だけ強くなれる可能性がある。

 

好きな人ほど伸び率はよくないとは思うよ。

でも、普通くらいにやりたいことで「嫌にならない」ことをやるってのは、すごく強くなるんじゃないかと思いました。

今の私

正直、今の段階だとプログラミングが「嫌いにならないこと」かわかりません。

 

悔しいと思うことはあるけど、

それが嫌につながってないから、現段階では悪くない感じなのかなーと思ってます。

 

とにかく、毎日コツコツ頑張るしかないですね。

 

無理なく、でもしっかり頑張っていきたいな。