• 締切済み

関数の数式入力を音源ファイル出力するフリーウェア

mathematica や Matlab などの高額なソフトを使わないで 子供が三角関数の学習のために 数式を入力して、その波形がどのような音に聞こえるかを 家の中で自分で遊びながら学べるようにすることができる フリーウェアを探しています。 Windows 7 で作動するソフトをご紹介下さい。 もし、ソフトがない場合には、自作で波形関数の数式を音声出力させるための コードあるいはライブラリーをどのように見つけたらよろしか お教え下さい。 よろしくお願いいたします。

  • mqm
  • お礼率42% (581/1355)

みんなの回答

  • wek00
  • ベストアンサー率62% (90/145)
回答No.3

FunctionView http://www.vector.co.jp/soft/win95/edu/se104723.html Swave http://www.vector.co.jp/soft/win95/art/se089386.html グラフ関数電卓系と効果音作成系ですね。数式・関数・計算などのキーワードでヒットしました。 Win7ならNT4用辺りからなら動くものも珍しくないんじゃなかったかな... もっと これだ! というものがあったような気もするんですが。 参考: 質問の要件からは外れるものの、類似のソフトであり良い参考になるでしょう。 旧Win用はお持ちの環境では実行が難しいかもしれませんが何とかして 是非一度お試しください。 音知 http://www.vector.co.jp/soft/win31/art/se025492.html Sound Creator http://www.vector.co.jp/soft/win95/art/se058903.html 効果音めーかー http://www.vector.co.jp/soft/win95/art/se045171.html 効果音メーカー : WEBブラウザ上で効果音を作成できる無料ツール - PEKO STEP http://www.peko-step.com/tool/soundeffect/

  • wek00
  • ベストアンサー率62% (90/145)
回答No.2

