Dortmund

https://github.com/chilolin/dortmund

PHP

Laravel

MySQL

GitHub

JavaScript

コード、スケール、メロディのキャラクタを選択して自動作曲

Dortmund

推しアイデア

・メロの音程変化の滑らかさや伴奏への合い具合も調整できる!!

作った背景

音楽作っててメロディが思いつかないとき... コード進行にメロディが乗った感じを確認したいとき... に使えるものを開発しました。

推し技術

メロディのキャラクタを調整できる機能。選択されたメロに使うキーそれぞれの選択される確率(重み)を一つメロが生成される度にそれを含めて再計算することで実現した。

プロジェクト詳細

チーム開発 ++総括++ 主に、野方がメロや楽譜の生成といったデータベースや入力されたデータを加工する機能を、柳は音を出す機能の調整を、山岡は野方が書いたアルゴリズムやデータベースとのやりとりの部分をフレームワークにきれいに組み込んだりなど、ファイル間でのデータの受け渡しの部分を整理してくれた。 それぞれがやることを自分で意識して作業できたため、タスク管理で困るところはあまりなかった。

チーム開発でこまったところは、はじめgitの挙動になれてなく、あやまってファイルを削除したりしていた。めちゃくちゃになったのでgitにこの班で一番詳しかった山岡中心に問題を整理したあと、プロジェクトを立て直してやり直した。

それぞれの担当範囲 ++野方++

  • メロディ、楽譜生成
  • テーブル、モデル設計
  • Recreate,Return,ChordsSelectボタン
  • サイトデザイン
  • herokuへのデプロイ

難しかったところ デプロイ...MySqlの予約語('keys')でテーブル作っていたことや、HerokuのMySqlではidが10飛ばしで入ることでサーバーエラーを吐かれた。発表日当日にテーブルやモデルから作り直し、影響ある場所を書き換えた。 メロ、楽譜生成...テーブルでは一行ずつ上から描画するのが普通だが、メロディは横に進むように表示する。だから、上から描画するようにメロディのデータを楽譜用に書き換えた。また、メロ生成アルゴリズムを初めはjsで書いていたが、データベースとのやりとりを頻繁にするのでphpで書き直してフレームワークに組み込んだ。 テーブル、モデル設計...本当はChordとKeyは多対多の関係なのに、1対多でテーブル設計、リレーションをはじめ行ってしまっていた。そのせいでlaravelフレームワークにうまく乗れなかったため、全てやり直した。

++山岡++ 開発したもの

  • XAMPP、Laravel、github の環境構築
  • モデリング
  • コード選択画面の実装
  • スケール選択機能
  • Merody クラスの定義
  • チームへのGitの啓蒙

今回学んだこと

  • MVCフレームワークのModel、Controllerをどうやって使うのか
  • Laravel の実装
  • Xampp の繋ぎ方

難しかったところ

  • Model と Controller の分離...Googleで検索して、自分なりに解釈をして、DBのデータを直接いじるときは Model、DBからとってきたデータをいじるときはControllerにいじるようにした。
  • Merody クラスの実装...インスタンス変数をどれにするかとかがわからんかったので、クラス全体でつかうやつをそれに設定した。
  • Route の設定の仕方...Laravelの仕様をみた
  • Laravel mix の挙動...public/js 内のコンパイル後のファイルをみることで、Laravel mixの挙動を理解することができた。

++柳++ -Web Audio APIでメロ・コードを再生 -js読み込み 難しかったところ

  • Laravel Mixでコンパイルしたjsは関数スコープ内の独自関数となり使うことができず断念。他のjsもbladeに直書きまたはコンパイルせずにjsファイル作成の方針に。
  • 何度も曲を再生すること。Web Audio APIのライブラリを何度もfor文で呼び出すと音生成が途切れるという原因追求には時間がかかりました。

Dortmund

@g0ht4qxbz4ry56m