yoppa.org


動画生成AIを使ってみる

スライド資料

本日の内容

  • 生成AIによる動画生成の簡単な歴史
  • 生成AIによる動画の生成に挑戦
  • 様々な動画生成AIサービスを紹介
  • 実際に使用してみる
  • フリーの動画編集アプリの紹介

生成AIによる動画生成の簡単な歴史

新たな創造性の時代の幕開け

テキスト入力から動画を創り出す技術は、もはや空想ではない

  • 技術革新: AIによる動画生成は、コンテンツ制作を効率化し、過去に想像もできなかった視覚表現を可能にしています
  • 目的: 本レポートでは、AI動画生成の技術的な発展、市場をリードする主要モデル、そして技術が直面する課題と倫理的な問題を解説します
  • 核心: 「拡散モデル」と「Transformer」の融合が、現実世界をシミュレートする新時代の扉を開いた

参考: The Evolution of AI Video Generation – Imagine.Art, accessed October 29, 2025

生成AI動画の歴史的変遷

AI動画生成技術は、数十年にわたる研究の積み重ねによって進化

  • 基礎の時代 (1960s-2000s): ルールベースの創造的アルゴリズムが登場し、AI研究の土台を築いた
  • GAN革命 (2014-2019): 「敵対的生成ネットワーク(GAN)」が登場し、リアルなメディア生成能力が飛躍的に向上しました
  • 新アーキテクチャの台頭 (2015-現在):
    • 拡散モデル: ノイズを除去することで高品質な画像を生成するアプローチです
    • Transformer: 「自己注意機構」により、データの文脈を深く理解する能力を獲得しました
    • この二つの融合が、現在の爆発的な進化の原動力となっている

核心技術:拡散モデルとTransformer

最先端モデルは、2つの強力な技術を組み合わせている

  • 拡散モデル(Diffusion Model):
    • 仕組み: 元画像にノイズを加え、それを元に戻す(デノイズ)プロセスを学習
    • 生成: ランダムなノイズから、テキストプロンプトをガイドに新しい画像を「彫り出し」ます
  • Transformer:
    • 仕組み: 「自己注意機構」により、データ内の要素間の関連性を理解し、文脈を捉えます
    • 応用: 動画データを「時空間パッチ」というトークンに変換し、言語のように扱うことで、動画全体の構造を理解します

拡散モデル

height:480

最先端モデルの例

2024-2025年にかけて、各社から高性能なモデルが登場

  • OpenAI Sora 2:
    • 特徴: 「ワールドシミュレータ」として、物理法則に準拠した最大1分間の一貫した動画と同期した音声の生成を目指します
  • Google Veo 3.1:
    • 特徴: 「シネマティック・ストーリーテラー」として、映画的な表現言語の解釈に優れ、高度な編集機能(参照画像、シーン延長)を備えています
  • Kuaishou Kling 2.5:
    • 特徴: 最大2分間という驚異的な長さの1080p動画を生成可能で、リアルな物理演算に強みを持ちます

クリエイター向けのツールも進化を続けている

  • Luma AI Dream Machine:
    • 特徴: スピードと使いやすさを重視し、ラピッドプロトタイピングやSNSコンテンツ制作に適している
  • Runway Gen-3 Alpha:
    • 特徴: 映画制作者やVFXアーティスト向けに、カメラの動き等を細かく制御できるプロ向けの統合ツール群を提供
  • Pika Labs (Pika Pro):
    • 特徴: SNSクリエイターに特化し、豊富なクリエイティブエフェクトと簡単な操作性で、魅力的な短尺動画の制作を支援

生成AIによる動画の生成に挑戦!

現状での動画生成AIの注意点

  • 画像生成AIと同様、様々なサービスが公開されている
  • 無料で利用できるサービスもあるが、本格的に使用するには課金が必要
  • 日々進化しているので、今回の情報も来年には古くなっている可能性大

Sora AI の衝撃!

  • Sora AI: OpenAIが開発した動画生成AIモデル、2024年2月発表
  • テキストプロンプトから高品質な動画を生成
  • ディフュージョンモデルを活用し、連続性と詳細な映像を実現
  • 現在はさらに発展させたSora 2が公開

別の動画生成AI (Runway ML) による短編映画

height:480
Battalion – My First Ever 5 Minute Gen AI Short Film

主要AI動画生成モデルの比較

モデル (開発元)コア技術最大動画長最大解像度特徴
Sora 2 (OpenAI)Diffusion Transformer1分1080p+物理シミュレーション、ネイティブ音声生成
Veo 3.1 (Google)Latent Diffusion Transformer1分+1080p+映画的言語の理解、高度な編集機能
Kling 2.5 (Kuaishou)Diffusion Transformer with 3D VAE2分1080p動画長、リアルな物理演算
Dream Machine (Luma AI)Ray Video Models約30秒1080p高速生成、使いやすさ、テキストによる編集
Gen-3 Alpha (Runway)Gen-3 Model Family40秒720p+統合されたプロ向けツール群、高度な制御性
Pika Pro (Pika Labs)Pika Model Series5秒+1080p豊富なクリエイティブエフェクト、簡易な操作性

実習: 動画生成AIを使ってみる

2.1 OpenAI Sora

  • URL: https://sora.com
  • サービス概要: OpenAIが開発したフラッグシップText-to-Videoモデル。物語の一貫性、物理世界のシミュレーション能力において業界のベンチマークを設定している。2025年後半には最新版のSora 2がリリースされた。
  • 特徴: 最大1〜2分の高品質な動画を生成可能。複雑なプロンプトを深く理解し、複数のキャラクターや特定の動きを含むシーンを忠実に再現する能力を持つ。また、生成した動画の前後を自然に延長するシーン拡張機能など、強力な編集機能も備える。
  • 料金体系: 既存のOpenAIサブスクリプション(ChatGPT Plus: 月額20ドル、Business: 月額25ドル)にバンドルされており、追加料金なしで利用できる。この戦略的なバンドルは、他社に対する大きな競争優位性となっている。

2.2 Google Veo & Flow

  • URL: https://labs.google/flow
  • サービス概要: GoogleがSoraに対抗して投入した主要な基盤モデルが「Veo」であり、その能力を最大限に引き出すために設計されたクリエイター向けのAIフィルムメイキングツールが「Flow」である。Veoは超現実的な映像品質とGoogle AIエコシステムとの連携を特徴とし、Flowは物語構築のための直感的なインターフェースを提供する。
  • 特徴:
  • Veo (モデル): プロンプト入力から完成までを一気通貫で生成するエンドツーエンドの能力と、卓越したリアリズムを誇る。ネイティブでの音声生成や、キャラクターの口の動きとセリフを同期させるリップシンク機能は他を圧倒する。滑らかなカメラワークやキャラクターの繊細な感情表現にも定評がある。
  • Flow (ツール): Veoを基盤とし、物語性のある映像制作を支援する多彩な機能を搭載。複数のクリップを繋ぎ合わせて一貫性のあるシーケンスを作成する「Scene Builder」、カメラアングルや動きを直接制御する「Camera Controls」、キャラクターやオブジェクトの一貫性を保つための「Asset Management (Ingredients)」など、プロのクリエイティブワークフローを念頭に置いた設計となっている。