Mathematica や Matlab、S言語といった数値計算ソフト(?)には クローンや類似の機能を持ったフリーソフトがあったりします。 数値計算用:   Scilab     日本語ドキュメントが充実しているのでオススメ。     本件で必要な機能は一通り揃っているのではないでしょうか。     デモとそのソース参照。evalもあるしGUIも作れるし     ウィンドウ枠なしの全画面表示も一応自前でできる。     helpにはサンプルコードの実行ができるものがあり     そこでコードの編集もできる。     (組込エディタを使用。起動コマンドはedit)     「Scilab GUI」でWebページを検索してみるのもいい。   Matlabクローン:     Octave     FreeMat 統計計算用:   S言語クローン:     R言語 数式処理用:   Maxima   Risa/Asir   ※Mathematica・Mapleを含め使ったことが無いので詳しいことは。    数値計算機能はあるようです。 plot関数など、特に画面表示を行う関数の多さと機能の豊富さと出来の良さは商用には遠く及びません。 (開発元がそこまで用意して無いだけなので自分で書けばできます) 最近は Python が人気ですね。猫も杓子もPy。NumPy や SciPy があれば Matlab いらんという人も多いのだとか。 Mathematica は以前から、Matlab は近年になってですが家庭向けのタダ同然の安価な販売形態がありますので是非ご検討ください。 商用はいい!一度使うと他のものは使えないレベルです。 JavaScript で波形生成&音再生は以前試したことがあります。よく覚えていませんしコードはどこかへ行ってしまいました。XP時代のULCPCだったしただ書いただけでシングルスレッドだったし書き方が悪かったかも知れないですが、1秒分生成するのに10秒程度まで改善したものの大幅な改善が難しそうな感じだったので諦めました。(Scilabは比較的低速ですが、同様の処理を最も低速な書き方で30秒、高速な書き方なら1/100秒) ブラウザで実行する関係上ローカルのストレージ上のデータの読み書きが面倒な上に制約が多いという難点もあります。ローカルネットワーク上にwebサーバを置いてサーバサイドで処理する仕組みのほうが結果的に簡単に済むかも知れません。 OKwaveのようなところで訊いてみればあっさり解決するかも知れませんね。 spwave のような生のバイナリデータを扱える音声ファイルエディタもありますので変換・再生機能はそういうものに任せてもいいでしょう。 描画を Gnuplot などに任せることもできます。(以前 Octave がそのようにしていました) 事実上ほぼ全ての言語・環境・ソフトウェアでお望みのことはできることになります。 有名どころはもちろん、 とっつきやすそうなところ(GUI機能を自前で持っているスクリプト実行環境)では   Hot Soup Processor (日本生まれ)   VCSSL (日本生まれ。ドキュメントが良く整備されている)   Squeak (目的には非常に合っている。しかし日本語情報は少な目)   LibreOffice(StarBasic) フリーじゃ無いけど Microsoft Excel(VBA) も圧倒的な利用者人口が絶対的に有利ですのでおすすめです。 コンパイル型の言語で起動後に数式を変更するとなるとパーサが必要になりますが、自分で書かなくてもコンパクトでフリーなコンパイラというのもあるのでそれに渡して処理させることができます。 参考: spwave http://www-ie.meijo-u.ac.jp/~banno/spLibs/spwave/index-j.html // 以下Scilab用コード samplecode1.sce の中身。 // コンソールに // exec samplecode1.sce; // などと入力して実行する // Play で再生 // Eval で数式を評価 // 数式のyの値がグラフ表示・再生されます。 // 数式は末尾に ; (セミコロン)をつけます。一行に複数書けます。 funcprot(0); //エラー抑制 //// //// sub //// //// function plot_sub(container) drawlater(); if ~isempty(ha.children)   delete(ha.children); end sca(ha); ix = 10900:11200; //表示区間は決め打ち plot(ix, container.y(ix),'.-','Markersize', 2) drawnow(); endfunction //// //// callback - play //// //// function pb_callback(s, Fs) playsnd(0.25 * s, Fs); // 振幅を少し小さくしてますが音量注意 endfunction //// //// callback - eval //// //// function ev_callback(container) fs = container.fs; t = container.t; execstr(hc2.String); //エラー対策してません! container.y = y; plot_sub(container) // Saving Data container = resume(container); endfunction //// //// main //// //// funcprot(1);  //エラー抑制を戻す fs = 44100;   //サンプリング周波数 t = 0:1/fs:.25; //0からXX秒までの時刻データの配列(1行だけの行列) y1 = sin( 2 * %pi * ( 440 * 2^(-9/12) ) .* t ); // sin(2πft) 約XX秒のデータ y2 = sin( 2 * %pi * ( 440 * 2^(-7/12) ) .* t ); y3 = sin( 2 * %pi * ( 440 * 2^(-5/12) ) .* t ); y4 = sin( 2 * %pi * ( 440 * 2^(-4/12) ) .* t ); y5 = sin( 2 * %pi * ( 440 * 2^(-2/12) ) .* t ); y6 = sin( 2 * %pi * ( 440 * 2^( 0/12) ) .* t ); y7 = sin( 2 * %pi * ( 440 * 2^( 2/12) ) .* t ); y8 = sin( 2 * %pi * ( 440 * 2^( 3/12) ) .* t ); y = [y1 y2 y3 y4 y5 y6 y7 y8]; //全部をつなげる //GUI作成 hf = figure(100,'position', [150, 32, 800, 400]); //button hc = uicontrol(hf, 'Style', 'pushbutton', 'Callback', 'pb_callback(container.y, fs)', ...   'unit', 'normalized', 'Position', [.85 .15 .1 .1], ...   'String', 'Play'); //button hc3 = uicontrol(hf, 'Style', 'pushbutton', 'Callback', 'ev_callback(container)', ...   'unit', 'normalized', 'Position', [.85 .3 .1 .1], ...   'String', 'Eval'); //edit box //複数行の編集を可能にする場合は付属のTCL/Tkやエディタを使うほうが良さげ。 str = ['y1 = sin( 2 * %pi * 262 .* t ); y8 = sin( 2 * %pi * 523 .* t ); y15 = sin( 2 * %pi * 1047 .* t ); y = [y1 y8 y15];']; hc2 = uicontrol(hf, 'Style', 'edit', 'Callback', '', ...   'unit', 'normalized', 'Position', [.05 .85 .9 .075], ...   'String', str); //描画領域 ha = newaxes(); ha.axes_bounds = [0 .1 .9 .9]; //受け渡し用変数にデータを格納 container.fs = fs; container.t = t; container.y = y; plot_sub(container);  //plot pb_callback(y, fs)   //初回再生

  • f272
  • ベストアンサー率46% (8010/17118)
回答No.1

