yoppa.org


人工知能、機械学習、深層学習、生成AIについて Teachable Machineで機械学習体験

本日の講義では、まず前回の課題で取り上げた人工知能(AI)、機械学習(ML)、深層学習(DL)、および生成AI(GenAI)の定義とそれぞれの特徴について解説します。その後、Teachable Machineを使った機械学習の基本的な体験を通じて、実際にモデルを訓練し、画像分類を行う流れを体感してもらいます。特に転移学習の仕組みと少数のデータで高精度な判別が可能となる理由についても触れます。最後に、生成AIの本質であるTransformerモデルに焦点を当て、次回へとつなげます。

スライド資料

本日の内容

  • 前回の課題の解説
    • 人工知能、機械学習、深層学習、生成AI、それぞれの定義と意味
    • GPTとは?
  • 機械学習について理解する
    • Teachable Machineで機械学習体験!
  • 生成AIの本質に迫る: Transformerについて
    • ニューラルコンピューティングからGPTへと至る30年の歴史

時事ネタ

今年のノーベル賞で、AI関係の研究者が2部門で受賞

  • ノーベル物理学賞
    • ジェフリー・ヒントン (Geoffrey Hinton)
  • ノーベル化学賞
    • デミス・ハサビス (Demis Hassabis)

ジェフリー・ヒントン (Geoffrey Hinton)

現代の人工知能(AI)研究の礎を築いた著名な計算神経科学者・コンピュータ科学者であり、特にディープラーニングの分野において重要な貢献を果たした

  • 逆伝播法(バックプロパゲーション)の普及
  • 制限ボルツマンマシン(Restricted Boltzmann Machines, RBM)モデルの開発

デミス・ハサビス (Demis Hassabis)

彼は、ディープラーニング技術を応用したAI企業「DeepMind」の共同創設者兼CEOとして知られており、DeepMindの革新的な研究成果

  • AlphaGoの開発
  • AlphaFoldによるタンパク質構造予測 など

デミス・ハザビス氏のドキュメンタリー映画「The Thinking Game」公開予定!

前回の課題の解説

  • 課題1: 4つの用語の定義
    • 人工知能 (Artificial Intelligence, AI)
    • 機械学習 (Machine Learnig, ML)
    • 深層学習 (Deep Learning, DL)
    • 生成AI (Generative AI, GenAI)
  • 課題2: GPTについて
    • GPTとは?
    • 「G」「T」「P」の意味

「人工知能」「機械学習」「深層学習」「生成AI」それぞれの定義と意味

映像を視聴

Introduction to Generative AI

ポイント:

  • AI、ML、DL、Gen AIの定義
  • 学習について (教師あり学習、教師なし学習)
  • 深層学習、ディープニューラルネットワークについて
  • 生成AIは深層学習の一部
  • 生成モデルと識別モデル
  • 大規模言語モデル: PaLM、LaMDAなど
  • Transformerモデルの重要性
  • Text-to-Text、Text-to-Image、Text-to-Videoなどの様々な生成AIモデル

Teachable Machineで機械学習体験

Teachable Machine
  • Googleの提供するTeachable Machineにアクセス
  • 本格的な生成AIについて考えていく前段階として、機械学習の基本を学ぶ
  • 教師あり学習 (転移学習) の基本の流れを体験
  • 画像読み込み → ラベル付け → 学習 → クラス分け (判別)
  • 様々な画像で試しながら実感してみる!

実習 1: Teachable Machineで機械学習

まずは学習を試してみる

  1. Teachable Machineで新規のImageプロジェクトを作成
  2. 数種類 (クラス) の画像セットをWebカメラで撮影
  3. 「Train Model」ボタンで学習開始
  4. Previewで確認、いまいちな場合は画像の撮影からやり直し

最初は「Image Project」が簡単なのでおすすめです。どのような画像のセットを学習させると面白いか考えながらいろいろ試してみましょう!

学習モデルを書き出す

Teachable Machineでは学習させたモデルを書き出してプログラムで利用することが可能です。様々な開発環境に対応して、サンプルのソースコードの生成まで簡単に行うことが可能です。

対応している環境