2.3 Runway

  • URL: https://runwayml.com
  • サービス概要: クリエイティブプロフェッショナル向けの包括的な「AIマジックツールスイート」。単なるText-to-Videoにとどまらない、多岐にわたる生成・編集ツールを提供する。最新モデルはGen-4およびAleph。
  • 特徴: カメラパスのキーフレーム制御、特定の部分だけを動かすモーションブラシツール、参照画像を用いた人物やスタイルの一貫性維持機能など、高度なクリエイティブコントロールが最大の強み 25。迅速な試作を可能にする低コストのターボモードも提供する。
  • 料金体系: 複雑なクレジットベースのサブスクリプションモデルを採用。
  • Free: 125クレジット(初回のみ)、ウォーターマークあり。
  • Standard: 月額12ドル(年払い時)、毎月625クレジット、ウォーターマーク除去。
  • Pro: 月額28ドル(年払い時)、毎月2,250クレジット。
  • Unlimited: 月額76ドル(年払い時)、2,250高速クレジットに加え、「リラックスレート」での無制限生成が可能。ただし、ユーザーからは速度制限(スロットリング)の報告もある。
  • 商用利用: Freeプランを含む全てのプランで許可されている点が特徴的である。
  • 料金体系: Flowには月100クレジットの無料枠が存在するが、本格的な利用にはGoogle AIの有料プランへの加入が必要 49。
  • Google AI Pro: 月額19.99ドル。Flow用のクレジット(例:1,000クレジット/月)が付与され、Veo 3.1 Fastモデルが利用可能 49。生成された動画にはウォーターマークが付く 56。
  • Google AI Ultra: 月額249.99ドル。より多くのクレジット(例:25,000クレジット/月)が付与され、Veo 3.1の全機能にアクセス可能 57。ウォーターマークは付かない 56

Luma AI Dream Machine

  • URL: https://lumalabs.ai
  • サービス概要: 高品質な動きの表現、滑らかな物理演算、そして映画的な質感で高い評価を得ているプラットフォーム。
  • 特徴: 静止画をリアルな動きのある動画に変換する能力に長けている。品質とクレジットコストが異なる複数のモデル(Ray1.6, Ray2, Ray3)を提供し、ユーザーが目的に応じて選択できる。4Kへのアップスケーリング、HDR対応、リフレーミングといった高度な機能も備える。
  • 料金体系: 詳細なクレジットベースのサブスクリプションモデル。
  • Free: 毎月8本のドラフト動画生成、ウォーターマークあり、非商用利用のみ。
  • Lite: 月額7.99ドル(年払い時)、3,200クレジット、ウォーターマークあり、非商用利用。
  • Plus: 月額23.99ドル(年払い時)、10,000クレジット、ウォーターマークなし、商用利用可。
  • Unlimited: 月額75.99ドル(年払い時)、10,000高速クレジットに加え、リラックスモードでの無制限生成。
  • クレジット消費量は変動が大きく、例えば10秒の1080p解像度Ray2動画は340クレジットを消費する。

Pika

  • URL: https://pika.art
  • サービス概要: 高品質でありながら、クリエイティブで様式化されたエフェクトに重点を置いており、ソーシャルメディアコンテンツやユニークな視覚表現で人気を博している。最新バージョンはPika 2.2。
  • 特徴: 「Pikaffects」と呼ばれる独自のエフェクト群(例:膨張、溶解、爆発)が最大の特徴。動画内のオブジェクト操作や、動画全体のスタイルをアニメ調などに変換する機能に優れる。
  • 料金体系: クレジットベースのサブスクリプション。
  • Free (Basic): 毎月80クレジット、ウォーターマークあり。
  • Standard: 月額8ドル(年払い時)、700クレジット、ウォーターマークなし、商用利用可。
  • Pro: 月額28ドル(年払い時)、2,300クレジット。
  • クレジット消費量はモデルや機能によって大きく異なり、ユーザーからは「クレジットが数分でなくなる」との声も上がっている。例えば、Model 2.2を使用した10秒の1080p動画は45クレジットを消費する。

Kling

  • URL: https://klingai.com
  • サービス概要: 中国のショート動画プラットフォームKuaishouが開発。高品質な出力、リアルな物理表現、そして競争力のある価格設定で、主要プレイヤーの一角を占めている。
  • 特徴: 高品質な動画を最大1080p(上位プランでは4K)で生成し、最大3分までの動画拡張機能を備える。より高いクレジットを消費して高品質な出力を得る「プロフェッショナルモード」が用意されている。
  • 料金体系: クレジットベースのサブスクリプション。
  • Free: 毎月166クレジット(または毎日66クレジット)、最大720p、最大10秒、ウォーターマークあり。
  • Standard: 月額約10ドル、660クレジット、1080p、最大30秒、ウォーターマーク除去。
  • Pro: 月額約37ドル、3,000クレジット、4K、最大60秒。
  • プロフェッショナルモードで10秒の動画を生成するには70クレジットが必要。

参考: Runwayによる動画生成のテクニック

height:460
Masterclass: AI film Directing in Runway Gen 3 – Create Stunning Cinematic Shots!

参考: フリーの動画編集アプリの紹介

生成した動画素材をどうやって編集するか?

しかし無料でとても高機能の動画編集アプリもあります

DaVinci Resolve

  • フリーで利用可能な動画編集アプリ
  • Ultra HD 4K (3840×2160) までの解像度に対志
  • 高度なカラーグレーディング機能
height:400

次回までの課題

制作課題:「幻覚 – バッド・トリップ」

height:480

課題:

現代の生成AI技術がもたらす映像生成の可能性を探りながら、「幻覚 – バッド・トリップ」というテーマを動画で表現してください。不安や混乱、非現実的な体験をもたらすような映像作品を制作してください。視覚的な歪みや感覚の揺らぎといった要素を取り入れ、現実と幻覚の境界が曖昧になるような演出を試みてください。

  • 映像の長さ: 5秒〜1分程度
  • 動画生成AIを使用した映像を素材にすること
  • 生成した動画を素材にして映像編集アプリで編集しても良い
  • 次回の演習で提出と発表をしていただきます!

アンケート

本日のアンケート


openFrameworks 3Dグラフィクスの基本

この講義では、ここまで主に2次元平面上での描画による表現を扱ってきました。今回は2次元での表現からさらに(文字通り)次元を越えて、3次元空間での表現について考えていきたいと思います。

openFrameworksで3Dグラフィクスを扱う手法はこれまでとさほど変化はありません。なぜなら、openFrameworksの描画の基本はOpenGLで行っています。OpenGLはそもそも3次元のグラフィクスの描画のために開発されたライブラリであり、最初から3次元空間をとり扱うための様々な機能が備わっています。

しかし、3Dの物体を扱うには、これまでとは違った様々な要素が加わります。カメラ(視点)、ライティング、光と影(シェーディング)、奥行の重なりなどといった2次元の平面には無かった様々な技術や概念の理解が必要となります。

今回は、立方体 (ofBoxPrimitive) と球体 (ofSpherePrimitive) という3Dの基本図形の描画を通して、3Dグラフィクスの基本を学んでいきます。

スライド資料、サンプルプログラム

課題提出 + アンケート

課題提出+アンケートに回答してください。

課題提出+アンケート


「AI生成自画像」講評 / 生成芸術の歴史と未来

本日の内容

