言語を問わずアプリを作成したい
解決したいこと
DJなどがよく使っている機材のMIDIというものをアプリで作りたと考えております
言語を問わず自分の手で作成してみたく、すでにアプリなどで出ているものなどのソースコードをまずみたいのですが、
ソースコードの探し方や見方がわからないので、探し方を教えていただきたいです。
DJなどがよく使っている機材のMIDIというものをアプリで作りたと考えております
言語を問わず自分の手で作成してみたく、すでにアプリなどで出ているものなどのソースコードをまずみたいのですが、
ソースコードの探し方や見方がわからないので、探し方を教えていただきたいです。
https://github.com/mixxxdj/mixxx
mixxxdjとか?
実際にコード読むと察せられると思うんですが実アプリはあまりに余計な実装が膨大(makefile,sample code,PackageManager等々)で
既にアプリ開発をできる人間が完成系をイメージするのにはいいのですがいきなり参考にするのは非常につらいです。
音響系やるなら有名な青木先生の"Pythonではじめる音のプログラミング -コンピュータミュージックの信号処理"あたりとかが適本になると思うのでそっちを触ってからがよいでしょう
DTM開発とかで調べても恐らく謎の単語が連発して迷走すること間違いなしです
青木先生の"Pythonではじめる音のプログラミング -コンピュータミュージックの信号処理"
@K_T9901STA01 さん、私も参考になりました。ありがとうございます。
そうだ、ソースコードの見つけ方みたいな話をするの忘れてた
多くのDTMやDJツールはプロプライエタリな商用ソフトの為勿論ソースは非開示です。
Githubでフワフワ探すのもよいですが普通に{DJ} {オープンソース}みたいな検索ワードで調べるのもよいですし
もう一つのやり方としてはGNU/Linuxで動くアプリを見つける事です
GNU/linux対応アプリは高確率でオープンソースであることが多く
紹介したmixxdjもLinuxに対応してます(高校時代にイキってUbuntuに入れてた( ´∀` )、ユーロビートしこしこ流してた)
こういった探し方も一つの手でしょう。
ただ前述の通り完成されたアプリは巨大な建築物のようなものでその分野に精通したエンジニアでもない限り全体像を把握するのは困難です
Mixxdjは基本実装はC/C++ですがベテランのC++erでもDJ分野のユースケースなどを把握せず挑めば読解には相当な手間を要すると思います(私も正直わからん)
なぜ困難かというとDJミキサーの場合
UIレイヤー
サウンドエンジンのコアレイヤー(勿論音声処理とかの理解は必須)
各種DJハードとの連携レイヤー
マルチプラットフォーム対応の為のレイヤー
など各種ドメイン知識前提のレイヤーが積み重なって構成されています。
それぞれのレイヤーの知識をキャッチアップして読み解く必要があるからです
逆に言えばこういうアプリを組むにはこういったレイヤーを理解する必要があるという理解を得ることができますが恐らく知識量を鑑みるに無謀でしょう
なのでまずはサウンドエンジンのコアレイヤーの基礎を固めて最低限の知識を得た上で
他のLayerや実際の実用ソフトの使い方なども把握しつつ実装に向けたイメージを固めて
やっと質問らしい質問もできるようになると思います。
てかまずは実際にDJとかやってみるのがいいのではないですかね、MIDI自体が機材ではないことは非エンジニアのDJとか電子音楽家でも多分常識だと思うので実際開発以前の問題な気がしますね、優しく言っても不勉強の批判は免れないとは思います。
まあおれもSoundプログラミングの専門家じゃないのですが・・・
@Kobayashi0620
Questioner
規格名だったんですか!!
ちょっと調べただけだったので詳しく教えていただいて助かります!!
@nak435様の言う通り、MIDIを製作するためのDTMやDAWのアプリを開発したいというような意味合いでしょうか?
そうであれば、まずはどの端末で実行するかアプリかを考える必要があるかと思います。
Windowsでなのか、Macでなのか、Androidでなのか、iPhoneでなのか、それともWebブラウザ上でなのか…etc
次に、端末が決まれば言語を選定していく必要があります。
例えばWindowsデスクトップアプリで開発してみようとなれば、「Windowsデスクトップアプリ 開発 言語」などで検索して、どんな言語で開発できるかを調べます。
C#なのか、C++なのか、Javaなのか、Pythonなのか…etc
さらに、上で見つけた言語名を用いて「MIDI 作成 言語名
」「DTM 開発 言語名
」などで検索してみて(日本語の情報が少なそうであれば英語でも検索して)、どの言語だと情報が多いかまで調べて開発する言語を選定するといいかと思います。
@Kobayashi0620
Questioner
詳細な説明ありがとうございます!
「DTM 開発 言語名」などで検索してみます!!
技術的な話でなくすみません。(反論は不要ですが、反論するのも自由です。技術的な範囲で)
先日、電車の中で、着信電話に応対(顧客対応のよう)している方に対して、7,8m離れている女性が【マナー違反です。皆が迷惑してます。ケータイを直ぐに切って下さい】と応対している声より大声で怒鳴っていました。
電鉄会社では電車内の通話は控えるようにお願いしています。その女性には電鉄会社はマナー違反を取り締まる【マナー警察】の権限を与えていません。
拡大解釈なのかは?知りませんが、【マナー警察】と認識すると全てが【正義の名の下】に慈悲なき制裁が実行されるようです。
そのような、社会を私達は他人事として、黙認した結果なのでしょう。その責任は黙認してきた、私にもあると痛感してます。
さて、私は、【マナー警察】でないので、降車駅にて駅員にその旨を伝えています。
皆さんも、運営がマナー違反を通知する正当な手続きで告知しましょう。
右上の...から、【この回答を報告】を選択することが正当な権利として皆さんに運営から与えられています。(自分で自分に技術的話でないと、運営にコミュニティー違反を通知しました)
p.s. 私、昔このサイトの重鎮である@v氏と喧嘩したことがあります。今回の事件を思えば、@v氏は聖人君主のようにおもえます。ここで、私の傲慢を謝罪させて下さい。大変失礼な物言いすみませんでした。
具体的に、何をどういう環境で作りたいのか、ここにあなたが書いたこと以外は知り得ない第三者が読んで分かるように言語化して、質問欄に追記してください。
それができないと、ここで聞いてもたぶん話が通じないと思います。
もっとも、それができれば聞く前にググるなどして自分で情報を集められるはずですが・・・
@Kobayashi0620
Questioner
よく一言余計って言われません?笑
タグにも記載している通り初心者のため、言語や環境の特性がわからないので実際にありソースコードを参考にして作成しようと考えていたんです。
作りたいものdjが使っているMIDIのようなもの
機能としては、録音機能、録音したものを登録する機能、ボタンを押したら録音した音声が流れる機能を作りたいと考えています。
アドバイスとして厳しめな意見を言っていただけるのは幸いですが、初学者を見下しているような表現なので、改善していただけると他の方も質問しやすくなると思います(余計な一文)
ガイドラインに書いてあるように "Qiitaは「エンジニアに関する知識を記録・共有するためのサービス」です" だそうです。なので、あなたのような教えてくんには適切な場所ではなさそうです。
@nak435 さんの回答のレスに「規格名だったんですか!!」と書いてあったけど MIDI をキーワードにググればそんなことはすぐ分かる。ここで聞く前にググって調べてなければ論外。調べても分からなかったならここで聞いても話は通じないので、事前に勉強して話が通じる程度には知識をつけましょう。
ちなみに「初心者」というのは、そういうことをやらなくてもいいという免罪符にはなりません。
@Kobayashi0620
Questioner
先ほどもお伝えした通り初学者です。
初学者の作りたいものはエンジニアに関する知識に入らないのでしょうか?
確かに、質問だけであれば、入らないかもしれません。
ただ、そこに心強い回答が加わればそれはエンジニアに関する知識になり得ます。
私は今回の質問で他の方からの回答をいただいたことにより、共有するに値する知識のなったと考えています。(初学者の私が勝手に思っているだけですが、)
確かに、教えてと全てを投げてしまったのは私が悪いです。
しかし、一年目やそこらの駆け出しです。
徐々にできていけるようにすればいいと思っています。(勝手に)
それを、「あなたのような教えてくんには適切な場所ではなさそうです。」などと否定されるのはこちらとしても凹みます^ ^
なので話す時は上からではなく目線を合わせて話すようにしましょう!
これはお互いにです!
ちなみにお伝えしておきますが、
「検索した上で最終的に行き着いたのが、MIDIという言葉です」
おれが正義だ、おれがただしいんだってことを言いたいわけじゃないんですよ^ ^
流石に分かりますよね?
私の言葉が、刺さったのかは知りませんが、
人の粗を探して突いて、変なプライド(自尊心) が高いのかは知りませんが、人間的には非常にレベルが低いと思いますよ(私が勝手に思ってるだけです^ ^)
しかし、一年目やそこらの駆け出しです。
徐々にできていけるようにすればいいと思っています。(勝手に)
学校や研修の場などで先生・講師に教えてもらうならそれで良いでしょう。
でもここは違うのですよ。もう一度書きますが、"Qiitaは「エンジニアに関する知識を記録・共有するためのサービス」です" ということです。
知識を共有するためには質問者からも情報の提供が必要ということは分かりますか?
私は今回の質問で他の方からの回答をいただいたことにより、共有するに値する知識のなったと考えています。(初学者の私が勝手に思っているだけですが、)
とのことですがそれは違います。
質問者からの情報の提供というのは、このスレッドの場合、私が最初に書いた「具体的に、何をどういう環境で作りたいのか、ここにあなたが書いたこと以外は知り得ない第三者が読んで分かるように言語化して、質問欄に追記してください」です。