学習モデルの書き出し手順

  1. Teachable Machineで新規のImageプロジェクトを作成
  2. 数種類 (クラス) の画像セットをWebカメラで撮影
  3. 「Train Model」ボタンで学習開始
  4. Previewで確認、いまいちな場合は画像の撮影からやり直し
  5. 問題無ければ「Export Model」ボタンを押す
  6. Tensorflow.js > Upload (shareable linke) > p5.jsを選択して「Upload my model」ボタンを押す

書き出し設定

height:540px

学習させたモデルをp5.jsに読み込む

  • p5.js Editorにログイン
  • p5.jsのサンプルプロジェクトを開く
  • ファイルを複製して自分のプロジェクトに
  • モデルのURLを自分で学習したものに差し替えてみる
... (前略) ...

// 学習してアップロードしたモデルのURL
// !!ここに自分のモデルのURLを入力!!
let imageModelURL = 'https://teachablemachine.withgoogle.com/models/8dyZwOgL4/';

... (後略)...

実行結果

height:500px

ポイント! サンプルコードのどこで分類を行っているのかを読み解く

重要なのは、下記の関数

// 現在のビデオフレームを分類する
function classifyVideo() {
  classifier.classify(flippedVideo, gotResult);
}

// 結果が得られたとき
function gotResult(results) {
  // 結果は信頼度順に配列に格納される
  // console.log(results[0]);
  label = results[0].label;
}

重要なのは、results[] 配列

  • 画像を解析してその確度 (そのクラスである確率) が高い順番に配列に格納されている
  • ラベル名 (label) と確度 (confidence) が取得できる

例えば一番確度の高い結果のラベルとその確度を取得するには

let label = result[0].label; //ラベル
let confidence = result[0].confidence; //確度

分類結果のラベル (文字列) と信頼度 (0.0 – 1.0 の値)の一覧を表示

分類結果のラベル (文字列) と信頼度 (0.0 – 1.0 の値)の一覧を表示するサンプル

実行結果

height:500px

Emoji Cam

ちょっと工夫してみる。表情によって絵文字を表示するカメラのサンプル。この例では、普通の顔 (normal)、笑顔 (smile) 、悲しい顔 (sad) の3種類を学習してみました。

実行結果

height:400px
height:400px

なぜ少数の画像で判別できるのか?

  • 画像のクラス分け (Image classification)
  • 本来であれば膨大な学習データが必要
  • 画像 + ラベルのセット

大規模な画像データベースの例: ImageNet

ImageNet

  • 物体認識の研究で用いるために設計された大規模な画像データベース
  • 2024年10月現在、14,197,122個の画像を学習

転移学習 Transfer Learning

  • Teachable Machineが少数の画像で学習できる原理
  • あるタスクで学習したモデルを、関連する新しいタスクに適用させる手法
  • ゼロからネットワークを学習させるよりも高速で簡単
  • 学習にかかる時間を短縮できる
  • 学習対象となるサンプルデータの不足を補うことができる

転移学習はどのように動作しているのか

実習: Image Projectで遊んでみる!

  • Teachable MachineのImage Projectで遊んでみましょう
  • どのような判別をさせてみたら面白いことができそうか?
    • 画像を学習させてみる
    • イラストを描いて判別させてみる
    • ジェスチャーを学習させてみる
      ..etc.

次回予告 – 生成AIの本質に迫る

GPTとは? GPTに至る歴史

次回はいよいよGPTについて迫っていきます! 事前に予習したい方は以下のビデオを視聴してみてください。

ChatGPT: 30 Year History | How AI Learned to Talk

アンケート

講義に参加した方は、本日のアンケートに回答してください。


Strudel 基本 1 : 変なリズムを作ってみる – 変拍子、ポリリズム、ポリミーター、ユークリッドリズム

Toussaint, Godfried. “The Euclidean algorithm generates traditional musical rhythms.” 2005

先週の入門編に引き続き、Strudelを使用してリズムパターンを生成していきます。今回は、「変なリズム」を作成する様々な手法を紹介します。変拍子、奇数拍子、ポリリズム、ポリミーター、ユークリッドリズムといった様々な概念や手法と共に、Strudelでのパターン生成について理解を深めていきましょう。

スライド資料

サンプルコード

オーソドックスなリズム