今回の「人工知能と創作」は、まず始めに課題「AI生成自画像」講評を行います。オンラインフォームから自画像をアップロードして作成した「生成自画像について」講評を行います。後半は生成AIによる画像生成を理解するためのヒントとして、生成AIが生まれる以前から現代までの生成芸術(Generative Art)の歴史を振り返り、未来に向けての展望を考えていきます。

スライド資料

「AI生成自画像」講評

本日は、前回の課題「AI生成自画像」の (簡単な) 講評から始めます!

本日のテーマ: 生成芸術の歴史と未来

本日は「生成芸術の歴史と未来」というテーマで、今後の生成AIによる作品制作のヒントになりそうなトピックスをどんどん紹介していきます!

“Amid the A.I. Deluge, What Counts as Art? Ask the Curators.”

AIの氾濫の中で、何がアートにあたるのか? キュレーターに聞く – The New York Times. “Amid the A.I. Deluge, What Counts as Art? Ask the Curators.,” October 18, 2025.

人工知能(AI)が生成するアートが、ニューヨーク近代美術館(MoMA)などで展示され始めています。これにより「人間の手が直接介在しない作品はアートなのか」という問いが生じています。この記事では、主要な美術館やキュレーターが、この新しい表現形式とどう向き合っているかを紹介しています。

要約

キュレーターの視点 多くのキュレーターは、AIアートの価値を技術的な目新しさや見た目の美しさではなく、その背後にあるアーティストの「意図」や「プロセス」にあると考えている。MoMAのキュレーターは「テクノロジーがアートなのではなく、最終的には個人の創造性とビジョンが重要だ」と述べている。特に、アーティスト自身がAIモデルの構築やデータの選別に深く関わる作品が評価されている。

美術館の対応 美術館の対応は二分している。MoMAのように積極的にAIアートを受け入れる機関や、アーティストのレフィーク・アナドル氏がロサンゼルスにAIアート専門の美術館「Dataland」を設立する計画もある。一方で、過去のNFTブームの沈静化を踏まえ、慎重に動向を見守る美術館も存在する。

今後の展望 AIアートに対する現在の戸惑いは、かつてキュビズムが登場した際に人々が抱いたものと似ている。新しい技術が登場した当初の熱狂が落ち着けば、やがて評価の基準が定まり、観客も自らの批評眼を持つようになるだろうと記事は結論付けている。

生成AI (Generative AI) と生成芸術 (Generative Art)

ここ10年ほどの生成AI(Generative AI)の発展は目覚ましいものがあります。しかし、現在の生成AIに至るまでには「生成芸術 (Generative Art)」の長い歴史があります。生成芸術とは、アルゴリズムやシステムを用いて、自律的に作品を生成する芸術の総称です。アーティストは作品そのものを直接制作するのではなく、作品が生成される「ルール」や「プロセス」を設定します。生成AIは、こうした生成芸術の最新の形態ととらえられます。生成芸術の歴史を理解することで、生成AIの可能性や限界、そして未来の展望について深く考える手がかりとなります。

生成芸術の歴史

生成芸術の歴史について網羅したすばらしい資料があるので紹介します。

生成芸術タイムライン (Generative Art Timelineによる分類)

  1. Pre-1850: Pre-Modern Era (近代以前)
  2. 1850-1949: Modern Era (近代)
  3. 1950s: Analog Era (アナログ時代)
  4. 1960s: Digital Era (デジタル時代)
  5. 1970s: Artist-Programmer Era (アーティスト・プログラマー時代)
  6. 1980s: Personal Computer Era (パーソナルコンピュータ時代)
  7. 1990s: Net Era (ネット時代)
  8. 2000s: Tooling Era (ツール時代)
  9. 2010s: AI Era (AI時代)
  10. 2020s: On-Chain Era (オンチェーン時代)

Pre-1850: Pre-Modern Era

70,000 BCE, Blombos Cave DrawingURLBlombos Cave Drawing

1866, John Venn’s “graphical indication of randomness”

1917, Composition with Lines by Piet Mondrian

1936, Alan Turing Describes the Turing Machine

1945 ENIAC Developed

1950s: Analog Era

1950 Alan Turing Proposes the “Turing Test”

1952, Electronic Abstractions by Ben Laposky

1956, Herbert W. Franke Begins Creating Art with an Oscillograph

1957, Max Mathews Develops MUSIC I

1960s: Digital Era

1962, Ivan Sutherland Invents “Sketchpad”

1963, Gaussian Quadratic by A. Michael Noll

1964, Hiroshi Kawano Publishes His First Algorithmic Images

1965, Computer Composition with Lines by A. Michael Noll

1965, The World’s First Computer Art Exhibit: Computergrafik by Georg Nees

1965, 13/9/65 Nr. 2 (“Hommage à Paul Klee”) by Frieder Nake

1966, CTG Pioneers Digital Generative SystemsURL copied

1966, Joseph Weizenbaum publishes ELIZA

1968, Cybernetic Serendipity Defines a Movement

1968, Vera Molnár Begins her Computer Art Phase with the “Interruptions” Series

1969, Sol LeWitt Brings His Wall Drawings

1970s: Artist-Programmer Era

1970, John Conway Publishes Landmark The Game of Life

1972, Noland Bushnell Invents First Video Game, Pong

1973, Harold Cohen Pioneers AI Art with AARON

1979, The First ARS ELECTRONICA Festival Takes Place in Linz, Austria

1980s: Personal Computer Era

1980, Digital Harmony: On the Complementarity of Music and Visual Art by John Whitney

1982, V-yramid by Nam June Paik

1986, Langton’s Ant Developed by Christopher Langton

1987, Photoshop Developed

1987, Adope Illustrator Developed

1988, Geometric Love by Masaki Fujihata

1989, Tim Berners-Lee Invents the World Wide Web

1989, The Legible City by Jeffrey Shaw

1990s Net Era

1990, Panspermia by Karl Sims

1990, The Evolution of Forms by William Latham

1991, World Wide Web goes public

1995, jodi.org by JODI

1996, Macromedia Flash 1.0 Released

1999, John Maeda publishes Design By Numbers

2000s: Tooling Era

2001, Casey Reas and Ben Fry Initiate Processing Project

2001, Inaugural Exhibition at bitforms: Casey Reas’s first public exhibition

2002, Super Mario Clouds by Cory Arcangel

2004, {Software} Structures by Casey Reas, Jared Tarbell, Robert Hodgin and William Ngan

2004, Reas Begins Process Compendium Series (2004-2014)

2005, Zach Lieberman releases OpenFrameworks v0.01

2010s: AI Era

2015, Google’s Alexander Mordvintsev Launches DeepDream

2018, Christie’s First Sale of an AI artwork

2019, MACHINE HALLUCINATION by Refik Anadol

2019, OpenAI Releases ChatGPT2

2020s: On-Chain Era

2021, DALL-E Launched

2021, Everydays — The First 5000 Days by Beeple

2021, Latent Diffusion Models Introduced

2021, The Shell Record by Anna Ridler

2023, OpenAI Releases ChatGPT 4

アンケート

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

アンケート


動きを生みだす – アニメーションとベクトル