面白そうだったのでpythonで作ってみた。 import numpy as np import wave x1 = np.linspace(0, 2*np.pi*262, 44100) #0から2π*262までの範囲を44100分割したxの値を作る x2 = np.linspace(0, 2*np.pi*294, 44100) #以下同様 x3 = np.linspace(0, 2*np.pi*330, 44100) x4 = np.linspace(0, 2*np.pi*349, 44100) x5 = np.linspace(0, 2*np.pi*392, 44100) x6 = np.linspace(0, 2*np.pi*440, 44100) x7 = np.linspace(0, 2*np.pi*493, 44100) x8 = np.linspace(0, 2*np.pi*523, 44100) x = np.hstack((x1, x2, x3, x4, x5, x6, x7, x8)) #全部をつなげて44100*8個のデータを作る y = (32767*np.sin(x)).astype(int) #対応したyの値をsin関数で作る.振幅は±32767の整数値 w = wave.Wave_write("output.wav") #書き出しファイルの指定 w.setnchannels(1) #チャンネル数1=モノラル w.setsampwidth(2) #サンプルサイズ2バイトは上記の振幅に対応 w.setframerate(44100*8) #サンプリングレート(1秒間のデータ個数)は上記のデータ個数と同じなので1秒間の音声になる w.writeframes(y) #ファイルに書き出し w.close() #ファイルを閉じる 適当に遊べるんじゃないかな。 Anacondaをインストールすればpythonと付属のライブラリが使えるようになります。

mqm
質問者

補足

早速のご回答をいただき、とても感謝しております。 Python を使ったことがありませんが、ブラウザー上で javascript を用いて 同じ動作をさせることが可能でしょうか。 もし JS で無理な場合には、Cの初心者レベルのコードを何とか フリーのコンパイラーで試してみるくらいの作業は 子供の学習用教材として週末に取り組んでみれるかもしれません。 よろしくご指導のほどをお願いいたします。