// 8ビート
sound("hh*8, bd sd bd sd")

// 8ビート + シンコペーション
sound("hh*8, bd sd [~ bd] sd")

パラレルに演奏

sound("hh hh hh, bd casio")

sound("hh hh hh, bd bd, ~ casio*2 ~ cp")

sound("hh hh hh, bd [bd,casio]")

ポリリズム

sound("rim*4, hh*5")

sound("bd ~ rim ~, bd hh*2 hh ~ hh*2").bank("AkaiMPC60")

sound("bd*5, rim hh hh ~ rim hh <hh*2 hh> ~").bank("AkaiMPC60")

ポリミーター

sound("{bd sd bd hh, bd rim cp hh hh}")

sound("{lt*5, ht*4}").bank("AkaiLinn")

ユークリッドリズム

sound("bd(3, 8), hh(9, 16)")

sound("bd(3, 7), hh(9, 14, 5), cp(5, 7, 2)")

変拍子 + ユークリッドリズム + ポリリズム (+ ビジュアライズ)

sound("bd(2, 7), hh(11, 14), cp(5, 14, 7), lt(3, 3), mt(4, 4)")
  .bank("RolandTR909")
  .punchcard().color("gray")

参考資料

「変なリズム」な曲プレイリスト

  • Take Five, The Dave Brubeck Quartet
    • 変拍子 (5/4)
  • Money, Pink Floyd
    • 変拍子 (7/4)
  • Scatterbrain, Jeff Beck
    • 変拍子 (9/8)
  • The Fish, Yes
    • 変拍子 (7/8,)
  • Fire Back About Your New Baby’s Sex, Don Caballero
    • 変拍子 (7/8 → 3/4 → 4/4 → 7/8)
  • Never Meant, American Football
    • 変拍子 (12/4)
  • Morning Bell, Radiohead
    • 変拍子 (5/4)
  • STRUCTURE I, DATE COURSE PENTAGON ROYAL GARDEN
    • ポリリズム (8/5 + 4/4)
  • ポリリズム, Perfume
    • ポリミーター (4/4 + 5/4 + 3/4)
  • Discipline, King Crimson
    • 変拍子、ポリミーター (5/8 + 4/4, 17/16?)
  • The First Circle, Pat Metheny Group
    • 変拍子、ポリミーター (12/8 + 10/8)

アンケート

本日の講義を履修した方は以下のアンケートに回答してください。

※ 旧カリ「サウンドプログラミング」「環境情報デザイン」で履修の方はこちら


TouchDesigner入門(2) – 簡単な画像処理とFeedback、Switch TOPとキーボード入力

今回も前回に引続き、TouchDesignerの入門的な内容をTDSWの映像を教材にしながら学んでいきます。今回も主にTOPとCHOPを中心にした内容になっています。まず始めに、TOPを用いた画像処理 (輪郭抽出、グレースケール化、ぼかし、発光など) を行います。さらに高度な画像処理としてフィードバックループを用いた残像効果を作成します。後半はこの画像処理を、CHOPを用いてキーボードの入力によって切り替えられるところまでを目指します。

映像教材

【 TouchDesigner初級講座 】簡単な画像処理とFeedback #02
【TouchDesigner初級講座】Switch TOPとキーボード入力 #03

スライド資料

サンプルファイル

本日の課題

今日の最終のプログラムを改造して以下の処理を追加してください。

  • 画像処理の種類を4種類からさらに増やしてみる
  • キーボードの「3」を押すとさらに別の変化が起こるようにする
    • 回転スピードが変更
    • タイルの数の増減
    • …etc.

本日の課題

講義資料を参考に以下の課題とアンケートに回答してください。次週水曜日までを締切とします。



人工知能と創作 – オリエンテーション

height:480
Kate Crawford, Vladan Joler, Anatomy of an AI System (2018)

この講義では、生成AIの基礎から応用までを幅広く学び、創作におけるAIの可能性を探求します。まず、AIとは何か、ニューラルネットワークや機械学習、そしてディープラーニングといった基本概念を理解することから始めます。その後、プログラミング支援ツールやテキスト、画像、音楽、映像生成などの実例を通して、AIがどのように創作に活用できるかを体験します。AIによる自動化や生成技術がアートやデザインの現場にどのような変革をもたらすのかを探ると同時に、その限界や課題についても批判的に考察します。最終的には、各自が生成AIを活用した創作プロジェクトを企画・発表し、その成果を通じて未来の創作の可能性を展望します。