今回からいよいよ動きのある表現(= アニメーション)について扱っていきます。アニメーションを実現するには、まず時間を扱う基本構造を知る必要があります。p5.jsでは、setup(), draw() という2つのブロックにわけて、初期化と更新を行うことでアニメーションを実現しています。まず始めはこの基本構造について理解します。次に、これから動きを扱う際に、向きと大きさをもった「ベクトル」という概念を理解します。ベクトルを理解することで、位置や運動を整理して記述することが可能となります。最後に、この基本構造をベクトルを活用して簡単なアニメーションを作成します。

スライド資料

前回の最終コード

今回 (10/31) はここから始めていきます!

ランキング (2024)

サンプルコード (課題のヒント)

本日の課題!!

本日の最終のコードを改造してランダムな要素を追加してください。

例:

  • 円の色をランダムな色に
  • 円の大きさをランダムに
  • (応用)円の動きをランダムに
  • …etc.

作品は、OpenProcessingに投稿した上でアンケートフォームから提出してください。

  • 完成した作品に、タイトルをつける
  • 投稿したURLをアンケートから提出
  • 投稿の際にsfc251024のタグをつけてください!
  • 締切: 来週木曜日23:59まで!

Strudel入門 4 – ビジュアルエフェクト

Strudelでは、音楽のライブコーディングにビジュアルエフェクトを追加できます。今回は、Strudelを用いてライブコーディングの演奏にビジュアルエフェクトを追加する方法を学びます。

いろいろなビジュアルエフェクト

ミニ・ノーテーションの強調表示

「二重引用符 “”」または「バッククォート “」を使用して記述すると、アクティブな部分が強調表示されます。

n("<0 2 1 3 2>*8")
.scale("<A1 D2>/4:minor:pentatonic")
.s("supersaw").lpf(300).lpenv("<4 3 2>*4")

色を変更したり、パターンを変更したりすることもできます。

n("<0 2 1 3 2>*8")
.scale("<A1 D2>/4:minor:pentatonic")
.s("supersaw").lpf(300).lpenv("<4 3 2>*4")
.color("cyan magenta")

グローバルビジュアルとインラインビジュアル

これ以降で紹介するビジュアルエフェクトは、すべて2つのバリエーションで提供されます。

  • グローバルビジュアル (プレフィックスなし): は、ビジュアルをページの背景にレンダリングします。
  • インラインビジュアル (接頭辞「_」を付ける): コード内でビジュアルがレンダリングされます。複数のビジュアルを使用できます。

グローバルビジュアル:

note("c a f e").color("gray").punchcard()

インラインビジュアル:

note("c a f e").color("gray")._punchcard()

punchcardとpianoroll

これら2つの関数はピアノロール形式のビジュアルをレンダリングします。2つの関数の唯一の違いは、 はpianorollパターンを直接レンダリングするのに対し、 はpunchcardその後に発生する変換も考慮に入れるという点です。

punchcard: 色が適用される

note("c a f e").color("white")
._punchcard()
.color("cyan")

pianoroll: 色が適用されない

note("c a f e").color("white")
._punchcard()
.color("cyan")

spiral (スパイラル)

スパイラルビジュアルを表示します。

note("c2 a2 eb2")
.euclid(5,8)
.s('sawtooth')
.lpenv(4).lpf(300)
._spiral({ steady: .96 })

Scope

同義語: tscope

オーディオ信号の時間領域のオシロスコープをレンダリングします。

s("sawtooth")._scope()

Pitchwheel

1オクターブ内の周波数を視覚化するためにピッチサークルをレンダリングします

n("0 .. 12").scale("C:chromatic")
.s("sawtooth")
.lpf(500)
._pitchwheel()

Spectrum

入力オーディオ信号のスペクトル アナライザーをレンダリングします。

n("<0 4 <2 3> 1>*3")
.off(1/8, add(n(5)))
.off(1/5, add(n(7)))
.scale("d3:minor:pentatonic")
.s('sine')
.dec(.3).room(.5)
._spectrum()

markcss

ハイライト表示されたイベントのCSSを上書きします。必ずシングルクォーテーションを使用してください。

note("c a f e")
.markcss('text-decoration:underline')

Hydra

Hydraは、ライブコーディングのためのビジュアルプログラミング環境です。Strudelでは、Hydraを使用して高度なビジュアルエフェクトを作成できます。

await initHydra()
osc(10, 0.9, 300)
.color(0.9, 0.7, 0.8)
.diff(
osc(45, 0.3, 100)
.color(0.9, 0.9, 0.9)
.rotate(0.18)
.pixelate(12)
.kaleid()
)
.scrollX(10)
.colorama()
.luma()
.repeatX(4)
.repeatY(4)
.modulate(
osc(1, -0.9, 300)
)
.scale(2)
.out()

note("[a,c,e,<a4 ab4 g4 gb4>,b4]/2")
.s("sawtooth").vib(2)
.lpf(600).lpa(2).lpenv(6)

H patterns

Hパターンを hydra への入力として使用できる特別な関数があります。

await initHydra()
let pattern = "3 4 5 [6 7]*2"
shape(H(pattern)).out(o0)
n(pattern).scale("A:minor").piano().room(1)

オーディオ検出

hydra オーディオ キャプチャを使用するには、構成パラメータinitHydraを指定して呼び出します。{detectAudio:true}

await initHydra({detectAudio:true})
let pattern = "<3 4 5 [6 7]*2>"
shape(H(pattern)).repeat()
.scrollY(
  ()=> a.fft[0]*.25
)
.add(src(o0).color(.71 ).scrollX(.005),.95)
.out(o0)
n(pattern).scale("A:minor").piano().room(1)

feedStrudel

このfeedStrudelオプションを使用すると、Strudelの視覚化をhydraで変換できます

await initHydra({feedStrudel:1})
//
src(s0).kaleid(H("<4 5 6>"))
.diff(osc(1,0.5,5))
.modulateScale(osc(2,-0.25,1))
.out()
//
$: s("bd*4,[hh:0:<.5 1>]*8,~ rim").bank("RolandTR909").speed(.9)
$: note("[<g1!3 <bb1 <f1 d1>>>]*3").s("sawtooth")
.room(.75).sometimes(add(note(12))).clip(.3)
.lpa(.05).lpenv(-4).lpf(2000).lpq(8).ftype('24db')
all(x=>x.fft(4).scope({pos:0,smear:.95}))

次週までの課題

1分パフォーマンスに挑戦!

ここまでの講義でStrudelの基本は一通り終えました。ただコードを手元で実行しているだけではつまらないので、まずは一人1分でミニパフォーマンスに挑戦してみたいと思います! 3分程度のStrudelのパフォーマンスを披露できるよう準備してきてください。

アンケート

アンケート


TouchDesigner基本 3 – SOPの基本

スライド資料

本日の内容

本日の講義では、TouchDesignerにおける3Dジオメトリ操作の中心となるSOP(Surface Operators)の基本的な使い方を学びます。SOPは、点、線、ポリゴン、NURBSなど様々な3Dデータを生成・編集するためのオペレーターファミリーです。まず、Sphere(球)やBox(立方体)といったプリミティブ図形の作成方法から始め、Transform SOPなどを用いた形状の変形方法を見ていきます。次に、作成した3Dジオメトリを画像として表示するためのレンダリングについて学びます。これには、Geometry COMP、Camera COMP、Light COMP、Render TOP、そしてマテリアルの設定が必要になります。さらに応用として、SOPを組み合わせて数式やアルゴリズムに基づき形状を自動生成するプロシージャルモデリングの基礎を学び、Merge SOPやCopy SOPを使った具体的な手法を見ていきます。最後に、簡単な実習を通して、学んだ知識を実践に繋げます。

  • SOPの基本
  • プリミティブ図形の作成
  • レンダリングの基本
  • カメラとライトの設定
  • プロシージャルモデリングの基本

