録音データを変数で取得

タグの編集
投稿者 日々是好日  (社会人) 投稿日時 2021/7/13 14:49:53
'Vb2017で試しています。
mciSendString("save file " & "Data.wav", vbNullString, 0, 0)
'Data.wavファイルの代わりに直接変数で受け取る方法があれば教えてください。
'例えば Dim Data_Wav as string という変数に取得したいです。
'よろしくお願いいたします。
投稿者 (削除されました)  () 投稿日時 2021/7/13 23:02:01
(削除されました)
投稿者 るきお  (社会人) 投稿日時 2021/7/13 23:11:58
mciSendString関数でsaveを使ってファイルに保存されるべき情報を直接変数に格納することはできないと思います。
直接でなくてもよいのであれば、保存されたファイルを読み込んで変数に格納することは可能です。

オーディオはバイナリデータなので文字列型の変数で表現するのには適していません。変数に格納するのであればバイト型の配列で表現するのが普通です。
投稿者 日々是好日  (社会人) 投稿日時 2021/7/14 08:52:23
るきお 様
お返事ありがとうございます。
直接はできないとのこと了解です。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2021/7/15 02:28:00
MCI コマンドでの録音にこだわらないのであれば、
NAudio を用いて録音するという手もあります。

gist にサンプルを載せておきます。参考までに。
https://gist.github.com/Benshi/21c47c2c2873b236ca69889449e6c758
投稿者 日々是好日  (社会人) 投稿日時 2021/7/15 21:28:04
魔界の仮面弁士 様
ご指導有難うございます。
PM> Install-Package NAudio <CR> としましたら
Install-Package : パッケージ 'NAudio.WinForms 2.0.1' をインストールできませんでした
となりました」。
VS2017 Ver 15.9.37
Feamework Ver 4.8.03752
朝からVS2017更新、Win10 Pro Updateなどを行っておりますが
タスクマネージャーで確認したらディスク100%になりその対策で
苦労しています。
NAidioは後日試してみます。
現在ノートPCですがデスクトップパソコンも組み込み失敗しました。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2021/7/16 00:47:02
WinForm のプロジェクトを作成後、Visual Studio のメニューから
下記のように操作したら、組み込めないでしょうか?

(1) [ツール]-[NuGet パッケージ マネージャー]-[ソリューションの NuGet パッケージの管理] を選択

(2) ダイアログ右上の [パッケージ ソース] のドロップダウンで  nuget.org を指定

(3) ダイアログで『参照』タブを選択し、検索ボックスに「NAudio」と記入

(4) 一覧から NAudio を選択し、対象プロジェクトにチェックを入れて[インストール]ボタンを押す
投稿者 日々是好日  (社会人) 投稿日時 2021/7/16 09:51:36
魔界の仮面弁士 様
ご指導有難うございます。
>'NAudio.Wasapi 2.0.0' が WindowsApp1 に正常にインストールされました
>インストールに失敗しました。ロールバックします...
>パッケージ 'NAudio.WinForms.2.0.1' はプロジェクト 'WindowsApp1' に存在しません
>パッケージ 'NAudio.WinForms 2.0.1' をインストールできませんでした。
>このパッケージを '.NETFramework,Version=v4.6.1' を対象とするプロジェクトに
>インストールしようとしていますが、そのフレームワークと
>互換性があるアセンブリ参照またはコンテンツ ファイルがパッケージに含まれていません。
>詳細については、パッケージの作成者に問い合わせてください。
>経過した時間: 00:00:02.9725188
デスクトップPC Win10Pro
デスクトップPC Win7Home
の2台は上記のようになります。
ノートPC Win10Pro はディスク100%のため未確認です。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2021/7/16 11:16:14
>このパッケージを '.NETFramework,Version=v4.6.1' を対象とするプロジェクトに

WindowsApp1 の ターゲット フレームワークが .NET Framework 4.6.1 なのですね?
代わりに .NET Framework 4.7.2 または .NET Framework 4.8 を選択してください。

NAudio 2.0.1 自身の依存関係は「.NETFramework 4.6.1」を許容していますが(.NETStandard 2.0)
NAudio 2.0.1 が内部で利用している NAudio.WinForms 2.0.1 が「.NETFramework 4.7.2」用なのです。
投稿者 日々是好日   (社会人) 投稿日時 2021/7/17 08:34:10
魔界の仮面弁士 様
ご指導有難うございます。
.NET Framework 4.8にて組み込み出来ました。
Win7は簡単にできましたが
Win10はOSに.NET Framework 4.8がインストールできていても
VS2017プロジェクトのターゲットフレームワーク選択リストに
表示されないので
フレームワーク再インストール、VS2017更新、再起動を
数回繰り返していたら組み込み出来ました。
何が問題だったか不明です???
コンパイル結果の\bin\DebugにたくさんDLLができているのには驚きました。
WAVファイルを経由せずに直接変数が扱えるので助かります。
ありがとうございました。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2021/7/17 17:36:44
> VS2017プロジェクトのターゲットフレームワーク選択リストに
OS にインストールされている .NET Framework ランタイム本体と
開発で使う SDK (ソフトウェア開発キット; Software Development Kit) は別なのです。