本日のスライド資料

講義概要

シラバス紹介

AIの技術的進歩は凄まじく世の中に多大な影響を与えています。アートやデザインといった創作の分野でも無視することのできない存在となっています。この講義は人工知能、特に生成AIの基礎から応用までを探求し、AIを用いた創造的作品を作成するプロセスを探求していきます。まず始めにGoogleのTeachable Machineなどのツールを活用しながらニューラルネットワークや機械学習といったAIの基本を学びます。さらにプログラミング支援、テキストと画像生成、音楽、インタラクティブメディアの生成、映像生成といったAIを活用した創作について掘り下げていきます。ここまでの内容を元に中間発表を行った上で、後半は各受講者が生成AIを用いた創作プロジェクトを企画します。それぞれが企画したプジェクトについて発表し、それを元にディスカッションを行い最終プロジェクトの作成に取り組みます。最後にそれぞれの作品を元にした展覧会を企画し、作品を展示し講評会を行います。

参考文献

徳井直生. “創るための AI: 機械と創造性のはてしない物語.” (2021).

height:480

美術手帖 2024年10月号[AIと創造性]

height:480

Lev Manovich, “Artificial Aesthetics: Generative AI, Art and Visual Media” (2024)

height:480

成績について

履修態度と課題の制作・プレゼンテーションを総合的に評価する。

  • 中間課題と最終課題を出題予定
  • 課題の評価と各回の講義内での評価で総合的に評価する

イントロダクション

Her (映画)

冒頭部分を視聴

height:480

Herの世界は既にChat GPTで実現されている! https://openai.com/chatgpt/download/

height:480

参考: OpenAIが示した「GPT-4o」の進化と、映画『her/世界でひとつの彼女』との共通項

疑問 – 生成AIを使って良いの?

「人工知能と創作」の講義ではAIテクノロジー、特に生成AIを積極的に使用していきます。まず始めにこの講義における生成AIへのスタンスを説明します。

※ この意見はあくまでこの講義の担当である田所の個人的なものです。生成AIの使用の可否はそれぞれの講義や実習の担当の教員の指示に従ってください。

生成AIの登場は、約30年前にインターネットでの検索エンジンのサービスが開始した当時と良く似ている

  • Yahoo!(1994)、Infoseek(1996)、Google(2000)
  • 今までは想像もできないことだった
  • 多くの知識が一般に開放された
  • それまでの常識 (勉強、調査、研究) を覆した
  • 検索サービス開始当初は反対する人も多くいた
    • 倫理的な視点「ネット検索はずるい」「コピペでレポート」
    • 学習効率的な視点「ネットで調べても勉強にならない」
    • 著作権的な視点「勝手に情報収集」
  • 「政府で規制すべき!」という人も

現在はどうなったか?

  • ネット検索はあまりにも強力で利便性が高い
  • 人類はもう元の社会には戻れない
  • いろいろな問題はありつつ、積極的に利用する方向へ
  • ネット検索を使えないことのほうが問題に

生成AIは検索よりもさらに強力な可能性を秘めている

  • 「検索」から「相談」へ
  • 膨大なデータから新たなものを創造(生成)可能
  • 様々なメディアに対応 (文章、画像、音楽、映像、プログラム)
  • 誰でもすぐに「巨人の肩の上に立つ」ことが可能

ただし問題点も…

  • 書かれている内容には嘘が含まれている可能性 → ハルシネーション(Hallucination)
  • 情報漏洩 – 機密情報や個人情報などを安易にChatGPTに送信することは危険
  • 著作権を侵害しているという問題提起
  • 社会に対する影響 (教育・研究活動)
  • 「生成AIはチート(いんちき、ずるい)」という意見もあり

「人類はこの数ヶ月でもうすでにルビコン川を渡ってしまったのかもしれない」 https://utelecon.adm.u-tokyo.ac.jp/docs/20230403-generative-ai

  • どうしたら問題を生じないようにできるのか、その方向性を見出すべく行動することが重要
  • その活用の可能性を積極的に探る