SOPの基本

  • SOP = Surface Operators
  • 3Dジオメトリを生成、編集、操作するためのオペレーターファミリー
  • ジオメトリ: 3D空間における形状や構造を表すデータ
  • 点、線、ポリゴンメッシュ、NURBSカーブ/サーフェス、メタボールなど、さまざまなタイプの3Dデータを扱うことができる

SOPの主な機能と役割:

  1. ジオメトリの生成 (Generators):
  • 基本的な3D形状(プリミティブ)を作成
  • 例: Sphere SOP (球)、Box SOP (立方体)、Grid SOP (格子状平面)、Tube SOP (管)、Line SOP (線)、Circle SOP (円)
  1. ジオメトリの変形・加工 (Modifiers):
  • 既存のジオメトリに対して移動、回転、スケール、変形などの操作を加る
  • 例: Transform SOP (移動、回転、スケール)、Twist SOP (ねじり)、Noise SOP (ノイズによる頂点移動)、Subdivide SOP (細分化)、Extrude SOP (押し出し)
  1. ジオメトリの結合・選択・分割 (Combiners/Selectors):
  • 複数のジオメトリを結合したり、特定の条件でジオメトリの一部を選択・削除
  • 例: Merge SOP (複数のジオメトリを統合)、Join SOP (ポリゴンやカーブを接続)、Group SOP (点やプリミティブをグループ化)、Delete SOP (指定した点やプリミティブを削除)
  1. データの変換とユーティリティ (Conversion/Utility):
  • ジオメトリの種類を変換したり、ジオメトリに関する情報を取得・操作
  • 例: Convert SOP (ポリゴン、NURBSなどの形式変換)、Attribute Create SOP (新しいアトリビュートを作成)、Point SOP (点の位置やアトリビュートを個別に操作)、Sort SOP (点やプリミティブの順序を変更)
  1. 他のオペレーターファミリーとの連携:
  • SOP -> CHOP/DAT: SOP to CHOPやSOP to DATを使い、ジオメトリの頂点座標、法線、色などのアトリビュート情報をCHOP(チャンネルデータ)やDAT(テーブルデータ)に変換して、他の計算や制御に利用
  • CHOP/DAT -> SOP: CHOPやDATのデータをCHOP to SOPやスクリプト経由でSOPのパラメータやアトリビュートに適用し、ジオメトリを動的に変化させる(例:オーディオデータで頂点を動かす)。
  • レンダリング: SOPで作成・加工されたジオメトリは、Geometry COMPに格納され、Material (MAT) によって見た目が定義され、Render TOPによって最終的に画像としてレンダリングされる

プリミティブ図形の作成

SOPの基本的な使い方を学ぶために、まずはプリミティブ図形を作成してみましょう

height:400

ダウンロード

2D

  • Line SOP: 直線を作成
  • Circle SOP: 円を作成
  • Rectangle SOP: 長方形を作成
  • Grid SOP: 格子状の平面を作成

3D

  • Box SOP: 立方体を作成
  • Sphere SOP: 球を作成
  • Tube SOP: 円筒を作成
  • Torus SOP: トーラスを作成

SOPの操作

SOPのオペレータ上で様々な操作を行うことができます

height:400

ダウンロード

  • SOPを選択して、パラメータウィンドウで設定を変更
  • ビューワーアクティブにして、マウスで操作
  • 表示の切り替え
  • ワイヤーフレーム表示
  • 頂点の表示
  • 法線の表示 など

SOPのレンダリング

  • SOPを配置は3Dジオメトリの形状を作成しただけ
  • 最終的に画像として表示するためには、Render TOPを使用してレンダリングを行う必要がある
  • Render TOPは、3Dシーンを2D画像としてレンダリングするためのコンポーネント
  • 3Dを2D画像としてレンダリングするために必要な3つの要素
  1. カメラ: 3Dシーンを撮影するための視点
  2. ライト: 3Dシーンを照らすための光源
  3. マテリアル: 3Dジオメトリの見た目を定義するための素材

実際にオペレーターを接続しながら解説していきます!

SOPのレンダリング基本

height:400

ダウンロード

  • SOPでプリミティブ図形を作成
  • Geometry COMPを作成し、SOPを接続
  • Camera COMPとLight COMPを配置
  • Render TOPを作成し、Camera COMPとLight COMPが自動的に接続される

SOPにマテリアルの適用 + 回転

height:400

ダウンロード

  • Phone MATを作成し、Geometry COMPに接続
  • Render TOPに接続されたGeometry COMPのマテリアルを変更することで、ジオメトリの見た目を変更できる

SOPのレンダリング – 様々なパラメータを調整

height:400

ダウンロード

様々なパラメータを調整して、3Dジオメトリの見た目を変更してみよう!

  • カメラの画角や位置
  • マテリアルの色や質感
  • ライトの位置や強度
  • SOPの形状やサイズ など

応用: プロシージャルモデリング

  • SOPを使って、プロシージャルに3Dジオメトリを生成することができる
  • プロシージャルモデリングとは、数式やアルゴリズムを使って自動的に3D形状を生成する手法
  • SOPのパラメータを数式やCHOPのデータにリンクさせることで、動的に変化するジオメトリを作成できる

SOPのMergeとCopyとTransformでモデリング

height:400

ダウンロード

  • Merge SOPを使って、複数のジオメトリを結合
  • Copy SOPを使って、ジオメトリを複製
  • 複製の際に位置や回転やスケールを指定することができる
  • Copy SOPのTransformタブで設定
  • Transform SOPを使って、複製したジオメトリの位置や回転を変更
  • いろいろ試してみましょう!

応用: より複雑なプロシージャルモデリング

height:400

ダウンロード

  • 様々なSOPを組み合わせて、より複雑なプロシージャルモデリングに挑戦!
  • Line SOPとSweep SOPを組み合わせて、複雑な形状を作成
  • Line SOPをPattern SOPで変形させて波打つような形状へ
  • Coyp SOPを使って複製していく

実習: プロシージャルモデリングに挑戦

ここまでの内容を踏まえて、Copy SOPやTransform SOPを使って、プロシージャルモデリングに挑戦してみましょう!

  • 例えば、以下のような形状に挑戦してみてください
  • 複数の円柱を並べた形状
  • 波打つような形状
  • 複雑な幾何学模様

制作サンプル

アンケート

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


openFrameworksで複数の図形を動かす – 配列 (Array) と可変長配列 ( std::vector)

前回はopenFrameworksで、位置と速度という2つの変数 (Veriable) を使用して図形1つをアニメーションさせるところまで到達できました。今回はこのプログラムを応用して複数の図形を同時に動かす方法について解説していきます。複数の図形を動かすには位置と速度という2つのベクトルを個別の変数にではなくまとめて取り扱うデータの格納方法が必要となります。こうした場合には配列(Array)を使用すると便利です。それぞれのベクトルを配列にまとめることで、大量の図形のアニメーションをシンプルに記述することが可能です。さらに、あらかじめ物体の最大数が決まっていない際には、可変長配列 (std::vector) を使用するという方法もあります。この方法もあわせて解説していきます。