関連するQ&A

  • VCで作成したプログラムからMATLABあるいはMathematicaで作成した自作関数の呼び出し

    VCで作成したプログラムからMATLABあるいはMathematicaで作成した自作関数を呼び出したいのですが、やり方がわかりません。それ以前に、自作関数を呼び出すことができるのかもわかりません。ご存知の方はご教授をお願いします。 ちなみに、MATLABのホームページで調べてみたところ、MATLABが用意する関数を呼び出すことができるみたいです。自作関数を呼び出す方法についての説明は見当たりませんでした。また、DLLやCOMオブジェクトを作成する方法がありましたが、DLLやCOMではなく、MATLABファイルに記述された自作関数が呼び出せるようにしたいのです。Mathematicaについては全くわかりません。 自作関数を呼び出したい理由としては、数値解析のプログラムをVCで作っているのですが、このプログラムのコアとなる数値解析をおこなう処理をMATLABやMathematicaで作成した自作関数にまかせ、このコアとなる数値解析の処理を簡単に書き換えができるようにしたいのです。 以上、よろしくお願いします。

  • sin X の合成波を数式入力して.wav 出力

    sin X の合成波を数式入力して、.wav などの音源ファイルに変換するには 数学のカテゴリで、この質問をしたところ、 たくさんのソフトをご紹介いただきました。 https://okwave.jp/qa/q9380074.html この中のソフトに限らず 高等物理の知識を持たない、大学初級の数学しか知らない人間でも マニュアルを見るだけで、 波形を表わす数式を入力すれば 音声ファイルに変換してくれる 無料のソフトがあるのではないかと希望しています。 動作環境  Win 7  JAVA 利用許可なし よろしくお願いいたします。

  • 複素平面にプロットできるフリーソフト

    こんにちは 関数を複素平面上にプロット出来るソフトを探しています。 ex) y=sqrt(x^3/(x-5)) Mathematica、Matlabなどの有料のソフトでは出来そうなのですが、 無料のソフトを探しています。 どうぞよろしくお願いします。

  • 吸収スペクトルの波形分離解析ソフトについて

    FT-IRの測定で得られたスペクトルに対してガンマ関数やローレンツ関数を用いての波形分離解析を考えています。 導入された測定装置がこれらの処理には未対応でしたが、ASCIIファイルでのデーター出力はできるようなので、外部の解析ソフトでの処理を検討しています。 ただ、予算的に高額な市販ソフトの購入が厳しそうなので、適当なフリーウェアでもないか探しているところです。ちゃんと山の分離ができれば、とりあえずの方向性検討には充分だと思っているのですが、どなたか適当なソフト、ご存知ないでしょうか。

  • <Mathematica>微分方程式の計算結果をファイルに出力する方法?

    はじめまして. 現在,微分方程式をMathematicaで解いています. NDSolveを使ったあとにPlotすることで,例えば,振り子運動の時刻暦波形のようなものを画面上に出力する方法はわかるのですが,その時刻暦波形を生成したと思われるt,x(t)の組みがファイルに書き出せません. どのようにすればt,x(t)の組みをファイルに書き出せるのでしょうか? 要するに,微分方程式を解いた結果の t,x(t)の組み をファイルに書き出そうとしています.他のグラフソフトに読み込むためです. ご存知の方がいましたら,ご教授ください.お願いします.

  • 音量、音圧、振幅、定義式、matlabについて よろしくお願いします。

    はじめまして 音楽家(作曲、アレンジ)をやりながら大学の修士課程で信号処理(音声)の研究をおこなっています。 曲のミックス、マスタリング時において 各パートまたは2ミックスされたものに聴感上、音を前に出したり、迫力を出したりする時にコンプを使って音圧をあげます。 一般的には、このときにコンプを使うことによりデコボコだった時間軸波形を平らになるようにします。波形が変わるので若干音質も変化をします。 音量の上げ下げをするときは、ボリュームボタンを操作することにより音質を変えることなく音量を変えることが出来ます。 ここで質問なんですが 音量と音圧の定義(式)または違いは何でしょう? 次に matlabを使って音声信号処理シミュレーションを行っているときに 音声をmatlabに読み込み、音声の音量を変化させたいと思って、音声信号を定数倍することにより音量の変化を試みました。 ここで、音声を定数倍することにより音量を上げようとしたときに音質が変わる気がするのですが気のせいでしょうか?(音量の変化=振幅の変化?) 気のせいではないとしたら この理由として、自分なりの考えは matlabで扱える振幅の範囲を超えてしまい自動的にコンプがかかったような状態になったのではないか と思っています。 どうなんでしょうか? また、matlabのコマンドとして、取り込んだ音声データのボリュームを操作できる関数はないのでしょうか? さらに 音の音色を決めるのは「波形」だと言われていますが 市販されている各アーティストのCDをPCに取り込み波形を見ると、当然ですがミックスやマスタリングを行っていることによりほぼ平らになってます。 大体どんなアーティストのCDの波形を見ても同じ様な波形をしていると思いますが、 聞いてみると当然、それぞれのアーティストの曲が聞こえますね どうゆうことなんでしょうか? よろしくお願いします。

  • 拡張された逆正接関数の表記方法?

    Mathematica や Maple,Excel などでは,逆正接関数を用いて全象限について偏角が出力できるよう,拡張された逆正接関数が用意されております。例えば Mathematica の ArcTan[x,y],Maple の arctan(y,x),Excel の atan2(x,y) 関数などです。 さて,このような拡張された逆正接関数は実際の数学にも存在するのでしょうか? もし存在する場合,どのように表記するのでしょうか? もし数式が複雑な場合,TeX で教えていただければ幸いです。 どうか宜しくお願いいたします。

  • 数式エディタ

    Microsoft Word 2010を使っているのですが、それに入っている数式エディタがとても使いにくくて困ってます。初心者の方には分かりやすいかもしれませんが、たくさん数式を書くときには非常に面倒です。特に、Σ、指数関数、積分、下付き文字、などが不便です。 できれば、maxima、mathematica のような入力形式で数式を作ることができ、、Wordと互換性があるソフトがあれば教えてください。計算はできなくていいんです。数式が作れればいいです。また、Wordに入っている数式エディタを使わないで、数式を書く方法があれば教えてください。

  • ライン入力の音声をそのまま出力できるサウンドカードはありますか?

    自作PCでオンキョー製のサウンドカードse-80pci http://www2.jp.onkyo.com/product/products.nsf/view/7FD2EE9805D6554249256BC000258507 を付けています。ライン出力(LINE OUT×1 (RCA/STEREO))をコンポと繋いでパソコンの音声を聞いてますが、ライン入力(LINE IN×1 (RCA/STEREO))に繋いだ別機器の音声がスピーカーから再生されません。 ちなみにパソコンまでは音声が来てるようで、入力に繋いだ別機器を再生中にサウンドレコーダーなどを立ち上げ録音するとスピーカーから音は出ないものの波形は確認でき、録音したファイルを再生するときちんと録音はできています。 この端子は録音専用なのでしょうか? 入力端子に繋いだ音声がそのまま出力端子に流れるように出来ないのでしょうか? 他のメーカーパソコンなどではライン入力に繋いだ音声はそのままスピーカーから再生されるので同じように使いたいのですが・・・ サウンドカードの買い替えも検討してますが、メーカーの仕様などを見てもその辺のことが出来るものなのかどうかよく分かりません、 何方か分かる方いましたらよろしくお願いします。

  • 数式を画像にしたい

    数式の入ったサイトを作るために、 定積分、行列、 a - b の形の分数などをきれいに画像(PNG形式)として出力できるソフトを探しているのですが、みつかりません。 どなたか、簡単な入力で数式を画像(PNG形式)として上のような数式をきれいに出力できるソフト(できればフリーウェア)をご存知の方、教えてください。