生成AIは今後アートやデザインといった創作の分野でも無視できない存在となっていくのは確実

  • 「人工知能と創作」では生成AIに正面から取り組んでいきたい
  • まだ非常に新しい分野
    • いろいろ試行錯誤しながら…
    • 今年やった内容が来年にはもう古くなっている可能性もあり
    • まだ誰もやっていなかった新たな作品を創作できる可能性大

John Maeda, The Design in Tech Report 2017 

人工知能と創作

この講義のテーマ「人工知能と創作」に関する2つの映像資料を視聴。

How This Guy Uses A.I. to Create Art | Obsessed | WIRED
AI Art: How artists are using and confronting machine learning | HOW TO SEE LIKE A MACHINE

参考資料

Refik Anadole, Unsupervised — Machine Hallucinations — MoMA (2023)

height:480

KATE Crawfordt, Trevor Paglen, Training Humans

height:480

Trevor Paglen, Behold these Glorious Times! (2020)

height:480

Kate Crawford, Vladan Joler, Anatomy of an AI System (2018)

height:480

Kate Crawford, Vladan Joler, Calculating Empires: A Genealogy of Power and Technology, 1500-2025

height:480

ポイント

  • 生成AIの技術はとても強力で新たな表現を生みだす可能性に満ちている
  • しかし、その背後には様々な問題も存在する
    • データの偏り
    • 巨大企業による独占
    • 大量なエネルギーの消費
    • プライバシーの問題
    • 著作権侵害のリスク
    • フェイクニュース
    • AIのブラックボックス化
    • …etc.
  • 生成AIを完全に拒否するわけではない
  • しかし無批判に全て受け入れるのでもない
  • 生成AIの利便性を享受しつつ、その問題や構造について批判的に考えていきたい
  • そのためには、生成AIの技術について正確なイメージを持つ必要 (!= 魔法)

次回までの課題

生成AIを駆使して調査をする練習を兼ねて、生成AIを用いて生成AIについて調べてみましょう。

次週までに以下の内容について調査して下記のオンラインフォームから調査した内容を記述してください。

  • 課題1: 以下の4つの用語について、それぞれの定義を調査して回答してください。
    1. AI (人工知能)
    2. 機械学習、マシーンラーニング
    3. 深層学習、ディープラーニング
    4. 生成AI、ジェネラティブAI
  • 課題2: ChatGPTなどで用いられている「GPT」という用語は何なのか、以下の2つの内容を調査してください。
    1. GPTとは何か?
    2. 「G」「P」「T」それぞれの文字が指している英単語とその意味

※ 調査には生成AIを用いて構いません!

課題回答フォーム (締切: 10/10まで!)

参考: 調査に有効な生成AIサービス

ChatGPT

https://chat.openai.com

  • OpenAIの提供する人工知能チャットボット
  • 登録無しでも使用できるようになった (GPT-3.5)
  • ただし有料版のGPT-4のほうが格段に強力
  • 画像生成、コード生成なども可能

Microsoft Copilot

https://copilot.microsoft.com

  • Microsoftによるサービス
  • OpenAI同様、GPTを使用している
  • Bing検索と組み合わせたネット情報の調査が得意
  • 画像生成、コード生成なども可能

Claude AI

https://claude.ai

  • 会話の流暢さはChatGPTやCopilotを凌ぐ印象
  • ややハルシネーションを起こしやすい?
  • 用途によっては有用

アンケート

本日の講義に参加した方は以下のアンケートに答えてください。(出席の記録も兼ねているので、必ず回答をお願いします!)


TouchDesigner入門(1) – バナナを回す! 基本操作とTOPの基本

今回からいよいよTouchDesignerを使って映像を制作していきます。まず始めにTouchDesignerのインストールと使用のためのキーが正しく登録できているか確認します。その上で、今回はTDSW YouTube Academyの映像を教材にして、基本操作を習得していきます。

スライド資料

サンプルファイル

本日の映像教材

【Introduction to TouchDesigner】Let’s rotate Banana in 10min ! #00
【 TouchDesigner初級講座 】基本操作と基本のTOP編 #01