スライド資料

サンプルプログラム

スライドとあわせて、以下のプログラムのサンプルを参考にしてください。

課題提出 + アンケート

本日の授業を受講した方は、以下のフォームに回答してください。

課題提出+アンケート


反復と乱数

プログラムを構造化していく際に、3つの重要な構成要素があります。それは、「順次 (Sequence)」、「反復 (Iteration)」、「分岐 (Selection)」 です。今回は、この3つの構成要素の中の反復 (Iteration) に注目して、p5.jsで形を描きながら反復について考えます。また、一意的でないランダムな値である「乱数」と反復を組合せて、どのような表現か可能となるか探求していきます。

スライド資料

ランキング (2024)

おめでとうございます!

サンプルプログラム

本日の課題!!

乱数 (random) と繰り返し (for) を使用して、表現してみましょう!

  • 作品は、OpenProcessingに投稿
  • 完成した作品に、タイトルをつける
  • 投稿したURLをアンケートから提出
  • 投稿の際にsfc251017のタグをつけてください!
  • 締切: 次週木曜23:59まで

アンケートフォーム

  • 今回のアンケートフォームから、前回の提出作品の人気投票を行います!
  • 前回のタグsfc251010でOpenProcessingで検索 (検索方法をSketches that are tagged にする必用あり)
  • 一番良いと思った作品に1票投票 (自信があれば自分の作品でも可)

Transformer – ChatGPTへ至る30年の歴史 / 画像生成AI導入

スライド資料

本日の内容

ChatGPTなどの生成AIに至るまでには、約30年にわたるニューラルコンピューティングの歴史があります。今回は、その歴史を振り返る映像を視聴し、生成AIの基盤技術であるTransformerについて理解を深めます。さらに、Transformerの仕組みをより詳しく知りたい人のための参考資料も紹介します。後半では、様々な画像生成AIサービスを実際に試し、その特徴や使い方を学びます。最後に、次回までの課題として、画像生成AIを使って自画像を作成することに挑戦します。

ChatGPTに至る30年の歴史

ChatGPT: 30 Year History | How AI Learned to Talk

動画の要旨

  • チャットGPTの登場: チャットGPTは一般人が会話できる最初のプログラムで、チューリングテストを打ち破った。
  • 言語の複雑さ: 以前、多くの言語学者はコンピューターが人間の言語を理解することは不可能だと考えていたが、今はその多くが考えを改めている。
  • 教師あり学習の説明: 過去のニューラルネットワーク研究は、固定された目標に対して一つのタスクを学習するものであったが、汎用的なシステムへの道筋は見えていなかった。
  • 順序学習の初期研究: 1986年、ジョーダンは再帰型ニューラルネットワーク(RNN)を使ってシンボルの順序を予測させる実験を行い、ネットワークに記憶の概念を導入した。
  • エルマンの研究: ジェフリー・エルマンは、言語における単語の境界をニューラルネットワークが自動的に学習することを発見した。
  • Transformerの導入: 2017年、言語翻訳の問題に対応するためにTransformerアーキテクチャが開発され、これが現在の大規模言語モデル(LLM)の基盤となった。
  • GPTシリーズの進化:
    • GPT-1: Transformerアーキテクチャを使用し、次の単語予測問題に適用。
    • GPT-2: ウェブから収集したデータを使用し、さらに大規模なネットワークで優れた言語生成を実現。
    • GPT-3: 1750億のパラメーターを持つネットワークで、ゼロショット学習などの新しい機能を発揮。
  • 哲学的な議論: AIが本当に「思考」しているのか、それとも思考をシミュレートしているだけなのかについて、研究者間で議論が続いている。

LLM (大規模言語モデル) とTransformerのしくみ

LLMの仕組み(簡単バージョン) 3Blue1BrownJapan

とても分かりやすくLLMやTransformerの仕組みを解説した動画

動画の要旨

  • 大規模言語モデル(LLM)の本質
    • LLMは次に来る単語を予測する数学的関数。
    • 一つの単語を断定せず、確率を割り当てて予測する。
  • 応答生成のしくみ
    • ユーザー入力を基に、AIが応答として言いそうな単語を順に生成。
    • 確率の低い単語も選ぶことで、自然な文が生成されやすくなる。
  • 訓練データとスケール
    • GPT-3の訓練データを人間が読むには2600年以上かかる。
    • 現在のモデルはさらに多くのデータで訓練されている。
  • パラメーターの調整
    • 数千億個のパラメーターがモデルの振る舞いを決定。
    • 最初はランダム、訓練により精度が向上。
  • 学習プロセス(事前訓練)
    • 入力と正解を比較し、誤差に基づきパラメーターを更新(バックプロパゲーション)。
    • 繰り返し訓練することで未知の入力にも対応可能になる。
  • 圧倒的な計算量
    • 1秒に10億回計算しても、全体には1億年以上かかる規模。
  • 強化学習(RLHF)
    • 事前訓練後、ユーザーの好みに合わせて人間のフィードバックで再訓練。
    • 有用な応答を優先するようモデルを微調整。
  • トランスフォーマーの登場
    • かつてのモデルは1単語ずつ処理、トランスフォーマーは全体を並列処理。
    • テキストを数値に変換し、文脈を考慮して意味を更新。
  • アテンション機構
    • 各単語が他の単語と情報をやり取りし、文脈に合った意味へ変化。
    • 例えば「バンク」が「川岸」になるなど。
  • フィードフォワード構造
    • より多くの言語パターンを学習する補助機構。
    • 複雑な演算を通じて、文の意味を豊かに符号化。
  • 予測とその不確実性
    • モデルの予測は確率分布として表現される。
    • 設計された枠組みはあるが、具体的な振る舞いは訓練による。

さらにTransformerの構造を深く知りたい人のために…

TRANSFORMER EXPLAINER

height:460

Transformerをインタラクティブに視覚化!

The Illustrated Transformer

height:400

TransformerのアーキテクチャやAttention機構について図解で解説

GPTとは何か Transformerの視覚化 | Chapter 5, Deep Learning

動画による詳細な解説

参考: ChatGPTを活用してWebページやYouTube動画の内容を要約

height:400

ChatGPT Summarize
とても便利なChrome拡張機能!!

画像生成AIを試してみる!

現在、様々な画像生成AIが公開されている。今回は以下の画像生成AIサービスを試してみましょう。

Nano Banana (Gemini 2.5 Flash Image)

height:420
  • URL: gemini.google.com, aistudio.google.com
  • 特徴: Google検索やレンズ等の既存エコシステムに深く統合。複数画像の融合、自然言語による対話的な編集、基盤LLM「Gemini」による「視覚的推論」など高度な機能
  • 長所: Googleエコシステムに統合されており、多くのユーザーが普段のツール内で手軽に利用可能。専門知識なしで自然な言葉で直感的に画像を編集・生成できる
  • 短所: デフォルトの出力解像度が低く、プロ品質にはアップスケーリングが必要な場合がある。生成画像にはウォーターマークが付与され、商用利用に制約あり
  • 料金体系:
    • 制限付きの無料アクセス
    • Google AI Pro(月額2,900円または$19.99)
    • 開発者向けAPI(画像1枚あたり約0.039ドル)

