641 Views
October 04, 23
スライド概要
Power Appsでメトロノームは作れるか ~いいチャンスなのでタイマーコントロール、オーディオコントロールを検証する~ 2023年10月04日(水) RPACommunity IT×音楽 LT大会
自己紹介 • ハンドルネーム:yukio • X(旧Twitter):@yukio_365 • ブログ:yukioのアウトプット (hatenablog.com) ・山口県出身・在住、1990年生まれ ・事務用品販売店(と言いながら、実際は何でも屋)勤務 ・2022年3月頃からPower Platformの勉強と、社内外の業務改善に挑戦中の市民開発者 ・社員が皆忙しすぎて、自分の作ったアプリ等に興味を示してくれないのが悩み
私と音楽
いつの間にか音楽を始め、一生の趣味に • 両親が吹奏楽経験者 • 特に勧められた訳ではないが、いつのまにか自分も楽器を始めた • 2009年に大学で管弦楽団に入団以降、大学や社会人のオーケストラ(管 弦楽団)、吹奏楽団、弦楽合奏団等でコントラバス(たまにエレキベースも) を演奏 • 2022年からは、Power Platformの勉強に集中するため演奏活動をお休み中 (いつか復活したい) 【好きな曲】←たぶん一部の人しかわからない (オケ曲)ショスタコーヴィチ:交響曲第5番(演奏は激ムズだけど聞くのは好き) (オケ曲)チャイコフスキー:交響曲第5番(特に2楽章は涙が出る) (吹奏楽)リード:アルメニアンダンスPart1(吹奏楽曲のド定番) (吹奏楽)アッペルモント:ブリュッセル・レクイエム(こちらも激ムズだけど大好き)
【今の目標】 楽器アプリを作って Japan Power Apps Orchestra (JPAO) に参加すること ※ ※「Power Apps入門」著者の小玉純一さん、Microsoft MVPの中村太一さん、他数名が中心となって行っている、 Power Appsで楽器アプリを作って演奏活動をしているコミュニティ YouTube再生リスト:https://www.youtube.com/watch?v=D95j5DJtC30&list=PL3FvsOxnrx3gApizCYy5QSJwpM6m51Tvk
今回のLTの経緯
きっかけは8/3のLT会後 【自動化やIT活用ネタ】ライトニングトーク大会~初参加者大歓迎~ - connpass
これはやらんにゃいけんじゃろ (山口弁)
さて、内容どうしよう • 以前から楽器アプリ作りたいと思いつつ、Power Appsのオーディオコントロー ルの使い方がイマイチ掴めなくて、なかなか進まなかったんだよね~ →この機会に楽器アプリ作るための準備、勉強をしてみよう! • メトロノームだったら、タイマーコントロールと連携して鳴らすだけでしょ? (浅はか) →基本の勉強にいいかも?
メトロノームとは • テンポの基準を音で鳴らしてくれるやつ(雑) アナログのメトロノーム 電子メトロノーム 兼 チューナー (私物、10年以上愛用)
Power Appsでメトロノームを作るには • タイマーコントロールとオーディオコントロールを連携して、 指定したテンポ(※)に応じてタイマーコントロールの時間を変化させて、 オーディオコントロールの音源を鳴らせばいいんだよね…(ざっくり) (※)音楽における「テンポ」に関する補足 ♩=60 → 1分間に♩を60回鳴らすようなテンポ → 1秒間に♩を1回鳴らせばよい ♩=120 → 1分間に120回 → 0.5秒に♩を1回
オーディオコントロール タイマーコントロールは どうやって使うのか (メトロノーム作ってみて分かった事)
オーディオコントロールの音が鳴る条件 • 再生ボタンを押したとき(当たり前) • 「Start」プロパティがfalseからtrueになったとき (変数を割り当て、タイマーで制御すればメトロノームが作れそう) 公式:https://learn.microsoft.com/ja-jp/power-apps/maker/canvas-apps/controls/control-audio-video
タイマーコントロールについて • 今回使った主要プロパティ ・Duration:タイマーを実行する時間の長さ[単位:ミリ秒] ・OnTimerStart:タイマーがスタートするときに動かしたい処理を記述 ・OnTimerEnd:タイマーが終了したときに動かしたい処理を記述 ・Repeat:trueにしておくと、タイマーが実行を完了したときに自動的に再開 ・Start:trueのときにタイマーが動く。 falseの時タイマーは動かない。 公式:https://learn.microsoft.com/ja-jp/power-apps/maker/canvas-apps/controls/control-timer
こうしてできた メトロノームがこちら (説明しきれないのでざっくりと紹介)
音源提供元: フリー効果音素材・無料効果音 (taira-komori.jpn.org)
作成した変数 • locStart(ブール型) • locHighTone(ブール型) • locLowTone(ブール型) • locTempo(整数型) • locBeat(整数型) • locBeatCount(整数型) :タイマーのStartプロパティに使用 :オーディオ(高音)のStartプロパティに使用 :オーディオ(低音)のStartプロパティに使用 :テンポ指定用 :ビート指定用 :カウンター
ビートの定義(コレクション)
メトロノームが動くまでの流れ (1)[START/STOP]ボタン押すと、まずlocStartがtrueになる (2)TimerのStart[locStart]がtrueになるのでタイマーがスタート (3)(2)と同時にTimerのOnTimerStartが働き、CountやBeatの値に 応じて、locLowTone(又はlocHighTone)がtrueになる →AudioのStartに[locLowTone(又はlocHighTone)]がはいっているので 音声スタート (4)Timer終了時、OnTimerEndが働き、Audioや各種変数がリセットされる カウンターのカウントアップも行われる (5)Timerの[Repeat]がtrueなのでタイマーがリセットされ、(2)に戻る (6)再度[START/STOP]ボタンを押すと[locStart]がfalseになり、 各種リセットが働く
Start/StopボタンのOnSelectプロパティ
オーディオのStartプロパティ (高音) (低音)
タイマーのOnTimerStartプロパティ
タイマーのOnTimerEndプロパティ タイマーのRepeatプロパティ タイマーのStartプロパティ
タイマーのDurationプロパティ
まとめ • Power Appsでメトロノーム、一応作れた。一応動いた →テンポが速いときに、オーディオ再生がおぼつかなくなり、 テンポキーパーとしての役割は果たせないものだった。 さらに連符が重なると尚更おぼつかない。 • 今回やったことは完全に遊びだが、タイマーコントロールとオーディオコント ロールの使い方を勉強/検証するいい機会になった。 • この経験をベースにして、楽器アプリを作っていきたい。 • きっかけを下さったかーでぃさん、いのうえさんに感謝。
ご清聴ありがとうございました