本日の課題

チュートリアルを終えたら、以下の課題を行ってください!

課題1: バナナの画像を別の画像に変更して回転させる!

  • ヒント: movieFilein TOPのパラメーターで変更する

課題2: 回転する動きを、0°〜360°のくりかえしではなく以下の動きに

  • -180° 〜 180°
  • 180° 〜 -180°
  • 以上をくりかえす (シーソーのような動きに)
  • ヒント: LFO CHOPのパラメータを変更

本日の課題

講義資料を参考に以下の課題とアンケートに回答してください。次週水曜日までを締切とします。


Strudelはじめの一歩

スライド資料

参考映像

ドラムマシン (リズムマシン) について。

16 Legendary Beats – A short history of the 808 🟥🟧🟨⬜ | Drum Patterns Explained
A short history of the 909 in 16 songs ⬜🟧 from TECHNO and HOUSE to POP | Drum Patterns Explained
Jeff Mills Exhibitionist 2 Mix 3

この動画で紹介されているTR-808を使用した曲のプレイリストをSpotifyで作成してみました!

Strudelについて

Strudelとは

Strudel (シュトゥルーデル)

  • 語源: 薄い生地で具材を包んだパン
  • なぜこの名前にしたのかは不明

Strudelの特徴

  • ダイナミックな音楽作品を表現力豊かに作成
  • TidalCyclesのJavascript版
  • しかし、JavaScriptやTidalCyclesの知識は不要
  • Strudel REPL (https://strudel.tidalcycles.org/) のサイトにアクセスしてすぐに利用可能

Strudelで何ができる?

  • ライブコーディング: リアルタイムでコードを使用して音楽を作成
  • アルゴリズム作曲: Tidalの強力なパターン操作の機能を活用して、アルゴリズミックに音楽を作曲
  • 教育: 誰でもすぐに利用できるので、音楽とプログラムを同時に学べる!
  • 他の音楽制作環境と統合: MIDI、OSCなどを使用して外部の環境と連動できる

コード例

stack(
  // ドラム
  s("bd,[~ <sd!3 sd(3,4,2)>],hh*8")
    .speed(perlin.range(.8, .9)), // ランダムなサンプル速度の変化
  // ベースライン
  "<a1 b1*2 a1(3,8) e2>"
    .off(1 / 8, x => x.add(12).degradeBy(.5)) // ランダムなオクターブジャンプ
    .add(perlin.range(0, .5)) // ランダムなピッチの変化
    .superimpose(add(.05)) // 2つ目の、わずかにデチューンされた音声を追加
    .note() // "note"で囲む
    .decay(.15).sustain(0) // 各音符を同じ長さにする
    .s('sawtooth') // 波形
    .gain(.4) // 音量を下げる
    .cutoff(sine.slow(7).range(300, 5000)), // カットオフを自動化
  // コード
  "<Am7!3 <Em7 E7b13 Em7 Ebm7b5>>".voicings('lefthand')
    .superimpose(x => x.add(.04)) // 2つ目の、わずかにデチューンされた音声を追加
    .add(perlin.range(0, .5)) // ランダムなピッチの変化
    .note() // "note"で囲む
    .s('sawtooth') // 波形
    .gain(.16) // 音量を下げる
    .cutoff(500) // 固定カットオフ
    .attack(1) // ゆっくりフェードイン
).slow(3 / 2)
  • さらに詳しく: Strudel REPLにアクセスし、シャッフルを押してランダムにサンプルを聞いてみる

サウンド機能入門

はじめの一歩

  • 以下のコードを入力
sound("casio")
  • 音の操作
    • テキストフィールドをクリック
    • ctrl+enterを押して再生
    • casioからmetalに変更してみる
    • ctrl+enterで更新
    • ctrl+.で停止
  • 他のサウンドも試してみる!
    • 例: insect wind jazz metal east crow casio space numbers

サンプル番号をコロン (:) で指定

sound("casio:1")
  • 指定したサウンド(この例だとcasio)の種類を変更
  • 何も指定しない場合は :0 と同じ

ドラムサウンド

ドラムサウンド基本

sound("bd hh sd oh")
  • 始めから様々なドラムセットの音が入っている
  • 2つの文字はドラムセットの様々なパートを省略している
    • bd = bass drum (バスドラム)
    • sd = snare drum (スネアドラム)
    • rim = rimshot (リムショット)
    • hh = hihat (ハイハット)
    • oh = open hihat (オープンハイハット)
  • 文字を書き換えて様々なドラムパターンを作ってみよう!
    • 実際に音を聞きながら

応用: ドラムセットを切り替える

sound("bd hh sd oh").bank("RolandTR909")
  • .bank() を使用してドラムセットごと切り替えられる
  • その他にも以下のようなドラムマシンがあるので試してみよう!
    • AkaiLinn
    • RhythmAce
    • RolandTR808
    • RolandTR707
    • ViscoSpaceDrum
  • コピペすると楽!

シーケンス

  • シーケンス: 反復進行 (はんぷくしんこう sequence)
  • 同じ音のまとまりを何度も繰り返すこと
  • Strudelでは様々な方法でシーケンスを組み立てられる

シーケンス基本

sound("bd hh sd hh")
  • これまでやってきた基本
  • スペースで区切ることでシーケンス内で複数のサウンドを再生できる

沢山の音を鳴らす

sound("bd bd hh bd rim bd hh bd")
  • シーケンスが長い(たくさんの音がある)ほど速くなる
  • シーケンスの中身が1サイクルに押し込められるため

テンポを変更する

sound("bd bd hh bd rim bd hh bd").cpm(40)
  • 1つの方法は cpm() を使用する方法
  • cpm
    • cycle per minutes
    • 1分あたり何サイクルするか、という単位
  • その他にも方法があるがまた後述

休符

sound("bd hh ~ rim")
  • ~ は休符(音を出さないパート)をあらわす

サブシーケンス

sound("bd [hh hh] sd [hh bd]")
  • [] で囲うとサブシーケンスが作成される
  • シーケンスの1要素の中をさらに分割するイメージ

かけ算 – スピードアップ

sound("bd hh*2 rim hh*3")
  • 「* (かけ算)」記号はそのシーケンス内で分割してくりかえす
  • スピードアップ(カットアップ?)

シーケンスのスピードアップ

sound("bd [hh rim]*2")
  • サブシーケンスのかけ算も可能

高速かけ算

sound("bd hh*16 rim hh*8")
  • かけ算の数を大きくすると分割が細かくなる
  • 徐々に一定の音程に聞こえてくる

サブ・サブシーケンス

sound("bd [[rim rim] hh]")
  • [] を入れ子構造にすることで、サブシーケスのサブシーケンスをつくる

パラレルに演奏

sound("hh hh hh, bd casio")
  • コンマ(,)で区切って2つのシーケンスを記述する
  • パラレルに2つのシーケンスが演奏される
sound("hh hh hh, bd bd, ~ casio")
  • いくつでも増やせる
sound("hh hh hh, bd [bd,casio]")
  • サブシーケンスの中をパラレルに演奏

サンプル番号でシーケンス

n("0 1 [4 2] 3*2").sound("jazz")
  • このコードは以下のコードと同じ
sound("jazz:0 jazz:1 [jazz:4 jazz:2] jazz:3*2")

アンケート

本日の講義を履修した方は以下のアンケートに回答してください。

※ 旧カリ「サウンドプログラミング」「環境情報デザイン」で履修の方はこちら


オリエンテーション

「デザインとプログラミング」初回は、まずこの講義の概要と進め方について説明していきます。

その後は「なぜプログラミングが必要なのか?」という問いに対する回答として「ハイブリッドになろう」というテーマでプログラマーの歴史について解説します。さらにクリエイティブコーディングの開発環境について解説します。

最後に次回までの課題について説明して本日は終了です。

スライド資料

関連リンク

次回までの課題

1 まず今後の講義で使用する開発環境を準備していきます。

2. 作品を共有するためのプラットフォームに加入します

3 最後に以下のアンケートに回答してください

以上3点です! 締切は次回の授業の前日、2024年10月10日までとします!


サウンドプログラミング – イントロダクション

サウンドプログラミングの初回はオリエンテーションを行います。まずこの講義全体の概要と、講義の進め方、成績の基準、履修上の注意などの情報について説明します。

概要について理解した上で、まず始めにこの講義では「サウンドプログラミング」をどのように捉え、どういったアプローチで創作していこうと考えているのかを、これまでのコンピュータ音楽の歴史を踏まえながら解説します。また、講義前半で主に使用するStrudelについての導入を行います。

スライド資料

映像資料: Algorave Generation | Resident Advisor

サンプルプログラム

Strudel のエディターに1行ずつコピペして使用してください。

// まずは手拍子
sound("cp")

// 手拍子2回
sound("cp cp")

// 「*」で回数を表現
sound("cp*4")

// 様々な音の組み合わせ
sound("bd cp bd hh")

// さらに複雑に
sound("bd cp*2 bd hh*4")

// タメを入れるとノリ(グルーブ)が生まれる!
sound("bd cp*2 [~ bd] hh")

// 2回に1度演奏
sound("bd cp <~ bd> hh")

// 複雑なパターンへ
sound("bd cp*2 <bd [~ bd]> <hh hh*2 hh hh*4>")

// 複数の拍子を同時演奏(ポリリズム)
sound("[bd cp*2 cp, bd cp bd hh*3]")

// 複数の拍子をずらしながら演奏(ポリミーター)
sound("{bd cp*2 cp, bd cp bd hh*3}")

アンケート

本日の授業に参加した方は以下のアンケートに回答してください。

※ 旧カリ「サウンドプログラミング」「環境情報デザイン」で履修の方はこちら


TouchDesigner Audio Visual 基本の確認、AAVJ補足

今後のスケジュール

  • 7月5日 (金) : Audio Visual基本の復習、AAVJ補足
  • 7月12日 (金) : 休講 (申し訳ありません…)
  • 7月19日 (金) : 講評会の準備、制作実習、質問受付
  • 7月25日(木) [振替での金曜授業日]  : 最終講評会 (13:00 – )

Audio VIsual 補足: 外部音源のルーティング

  • 既存のサウンドファイルではなくリアルタイムに演奏/再生している音を取り込むには?
    • PCの入力 (マイク or ライン) を用いる
    • オーディオインターフェイスのループバック (Loopback) を用いる
    • PCの内部でルーティング ← このやり方の説明

Blackhole

  • MacOSの場合はBlakholeというフリーのシステム機能拡張を用いると便利
  • 以下からダウンロード
  • 設定が若干ややこしい… ネット上のチュートリアルを参考にして設定しましょう

参考: オーディオインターフェイスのループバック

例えばRME系のオーディオインターフェイスの場合

参考: Windowの場合

あまり決定打となる良いアプリが無い、強いていえばVoice Meter Banana?

Audio Visual基本の復習

まず2種類のテンプレートを確実に理解しましょう!

  • 音量ベースの解析: Audio Analysis COMP
  • FFT (周波数) ベースの解析: Audio Spectrum CHOP

それぞれの情報の取得までのテンプレートを確認します。

音量ベースの解析: Audio Analysis COMP

情報取得までのテンプレート

ダウンロード

FFT (周波数) ベースの解析: Audio Spectrum CHOP

情報取得までのテンプレート

ダウンロード

取得した情報を視覚化する

あとは、取得した情報で何かしらの視覚化を行うだけ。例えば…

  • 音量基本 – 周波数帯別の音量で円のサイズを変える
  • FFT基本- 左右のスペクトルを濃淡にしたTOPを作成してレイアウト

音量基本- 周波数帯別の音量で円のサイズを変える

ダウンロード

FFT基本- 左右のスペクトルを濃淡にしたTOPを作成してレイアウト

ダウンロード

さらにいろいろ工夫してみる!

音量ベース: 立方体(Box SOP)のサイズと回転角度を変化

ダウンロード

音量ベース: パーティクルシステムのパラメータをコントロール

これまで紹介してきたサンプルを活用した例

ダウンロード

応用: AAVJで複数のtoxをミックス

AAVJを使ってみる!

できる人はトライしたい! やり方はパッチを使用して解説します。

一式ダウンロード

それぞれのシーンはtoxファイルで作成されています。詳細はコードで!

アンケート

本日の講義に参加した方は以下のアンケートに答えてください。