Google ImageFX

height:420
  • URL: https://labs.google/fx/tools/image-fx
  • 特徴: Googleの最新画像生成AIモデル「Imagen 3」を搭載し、高品質な画像を生成。プロンプトの候補を提示する「表現力チップ」や、画像の一部分を修正する機能で直感的な操作が可能。
  • 長所: Googleアカウントがあれば誰でも完全に無料で利用可能。特に写真のようにリアルで高品質な画像の生成が得意で、初心者でも簡単に使える
  • 短所: コンテンツに対する規約が厳しく、プロンプトによっては生成が拒否されることがある。サービスが新しいため、機能制限や軽微な不具合が見られる場合がある
  • 料金体系:
  • 無料(Googleアカウントが必要)

DALL-E 3

height:420
  • URL: chatgpt.com
  • 特徴: ChatGPTに統合されており、自然な会話を通じて画像を生成・編集。曖昧な指示でもChatGPTが意図を汲み取り、効果的なプロンプトを自動生成。
  • 長所: ChatGPTとの対話形式で初心者でも非常に直感的。指示への忠実度が高く、特に画像内にテキストをきれいに描画する能力に優れる 。
  • 短所: 芸術的で独特な雰囲気の画像の生成は比較的苦手。生成される画像のスタイルがCG風のタッチに偏ることがある 。
  • 料金体系:
    • ChatGPT無料プランで利用可能(制限あり)
    • ChatGPT Plus(月額$20)でより多く生成可能
    • 開発者向けAPI(1枚あたり$0.04〜$0.12)

Midjourney

height:420
  • URL: www.midjourney.com
  • 特徴: 芸術性が高く、極めてフォトリアルな画像生成能力。主なインターフェースはDiscordで、活発なコミュニティが特徴。--cref--srefといった、キャラクターやスタイルの一貫性を保つための高度なパラメータが充実
  • 長所: 業界最高水準の芸術的な品質とフォトリアリズム。キャラクターやスタイルの一貫性を保つ機能が強力 。
  • 短所: Discordでの操作に慣れが必要で、初心者にはハードルが高い場合がある。無料プランがない 。
  • 料金体系:
    • Basicプラン(月額$10)
    • Standardプラン(月額$30)
    • Proプラン(月額$60)
    • Megaプラン(月額$120)

Stable Diffusion

height:420
  • URL: stability.ai/stable-image
  • 特徴:
    オープンソースであり、自身のPC(ローカル環境)で無料で実行可能。コミュニティによるカスタムモデル、ControlNet、LoRAなどが豊富で、カスタマイズ性が非常に高い
  • 長所: ローカル環境では完全に無料で、生成枚数も無制限。カスタマイズの自由度が非常に高い。オフライン実行によりプライバシーも確保 。
  • 短所: ローカルでの利用には高性能なPC(特にGPU)が必要。環境構築には専門知識が求められ、初心者にはハードルが高い 。
  • 料金体系:
    • 自身のPC(ローカル環境)での利用は完全に無料
    • WebサービスやAPIは提供者により無料クレジット制、サブスクリプション制など多様

Adobe Firefly

height:420
  • URL: firefly.adobe.com
  • 特徴: Adobe Stockなど商業的に安全なデータで学習しており、著作権侵害のリスクが低い。Photoshopの「生成塗りつぶし」など、Adobe Creative Cloud製品に深く統合。
  • 長所: 商用利用時の法的リスクが極めて低い。Photoshopなどプロが使い慣れたツールに統合されており、制作ワークフローの生産性を向上させる 。
  • 短所: フォトリアルな画像の生成は他のトップモデルに比べて苦手な場合がある。ネガティブプロンプト機能がない 。
  • 料金体系:
    • 無料プラン(月25クレジット)
    • Standardプラン(月額1,580円で2,000クレジット)
    • Proプラン(月額3,180円で4,000クレジット)
    • Creative Cloudの各プランにもクレジットが含まれる

まずはいろいろ試してみる!

  • 画像生成AIをいろいろ試してみましょう!
  • サービス、画像生成モデルによって個性がある
  • 個人的なお勧め
  • Imagen 3 in ImageFX (Googleアカウントがあれば)
  • OpenAI’s DALL-E 3

実習、次回までの課題

課題: 「画像生成AIで自画像を作成」

  • いくつかの画像生成AIを試してみる
  • 様々な手法を試す (テキストから生成、イラストをアップロードなど)
  • 気にいったサービスを1つ選択
  • 自分自身の自画像を生成してみる
  • 写実的、イラスト調、油彩調などスタイルは自由
  • 自分に似せるにはどのようなプロンンプト(指示)が良いか?
  • 次回、一番似ている人は誰かコンテスト

Strudel入門 3 – 最初のエフェクト

Strudelの基本としてサウンド(sound)とノート(note)を修得しました。次は様々なエフェクトを試していきましょう。

いくつかの基本的な効果

ローパスフィルタ

note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>")
.sound("sawtooth").lpf(800)

lpf =ローパスフィルター​​​

  • lpfを200に変更してください。音がこもっているのが分かります。クラブのドアを閉めて目の前に立っているような感じを想像してみてください
  • さあ、ドアを開けてみましょう… 5000 に変更します。明るくなるのに注目してください!

フィルターのパターン

note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>")
.sound("sawtooth").lpf("200 1000 200 1000")
  • さらに値を追加してみましょう
  • lpfのパターンが全体のリズムを変えないことに注目してください
  • Waves で自動化する方法については後ほど学習します

vowel (母音)

note("<[c3,g3,e4] [bb2,f3,d4] [a2,f3,c4] [bb2,g3,eb4]>")
.sound("sawtooth").vowel("<a e i o>")

ゲイン (音量)

$: sound("hh*16").gain("[.25 1]*4")

$: sound("bd*4,[~ sd:1]*2")
  • リズムはダイナミクスが重要です!
  • 取り外して.gain(…)、音がいかにフラットであるかに注意してください

上記のすべてを組み合わせて、小さな曲を作ってみましょう。

$: sound("hh*8").gain("[.25 1]*4")

$: sound("bd*4,[~ sd:1]*2")

$: note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>")
.sound("sawtooth").lpf("200 1000 200 1000")

$: note("<[c3,g3,e4] [bb2,f3,d4] [a2,f3,c4] [bb2,g3,eb4]>")
.sound("sawtooth").vowel("<a e i o>")

ADSRエンベロープでサウンドを形作る

note("c3 bb2 f3 eb3")
.sound("sawtooth").lpf(600)
.attack(.1)
.decay(.1)
.sustain(.25)
.release(.2)

数字が何を表しているか調べてみましょう。次の数字を比較してみましょう。

  • attack: .5 vs 0
  • decay: .5 vs 0
  • sustain: 1 vs .25 vs 0
  • release: 0 vs .5 vs 1
  • attack:フェードインにかかる時間
  • decay:減衰して持続するまでにかかる時間
  • sustain:減衰後のレベル
  • release: 音符が終わってからフェードアウトするまでの時間
height:360

adsr 短縮表記

note("c3 bb2 f3 eb3")
.sound("sawtooth").lpf(600)
.adsr(".1:.1:.5:.2")

ディレイ (delay)

$: note("[~ [<[d3,a3,f4]!2 [d3,bb3,g4]!2> ~]]*2")
.sound("gm_electric_guitar_muted").delay(.5)