SDK に同梱された Developer Pack あるいは Targeting Pack は開発環境でのみ必要な物ですが、
これらのパッケージが無いと、Visual Studio でターゲット フレームワークとして選択できません。

詳細は下記をご覧ください。
https://docs.microsoft.com/ja-jp/dotnet/framework/install/guide-for-developers
https://dot.net/

【Visual Studio 2019】 2019/04/02 リリース、2029/04/10 サポート終了、現行バージョン 16.10.3
 → 4.7.2 世代の製品だが、更新すれば 4.8 向けの開発が可能

【Visual Studio 2017】 2017/03/07 リリース、2027/04/13 サポート終了、現行バージョン 15.9.37
 → 4.6.x 世代の製品だが、更新すれば 4.7~4.8 向けの開発も可能

> Win10はOSに.NET Framework 4.8がインストールできていても
現在サポートされている Windows 10 は、21H2 および LTSB / LTSC を除くと
 Version 2004 (2021/12/14 まで)
 Version 20H2 (2022/05/11 まで)
 Version 21H1 (2022/12/13 まで)
の 3 バージョンですよね。


そして Windows 10 Version 1903 / 1909 / 2004 / 20H2 / 21H1 / 21H2 には、
既定で .NET Framework 4.8 がインストールされている状態です。

Windows 10 Version 1803 / 1809 では .NET Framework 4.7.2 が導入済み(4.8 まで更新可能)
Windows 10 Version 1709 では .NET Framework 4.7.1 が導入済み(4.8 まで更新可能)
Windows 10 Version 1703 では .NET Framework 4.7 が導入済み(4.8 まで更新可能)
Windows 10 Version 1607 では .NET Framework 4.6.2 が導入済み(4.8 まで更新可能)
Windows 10 Version 1511 では .NET Framework 4.6.1 が導入済み(4.6.2 まで更新可能)
Windows 10 Version 1507 では .NET Framework 4.6 が導入済み(4.6.2 まで更新可能)

Windows 8.1 では .NET Framework 4.5.1 が導入済み(4.8 まで更新可能)
Windows 8 では .NET Framework 4.5 が導入済み(4.6.1 まで更新可能)
Windows 7 では .NET Framework 3.5 Service Pack 1(3.5.1) が導入済み(4.8 まで更新可能)
Windows Vista では .NET Framework 3.0 が導入済み(4.6 まで更新可能)
Windows XP では .NET Framework 2.0 が導入済み(4 まで更新可能)
投稿者 日々是好日  (社会人) 投稿日時 2021/7/17 19:33:41
魔界の仮面弁士 様
ご指導有難うございます。
理屈はよくわかっていませんが
私が試行錯誤しているうちに開発環境がマッチして組み込めたようですね!!
4人の目の孫が今年高校に入りました。
私は娘が生まれた頃にマイコンやパソコンに巡り合い
8ビットマイコンアセンブラ
PC9801 N88Basic QBasic Vb5、6 と楽しみましたが
VB .Netには10年くらい前に挫折しました。
数年前から再トライしていますが
Api DLLまでは何とかVB.Netサンプルがあれば利用させていただいていますが
フレームワークはチンプカンプンです。
終活中の老人でした。



投稿者 魔界の仮面弁士  (社会人) 投稿日時 2021/7/17 21:15:20
> 私が試行錯誤しているうちに開発環境がマッチして組み込めたようですね!!

Visual Studio 2017 のインストーラーからでは
.NET Framework 4.8 の Targeting Pack を組み込めないようです。



そのため、VS2017 にて .NET Framework 4.8 向けの開発を行いたい場合には、
手動で Targeting Pack (と日本語 Language Pack) を入手する必要があります。

Visual Studio 2017 であれば、「ターゲット フレームワーク」を選択する際に
『別のフレームワークをインストールします...』を選択すれば、下記サイトに移動します。
(既にインストール済みなので今更だとは思いますが、情報共有ということで載せておきます)

https://dotnet.microsoft.com/download/dotnet-framework/net48
https://dotnet.microsoft.com/download/visual-studio-sdks

> 8ビットマイコンアセンブラ
> PC9801 N88Basic QBasic Vb5、6 と楽しみましたが
N88-BASIC が登場したのは昭和56年でしたね。
当時、自分は NEC 系ではなく、東芝系の OA-BASIC を使っていました。

OA-BASIC → (長いブランク) → N88-BASIC → Turbo Pascal → VB2 → VB4 → VBA → VBS → VB5 → …


> フレームワークはチンプカンプンです。
.NET Framework は 4.8 が最期のバージョンということで、
いよいよ今年 11月に、後継となる .NET 6 が登場しますね。(恐らく VS2022 と同時リリース)

.NET Core / .NET の新機能は、VB からだと使えない機能が多いので、
自分は最近、 C# ばかり使っています。