$: sound("bd rim").bank("RolandTR707").delay(".5")
  • delay0から1の間の値を試してください。ちなみに、.5は0.5
  • .delay(“.8:.125”) を使用するとどうなりますか?
    2番目の数字が何をするか推測できますか?
  • .delay(“.8:.06:.8”) を使用するとどうなりますか?
    3番目の数字が何をするのか推測できますか?
delay("a:b:c")
  • a: ディレイボリューム
  • b: 遅延時間
  • c: フィードバック(数字が小さいほどフェードが早くなります)

room、別名リバーブ

n("<4 [3@3 4] [<2 0> ~@16] ~>")
.scale("D4:minor").sound("gm_accordion:2")
.room(2)
  • さまざまな値を試してください。
  • ディレイも追加してください!

ちょっとしたダブチューン

$: note("[~ [<[d3,a3,f4]!2 [d3,bb3,g4]!2> ~]]*2")
.sound("gm_electric_guitar_muted").delay(.5)

$: sound("bd rim").bank("RolandTR707").delay(.5)

$: n("<4 [3@3 4] [<2 0> ~@16] ~>")
.scale("D4:minor").sound("gm_accordion:2")
.room(2).gain(.5)

ベースを追加して完成させましょう。

$: note("[~ [<[d3,a3,f4]!2 [d3,bb3,g4]!2> ~]]*2")
.sound("gm_electric_guitar_muted").delay(.5)

$: sound("bd rim").bank("RolandTR707").delay(.5)

$: n("<4 [3@3 4] [<2 0> ~@16] ~>")
.scale("D4:minor").sound("gm_accordion:2")
.room(2).gain(.4)

$: n("[0 [~ 0] 4 [3 2] [0 ~] [0 ~] <0 2> ~]/2")
.scale("D2:minor")
.sound("sawtooth,triangle").lpf(800)

.hush()スタック内のパターンの 1 つの最後に追加してみてください…

pan (定位)

sound("numbers:1 numbers:2 numbers:3 numbers:4")
.pan("0 0.3 .6 1")

スピード

sound("bd rim [~ bd] rim").speed("<1 2 -1 -2>").room(.2)

slowとfast

sound("bd*4,~ rim ~ cp").slow(2)
  • 値を変更してください。 slowをfastに置き換えてみてください。
  • 次のようなパターンを使用するとどうなりますか.fast(“<1 [2 4]>”)?

ちなみに、ミニ表記では、fastは*であり、slowは です/。

sound("[bd*4,~ rim ~ cp]*<1 [2 4]>")

信号による変調

値を段階的に変更する代わりに、信号で制御することもできます。

sound("hh*16").gain(sine)
  • 信号の基本波形は sine, saw, square, tri です
  • ランダム信号も試してみてください。 rand, perlin
  • ゲインはピアノロールの透明度として視覚化されます。

範囲を設定する

デフォルトでは、波は0から1の間で振動します。これを次のようにrangeで変更できます。

sound("hh*16").lpf(saw.range(500, 2000))
  • 範囲の値を反転するとどうなりますか?

変調速度を低速/高速で変更できます。

note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>")
.sound("sawtooth")
.lpf(sine.range(100, 2000).slow(4))

全体の変調が繰り返されるには 8 サイクルかかります。

パターン効果

これまで見てきた機能のほとんどは、サウンドのシーケンス、音符の演奏、エフェクトのコントロールなど、他の音楽プログラムが通常実行できる機能です。

この章では、tidal に特有の機能について説明します。

revでパターンを反転

n("0 1 [4 3] 2 0 2 [~ 3] 4").sound("jazz").rev()

パターンを左に再生し、juxで右に変更

n("0 1 [4 3] 2 0 2 [~ 3] 4").sound("jazz").jux(rev)

これは次と同じです:

$: n("0 1 [4 3] 2 0 2 [~ 3] 4").sound("jazz").pan(0)
$: n("0 1 [4 3] 2 0 2 [~ 3] 4").sound("jazz").pan(1).rev()

ここで何が起こるかを視覚化してみましょう。

$: n("0 1 [4 3] 2 0 2 [~ 3] 4").sound("jazz").pan(0).color("cyan")
$: n("0 1 [4 3] 2 0 2 [~ 3] 4").sound("jazz").pan(1).color("magenta").rev()
  • // を行の前に追加して、2つのうち1つをコメントアウトしてみてください。

複数のテンポ

note("c2, eb3 g3 [bb3 c4]").sound("piano").slow("0.5,1,1.5")

これは、以下と同じです

$: note("c2, eb3 g3 [bb3 c4]").s("piano").slow(0.5).color('cyan')
$: note("c2, eb3 g3 [bb3 c4]").s("piano").slow(1).color('magenta')
$: note("c2, eb3 g3 [bb3 c4]").s("piano").slow(1.5).color('yellow')
  • //行の前に追加して1つまたは複数をコメントアウトしてみてください

add (追加)

setcpm(60)
note("c2 [eb3,g3] ".add("<0 <1 -1>>"))
.color("<cyan <magenta yellow>>").adsr("[.1 0]:.2:[1 0]")
.sound("gm_acoustic_bass").room(.5)
  • 音符に数字を追加すると、その音符は数字として扱われます。

好きなだけ追加できます。

setcpm(60)
note("c2 [eb3,g3]".add("<0 <1 -1>>").add("0,7"))
.color("<cyan <magenta yellow>>").adsr("[.1 0]:.2:[1 0]")
.sound("gm_acoustic_bass").room(.5)

スケールで追加

n("0 [2 4] <3 5> [~ <4 1>]".add("<0 [0,2,4]>"))
.scale("C5:minor").release(.5)
.sound("gm_xylophone").room(.5)

時間を積む

$: n("0 [2 4] <3 5> [~ <4 1>]".add("<0 [0,2,4]>"))
.scale("C5:minor")
.sound("gm_xylophone")
.room(.4).delay(.125)
$: note("c2 [eb3,g3]".add("<0 <1 -1>>"))
.adsr("[.1 0]:.2:[1 0]")
.sound("gm_acoustic_bass")
.room(.5)
$: n("0 1 [2 3] 2").sound("jazz").jux(rev)

ply

sound("hh hh, bd rim [~ cp] rim").bank("RolandTR707").ply(2)

これは以下と同じです

sound("hh*2 hh*2, bd*2 rim*2 [~ cp*2] rim*2").bank("RolandTR707")
  • 関数をパターン化してみましょうply。例えば、”<1 2 1 3>”

off

n("0 [4 <3 2>] <2 3> [~ 1]"
.off(1/16, x=>x.add(4))
//.off(1/8, x=>x.add(7))
).scale("<C5:minor Db5:mixolydian>/2")
.s("triangle").room(.5).dec(.1)

.off(1/16, x=>x.add(4))という表記は、次のように表されます。

  • 元のパターン x を取得する
  • x に .add(4) を適用して変更
  • 元のパターンに対して1/16周期分オフセットして再生する。

off は他のサウンドを変更するのにも便利で、ネストすることもできます。

s("bd sd [rim bd] sd,[~ hh]*4").bank("CasioRZ1")
.off(2/16, x=>x.speed(1.5).gain(.25)
.off(3/16, y=>y.vowel("<a e i o>*8")))

アンケート

アンケート