{
  "schemaVersion": 1,
  "revision": "992f00d1239dd546e2a90f4489dc7ef358655e9789d8bc4114cfc7d67ac4c87a",
  "total": 66,
  "items": [
    {
      "id": "8a5edab282632443",
      "url": "https://newmediaart.course.monolab.world/",
      "path": "/",
      "title": "吳哲宇新媒體藝術全景課｜11 週完成 8 件作品，從 p5.js 到 TouchDesigner",
      "description": "每週二晚上直播，已開課也能加入，回放永久看。十年走過的路，11 週帶你走一次：從 p5.js 到 TouchDesigner、體感互動與音像表演，做出 8 件作品。吳哲宇 × MonoLab，Hahow 直播課。",
      "lang": "zh",
      "kind": "page",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/8a5edab282632443.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/8a5edab282632443.json",
      "contentHash": "ea667a82c7c16414e9282fe729880d1e72f8491cb512bb1175ba064452c28256",
      "characters": 5372
    },
    {
      "id": "b82f9d7dd19073d5",
      "url": "https://newmediaart.course.monolab.world/live",
      "path": "/live",
      "title": "直播｜吳哲宇新媒體藝術全景課",
      "description": "每週二 19:00 的直播入口：本週講綱、開播倒數、上一堂的作業與課程筆記。",
      "lang": "zh",
      "kind": "page",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/b82f9d7dd19073d5.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/b82f9d7dd19073d5.json",
      "contentHash": "a0e196e2b594ea428de6eb19fec0c3951bc94172435597a94f03efea51ad0471",
      "characters": 654
    },
    {
      "id": "90e1eced61fe46f5",
      "url": "https://newmediaart.course.monolab.world/course",
      "path": "/course",
      "title": "11 堂課程路徑｜吳哲宇新媒體藝術全景課",
      "description": "從 p5.js 的第一行程式、數學與自然的演算法，到聲音視覺、TouchDesigner、體感互動與音像表演：11 堂的主題、作品與難度曲線。",
      "lang": "zh",
      "kind": "page",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/90e1eced61fe46f5.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/90e1eced61fe46f5.json",
      "contentHash": "715f5b34524beaa9b350d4224d835e0932996bbffbc0cd27f178dd2cd5a14d47",
      "characters": 1147
    },
    {
      "id": "bf9be0b1e6ed43db",
      "url": "https://newmediaart.course.monolab.world/works",
      "path": "/works",
      "title": "大家的作品｜吳哲宇新媒體藝術全景課",
      "description": "這一期同學在直播課堂與作業裡做出的 92 件生成藝術作品，附作者與 OpenProcessing 連結。",
      "lang": "zh",
      "kind": "work",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/bf9be0b1e6ed43db.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/bf9be0b1e6ed43db.json",
      "contentHash": "f320696c380db3334364ea1745ed88b8a9a902829f9fae80832df29394424cb0",
      "characters": 5488
    },
    {
      "id": "1491d206c3e4bddd",
      "url": "https://newmediaart.course.monolab.world/tools",
      "path": "/tools",
      "title": "互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "48 個可以直接在瀏覽器裡玩的教學模組：座標、迴圈、向量、noise、粒子、遞迴、L-System、Boids，每一個都附 p5.js 程式碼。",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/1491d206c3e4bddd.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/1491d206c3e4bddd.json",
      "contentHash": "f7fb0c4d6fcb9cc98c4461f55a612946fb99f699bf64698baeaa747aeb3c7627",
      "characters": 3648
    },
    {
      "id": "b8ca0ae0bda966db",
      "url": "https://newmediaart.course.monolab.world/tools/coords",
      "path": "/tools/coords",
      "title": "座標探索：(0, 0) 在左上角｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "畫布左上角是 (0, 0)，往右 x 變大、往下 y 變大；circle 的 x、y 是圓心，rect 是左上角。（基礎；p5.js：circle()、rect()、mouseX、mouseY）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/b8ca0ae0bda966db.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/b8ca0ae0bda966db.json",
      "contentHash": "667271b8210b5bbb9d4b707c01828e1bfb63187803a750a02ce259f882e1731a",
      "characters": 289
    },
    {
      "id": "a87395523af068d2",
      "url": "https://newmediaart.course.monolab.world/tools/setupdraw",
      "path": "/tools/setupdraw",
      "title": "setup 跑一次，draw 一直跑｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "setup() 按下 Play 時跑一次，draw() 每秒重複很多次；沒有 background() 就會留下軌跡。（基礎；p5.js：setup()、draw()、frameRate()、background()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/a87395523af068d2.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/a87395523af068d2.json",
      "contentHash": "29d20e5054d2a02a3ce4cc3b0b0138e0940462e58825992c07451928e25fd8af",
      "characters": 299
    },
    {
      "id": "e7ac4a81266dfc76",
      "url": "https://newmediaart.course.monolab.world/tools/vertex",
      "path": "/tools/vertex",
      "title": "取座標小工具：點一下，變成 vertex｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "beginShape() 開始、一個一個 vertex(x, y) 放點、endShape(CLOSE) 收尾，就能畫任意形狀；點一下畫布取座標，程式碼跟著多一行。（基礎；p5.js：beginShape()、vertex()、endShape()、mouseX、mouseY）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/e7ac4a81266dfc76.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/e7ac4a81266dfc76.json",
      "contentHash": "6b971be0b446fd9c2065246a9bfd2110c6598cfe5e5b7eaf9eb1cdf88a4d9847",
      "characters": 338
    },
    {
      "id": "bcb41b04caacb1ce",
      "url": "https://newmediaart.course.monolab.world/tools/variable",
      "path": "/tools/variable",
      "title": "變數是抽屜：x = x + 速度｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "變數像一個抽屜，存起來、叫名字拿回來；x = x + 速度 放在 draw() 裡，保留上一格的狀態，球就會動。（程式結構；p5.js：let、if、width）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/bcb41b04caacb1ce.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/bcb41b04caacb1ce.json",
      "contentHash": "2d39dc557541d43b54ae365cce699a0294d483f89380436a9f14f71590bdf6c0",
      "characters": 299
    },
    {
      "id": "45020c4238a3d273",
      "url": "https://newmediaart.course.monolab.world/tools/forloop",
      "path": "/tools/forloop",
      "title": "for 迴圈：一圈一圈看它畫｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "for 迴圈把一件事重複很多次：i 從 1 開始，每圈加 1，小於 n 就繼續。（程式結構；p5.js：for、circle()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/45020c4238a3d273.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/45020c4238a3d273.json",
      "contentHash": "0fb55094a87f3cfd5de64e431d0454d7564c14df78a3888be5a5a78c8cfb2ffe",
      "characters": 270
    },
    {
      "id": "2678923d90496d86",
      "url": "https://newmediaart.course.monolab.world/tools/grid",
      "path": "/tools/grid",
      "title": "兩層 for 迴圈：排出一面格子｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "for 裡面再包一層 for 就是格子；用 % 餘數決定哪一格換色，就能排出花磚那種規律。（程式結構；p5.js：for、%、rect()、fill()、random()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/2678923d90496d86.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/2678923d90496d86.json",
      "contentHash": "131fdf12dd16c39234160239a5f77daa909d39c26d513582816703f8d6d87235",
      "characters": 303
    },
    {
      "id": "75ee731612eaf868",
      "url": "https://newmediaart.course.monolab.world/tools/func",
      "path": "/tools/func",
      "title": "函數：把一朵花打包成 drawFlower()｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "函數把重複的步驟打包、取名字，參數讓每次畫得不一樣；有名字的模組，也最好跟 AI 協作。（程式結構；p5.js：function、push()、pop()、translate()、rotate()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/75ee731612eaf868.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/75ee731612eaf868.json",
      "contentHash": "5758e95785c48f00a4ed8dd3d96a7d74a67057624baf26739e1850eb0af98d67",
      "characters": 330
    },
    {
      "id": "5fb5a0851e6dbe0a",
      "url": "https://newmediaart.course.monolab.world/tools/transform",
      "path": "/tools/transform",
      "title": "translate／rotate／scale：動的是那張紙｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "translate、rotate、scale 動的是畫布（那張紙），不是圖形本身。（畫布操作；p5.js：translate()、rotate()、scale()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/5fb5a0851e6dbe0a.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/5fb5a0851e6dbe0a.json",
      "contentHash": "f57306ae4af6f027214cdafe9af7ace6492d3510c9c7ddfe2dda81ec5c79925b",
      "characters": 300
    },
    {
      "id": "75794873f351ec42",
      "url": "https://newmediaart.course.monolab.world/tools/pushpop",
      "path": "/tools/pushpop",
      "title": "push／pop：畫完就把紙轉回來｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "push() 保存畫布狀態、pop() 還原，每一圈都從同一張紙開始；先移再轉和先轉再移，結果不一樣。（畫布操作；p5.js：push()、pop()、translate()、rotate()、radians()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/75794873f351ec42.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/75794873f351ec42.json",
      "contentHash": "51c4035c846c4dd657ef1986d2ef4e9ed6ca281ad26b79a88f1eba1674278868",
      "characters": 317
    },
    {
      "id": "b4faf509741bfd69",
      "url": "https://newmediaart.course.monolab.world/tools/facebrush",
      "path": "/tools/facebrush",
      "title": "表情筆刷：把一張臉變成筆刷｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "translate 到滑鼠之後，五官只要算相對位置；共用同一個變數，兩隻眼睛才不會鬥雞眼。（畫布操作；p5.js：translate()、scale()、rotate()、mouseX、mouseY）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/b4faf509741bfd69.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/b4faf509741bfd69.json",
      "contentHash": "70a533dada1fb5cab48738cf668dea2235ee399a04ebcc4b8d2b2e054a42a168",
      "characters": 317
    },
    {
      "id": "45575f7a5a160b8d",
      "url": "https://newmediaart.course.monolab.world/tools/arc",
      "path": "/tools/arc",
      "title": "弧線遊樂場：一段弧線怎麼長成鸚鵡螺｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "arc() 畫一段沒畫完的橢圓；配上 rotate(frameCount) 讓它每一格多轉一點、順便長大。（數學；p5.js：arc()、radians()、rotate()、frameCount）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/45575f7a5a160b8d.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/45575f7a5a160b8d.json",
      "contentHash": "abd10d1706dc114e089db748c9a8c1786820ddc3ce0ee538ab1b3467cbd844ec",
      "characters": 465
    },
    {
      "id": "29167dcf4a158bb6",
      "url": "https://newmediaart.course.monolab.world/tools/sinmap",
      "path": "/tools/sinmap",
      "title": "sin → map → 顏色｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "sin 在 −1 到 1 之間來回擺，map 把它換算成 0 到 255，就能當成會呼吸的顏色。（數學；p5.js：sin()、map()、fill()、frameCount）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/29167dcf4a158bb6.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/29167dcf4a158bb6.json",
      "contentHash": "eee9f828d58a947a4c66fcf11b6bf6a00d3035bfd69980b496bcf9433bc90bcc",
      "characters": 453
    },
    {
      "id": "0c2b92c83565df19",
      "url": "https://newmediaart.course.monolab.world/tools/sincos",
      "path": "/tools/sincos",
      "title": "sin 與 cos：一個點繞圓，影子在上下與左右擺｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "點在圓上轉，左右是 cos、上下是 sin；把 sin 隨時間畫下來就是波浪，(r·cos, r·sin) 能排成一圈。（數學；p5.js：sin()、cos()、radians()、translate()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/0c2b92c83565df19.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/0c2b92c83565df19.json",
      "contentHash": "abb36e4e1209198435293976587dad111e387e313bc64c00f5eeb743444abf28",
      "characters": 470
    },
    {
      "id": "d35adb86f3ca0d00",
      "url": "https://newmediaart.course.monolab.world/tools/random",
      "path": "/tools/random",
      "title": "random()：每一次都抽一支新的籤｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "random(a, b) 每次在 a 到 b 之間抽一個數；randomSeed() 把籤筒順序固定，同一個種子永遠同一組結果。（數學；p5.js：random()、randomSeed()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/d35adb86f3ca0d00.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/d35adb86f3ca0d00.json",
      "contentHash": "ce37f8b3e5e4eb01580ec25941cbc288b5480423832a3efa4aa5f1b0ecbfb822",
      "characters": 462
    },
    {
      "id": "421baaec7a566932",
      "url": "https://newmediaart.course.monolab.world/tools/noise",
      "path": "/tools/noise",
      "title": "noise() vs random()：會跳的亂數和會流動的亂數｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "random() 每次都是全新的籤、會跳；noise() 相鄰的輸入得到相近的值、會流動，像山脈和水流。「裡面除・外面除」模式：noise(x / 10) 的 10 管取樣多平順，外面再除管力量多大。（數學；p5.js：noise()、random()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/421baaec7a566932.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/421baaec7a566932.json",
      "contentHash": "1be2551561c1ee0290de8ea553440b61a926c0a965e59a0822202b1cd4922acd",
      "characters": 510
    },
    {
      "id": "991f56e7a8dd1f69",
      "url": "https://newmediaart.course.monolab.world/tools/vector",
      "path": "/tools/vector",
      "title": "向量：一支有方向、有長度的箭頭｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "向量＝往哪個方向、走多遠；可以相加（頭接尾）、旋轉、放大縮小，一直累加就是在畫一條路徑。（數學；p5.js：createVector()、add()、rotate()、mult()、mag()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/991f56e7a8dd1f69.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/991f56e7a8dd1f69.json",
      "contentHash": "c6d09b604a3c22f528f78ea7e1f8bdaafb5ec5cf25d3778db4d9f1052139a713",
      "characters": 481
    },
    {
      "id": "1d3399ef67ea3768",
      "url": "https://newmediaart.course.monolab.world/tools/particle",
      "path": "/tools/particle",
      "title": "一顆粒子：位置、速度、加速度｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "每一格：速度加到位置上、加速度加到速度上；拖曳把球丟出去，撞到邊就反彈。（數學；p5.js：createVector()、add()、limit()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/1d3399ef67ea3768.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/1d3399ef67ea3768.json",
      "contentHash": "87220e5b2476857c6284f76627f4828f75c22798126a40f75b448ab21a8f33a7",
      "characters": 456
    },
    {
      "id": "2c7b8ceb90c85aac",
      "url": "https://newmediaart.course.monolab.world/tools/flowfield",
      "path": "/tools/flowfield",
      "title": "力場：用 noise 給每一格一個方向｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "把 noise 的值換成角度，畫面上每一格都有一支箭頭；粒子走到哪一格，就被那一格的箭頭推著走。（數學；p5.js：noise()、p5.Vector.fromAngle()、add()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/2c7b8ceb90c85aac.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/2c7b8ceb90c85aac.json",
      "contentHash": "27ca9c6038dd5d19aa37ef6670703970b7476bd70e87b892b75115aa98f8acf6",
      "characters": 487
    },
    {
      "id": "31acea6f1cf5a02a",
      "url": "https://newmediaart.course.monolab.world/tools/trails",
      "path": "/tools/trails",
      "title": "粒子系統：很多顆粒子，留下軌跡｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "幾百顆粒子跟著力場走，不清畫面、只蓋一層很淡的底色，軌跡就留下來變成畫。（數學；p5.js：noise()、background()、stroke()、line()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/31acea6f1cf5a02a.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/31acea6f1cf5a02a.json",
      "contentHash": "f129ead5419552914b6ad51a4c01631800ef0ceef0b6db1d0d3aa213c67d8ae9",
      "characters": 468
    },
    {
      "id": "c06feee377e08320",
      "url": "https://newmediaart.course.monolab.world/tools/forces",
      "path": "/tools/forces",
      "title": "很多力加在一起：重力、風、阻力｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "每一個力都是一支向量，applyForce 把它們加進加速度；質量越大越難推動，每一格最後要把加速度歸零。（數學；p5.js：applyForce()、add()、div()、mult()、createVector()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/c06feee377e08320.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/c06feee377e08320.json",
      "contentHash": "75225e12c60fa45a4853a3d35076a94d85d323702c11814996b12b7b4f0c90d8",
      "characters": 488
    },
    {
      "id": "2708641fbd644c30",
      "url": "https://newmediaart.course.monolab.world/tools/attractor",
      "path": "/tools/attractor",
      "title": "吸引與排斥：往滑鼠走的粒子｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "目標減掉自己的位置，就是「往那裡去」的向量；調成固定長度當成力，粒子就會被滑鼠吸過去或推開。（數學；p5.js：p5.Vector.sub()、setMag()、normalize()、dist()、limit()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/2708641fbd644c30.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/2708641fbd644c30.json",
      "contentHash": "4fc52ec07afc789c5f51938dc5bb604bc4ee7da44fd65be6a2bd5b6cd786fdb0",
      "characters": 487
    },
    {
      "id": "0b3a30837d23cf3f",
      "url": "https://newmediaart.course.monolab.world/tools/emitter",
      "path": "/tools/emitter",
      "title": "粒子的生與死：發射器與壽命｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "發射器每一格生出新粒子，粒子帶著壽命慢慢變淡，死掉就從陣列移除；陣列長度會穩定在一個數字。（數學；p5.js：class、push()、splice()、random()、fill()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/0b3a30837d23cf3f.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/0b3a30837d23cf3f.json",
      "contentHash": "caa3d247129694c4bc96b21036000ea8a30aab8f7e778eaae344662c8a1dec38",
      "characters": 480
    },
    {
      "id": "07b8bb0459d48b99",
      "url": "https://newmediaart.course.monolab.world/tools/cosmos",
      "path": "/tools/cosmos",
      "title": "宇宙模擬器：萬有引力｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "每一顆星都拉著其他所有的星：力跟質量成正比、跟距離平方成反比。拖曳丟出一顆星，看它繞行、被吞掉或被甩出去。（數學；p5.js：p5.Vector.sub()、magSq()、setMag()、constrain()、createVector()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/07b8bb0459d48b99.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/07b8bb0459d48b99.json",
      "contentHash": "741d29377428320a17c715380a4e294569d8da77165fc0a12a7b8698ae9cefa8",
      "characters": 506
    },
    {
      "id": "c197ff6cb4b1bd9b",
      "url": "https://newmediaart.course.monolab.world/tools/noiseslice",
      "path": "/tools/noiseslice",
      "title": "noise 怎麼取值：步長與切片｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "noise(x, y, z) 是在一片連續的地形上取值：除得越大、步子越小，相鄰兩點越接近，所以越連續；z 換一個數字就是換一張切片，v.x 和 v.y 用不同切片才不會都往同一個方向。（數學；p5.js：noise()、map()、createVector()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/c197ff6cb4b1bd9b.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/c197ff6cb4b1bd9b.json",
      "contentHash": "a3872e8b841f392a95447179db59cb8d2fca9f8eb48d625f0fd3fcc2b402d1c4",
      "characters": 520
    },
    {
      "id": "4e777696da2c1a2f",
      "url": "https://newmediaart.course.monolab.world/tools/turtle",
      "path": "/tools/turtle",
      "title": "海龜繪圖：往前走、轉彎｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "海龜只懂 F（前進畫線）和 + − （轉彎）；translate 走到線尾、rotate 轉向，就是 p5 的海龜，也是 L-System 與遞迴樹的地基。（自然的演算法；p5.js：translate()、rotate()、line()、angleMode()、triangle()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/4e777696da2c1a2f.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/4e777696da2c1a2f.json",
      "contentHash": "123c98d153435f972a373843508cf83849a556a3552c30f0bd9d1b5b5719e587",
      "characters": 468
    },
    {
      "id": "d7a069b92937b2bf",
      "url": "https://newmediaart.course.monolab.world/tools/recursion",
      "path": "/tools/recursion",
      "title": "遞迴分裂：一個變兩個｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "遞迴就是函式呼叫自己：branch 畫一段、走到尾端、左右各分一枝，每多一層數量翻倍（2 的 n 次方）；也可以看成粒子壽命到了就分裂成兩顆，走過的路就是樹枝。（自然的演算法；p5.js：push()、pop()、translate()、rotate()、line()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/d7a069b92937b2bf.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/d7a069b92937b2bf.json",
      "contentHash": "8f61b11906dc1c4590bda9264deecd63b7f033a9bdac4284cd12342d350e75ae",
      "characters": 471
    },
    {
      "id": "ee2789dc98ea5765",
      "url": "https://newmediaart.course.monolab.world/tools/lsystem",
      "path": "/tools/lsystem",
      "title": "L-System：用一條字串長出植物｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "L-System 分兩步：先把字串一代一代替換、越換越長，再交給海龜畫（F 畫線、+ − 轉向、[ 記住位置、] 回到記住的位置）。（自然的演算法；p5.js：line()、cos()、sin()、radians()、randomSeed()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/ee2789dc98ea5765.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/ee2789dc98ea5765.json",
      "contentHash": "04c1fd917202bf05a934e226650810ee310bf3c2bb46b73b88300b29e22cea94",
      "characters": 436
    },
    {
      "id": "12ca3f9fbcca312a",
      "url": "https://newmediaart.course.monolab.world/tools/fractal",
      "path": "/tools/fractal",
      "title": "碎形：自己裡面還有自己｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "碎形是放大看細節還是跟整體一樣；每層把形狀拆成幾個縮小的自己，數量隨深度成倍成長（Koch 雪花、Sierpinski 三角形、圓中圓、H 樹）。（自然的演算法；p5.js：triangle()、circle()、line()、lerpColor()、createVector()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/12ca3f9fbcca312a.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/12ca3f9fbcca312a.json",
      "contentHash": "e29e7568eb990dfc1938128011f151b384263a06baa5d8049293b4bdfe1432ca",
      "characters": 464
    },
    {
      "id": "8d46df8d12f3b0ad",
      "url": "https://newmediaart.course.monolab.world/tools/boids",
      "path": "/tools/boids",
      "title": "Boids 群聚：三條規則，沒有領頭｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "Craig Reynolds 的 Boids：每隻鳥只看感知半徑內的鄰居，守分離、對齊、聚合三條規則，沒有領頭的鳥，鳥群自己長出來。（自然的演算法；p5.js：createVector()、p5.Vector.sub()、dist()、setMag()、limit()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/8d46df8d12f3b0ad.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/8d46df8d12f3b0ad.json",
      "contentHash": "9db302fe025e740e7df125d86b088691de90d87142b09fae41e0007731ff4ede",
      "characters": 462
    },
    {
      "id": "16e437e369a717b7",
      "url": "https://newmediaart.course.monolab.world/tools/chain",
      "path": "/tools/chain",
      "title": "鏈條：兩條限制，長出會游的身體｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "一串點，頭追滑鼠，每一點用「距離固定」和「夾角限制」兩條規則跟著前一點；再沿脊椎的法線依寬度畫出蛇或魚的身體。（自然的演算法；p5.js：p5.Vector.sub()、p5.Vector.add()、setMag()、heading()、constrain()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/16e437e369a717b7.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/16e437e369a717b7.json",
      "contentHash": "ab423e636354720a38c0c4a6bd4bb6c401c89ee8e97ee59d2edcc80638f3715a",
      "characters": 461
    },
    {
      "id": "3563b79daeadbd72",
      "url": "https://newmediaart.course.monolab.world/tools/terrain",
      "path": "/tools/terrain",
      "title": "地形：noise 就是一張高度圖｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "noise(x / scl, y / scl) 給每個點一個 0–1 的高度：按高度分段上色是地圖，畫高度相同的線是等高線，一排排往下畫是山脈剪影。（自然的演算法；p5.js：noise()、noiseDetail()、noiseSeed()、rect()、beginShape()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/3563b79daeadbd72.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/3563b79daeadbd72.json",
      "contentHash": "b0d024a0deaaee7754f550c9d18dd6eacc71de1c4ca2997dd2206e27b469db9b",
      "characters": 467
    },
    {
      "id": "792456f67a1c95e4",
      "url": "https://newmediaart.course.monolab.world/tools/rings",
      "path": "/tools/rings",
      "title": "年輪：用 noise 繞一個圈｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "半徑加上 noise 就是不規則的圈；noise 要用 (cos(a)*k, sin(a)*k) 取值，走回起點值一樣，圈才接得起來，用 noise(a) 取值接縫會斷；每圈換第三個座標就長成年輪。（自然的演算法；p5.js：noise()、cos()、sin()、beginShape()、ver…",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/792456f67a1c95e4.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/792456f67a1c95e4.json",
      "contentHash": "9e1302b783c73bce745091748717be337043507132cc14ee221bde7d0f223882",
      "characters": 472
    },
    {
      "id": "cae847535d60e4e3",
      "url": "https://newmediaart.course.monolab.world/tools/circlepack",
      "path": "/tools/circlepack",
      "title": "圓填滿：一個一個長大，互不重疊｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "每格在隨機位置試著放新圓，被別的圓蓋住就放棄；圓一直長大，dist() 小於兩半徑相加加間隙就停，慢慢塞滿，縫隙被小圓填掉（Circle Packing）。（自然的演算法；p5.js：dist()、circle()、random()、lerpColor()、class）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/cae847535d60e4e3.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/cae847535d60e4e3.json",
      "contentHash": "32b59bae922c89101225c4d5d87e72d71cb3a412ae7df7c08affc347a80c7b75",
      "characters": 457
    },
    {
      "id": "b939ba7d2525138c",
      "url": "https://newmediaart.course.monolab.world/tools/boidsvec",
      "path": "/tools/boidsvec",
      "title": "Boids 向量解剖：一隻鳥怎麼算出下一步｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "把 Boids 一隻鳥的一步拆成七個向量操作：找鄰居、分離、對齊、聚合、轉向（力＝想要的速度－現在的速度）、合力、更新；畫面一步一步畫箭頭，程式碼放在旁邊，亮起來的行就是現在這一步。（自然的演算法；p5.js：createVector()、setMag()、limit()、sub()、add()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/b939ba7d2525138c.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/b939ba7d2525138c.json",
      "contentHash": "21c396048549acae2a5464a6810979dfe4e4e3e736c3abd12a3c32f9f6dab5e3",
      "characters": 484
    },
    {
      "id": "c81772375d30c35e",
      "url": "https://newmediaart.course.monolab.world/tools/threeinputs",
      "path": "/tools/threeinputs",
      "title": "喊、敲、彈：同一個畫面，三種聲音進來｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "麥克風、鼓機、鍵盤都會叫同一組回呼（kickDetected、notePressed…），畫面的程式不用改；開場先看整堂的地圖。（聲音 × 視覺；p5.js：kickDetected()、snareDetected()、hatDetected()、notePressed()、startMic()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/c81772375d30c35e.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/c81772375d30c35e.json",
      "contentHash": "acab889dfee937113be6b1385386efbfd3bdfcf3799532e8b566935817880a40",
      "characters": 532
    },
    {
      "id": "977eb70e92794277",
      "url": "https://newmediaart.course.monolab.world/tools/wave",
      "path": "/tools/wave",
      "title": "聲音是一條波：多大聲、多高｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "聲音是空氣的振動：波有多高是多大聲（振幅），一秒振動幾次是多高（頻率，赫茲）；可以聽、可以用麥克風看自己的聲音。（聲音 × 視覺；p5.js：sin()、map()、TWO_PI、beginShape()、vertex()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/977eb70e92794277.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/977eb70e92794277.json",
      "contentHash": "10cb17167c60fb595e33d610e1d690d39c827bcba57b85b256bfd025172434e3",
      "characters": 460
    },
    {
      "id": "c5e2aa645f2bc19c",
      "url": "https://newmediaart.course.monolab.world/tools/miclevel",
      "path": "/tools/miclevel",
      "title": "音量 micLevel：從波形到 0..1｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "一小段波形算 RMS、換成分貝，再把一段分貝夾成 0..1，就是 oav-p5 的 micLevel；為什麼要用分貝：耳朵聽的是比例；底線會跟著房間的底噪走。（聲音 × 視覺；p5.js：micLevel、micSensitivity()、circle()、constrain()、map()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/c5e2aa645f2bc19c.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/c5e2aa645f2bc19c.json",
      "contentHash": "4807db77d20e52ce878df924d8936f39c34bdc2ff46d39ba07630e83f18021d2",
      "characters": 502
    },
    {
      "id": "9f9d1f7ca92c9653",
      "url": "https://newmediaart.course.monolab.world/tools/spectrum",
      "path": "/tools/spectrum",
      "title": "頻譜：bass、mid、treble｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "一個聲音裡同時有很多頻率，FFT 把它拆開；oav-p5 把它分成低、中、高三段（20–250、250–2000、2000–8000 Hz）。（聲音 × 視覺；p5.js：bass、mid、treble）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/9f9d1f7ca92c9653.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/9f9d1f7ca92c9653.json",
      "contentHash": "9176f4dbbf321a86df0a6999768ce76cd7f3b3bed17f5748142a7ca186390c66",
      "characters": 458
    },
    {
      "id": "c5662c529047ceed",
      "url": "https://newmediaart.course.monolab.world/tools/beat",
      "path": "/tools/beat",
      "title": "節拍偵測：什麼時候算「一下」｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "比最近的平均大一截、而且離上一下超過 100 毫秒，就算一下；拍手容易算、講話不容易。（聲音 × 視覺；p5.js：beat、beatDetected()、kickDetected()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/c5662c529047ceed.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/c5662c529047ceed.json",
      "contentHash": "bb1aed8d02194c7f06698c013bfdc6cdf105b130ee7915e5dfb9918e18722a14",
      "characters": 442
    },
    {
      "id": "d037f07f1c59e575",
      "url": "https://newmediaart.course.monolab.world/tools/mapping",
      "path": "/tools/mapping",
      "title": "對應：把聲音的數字變成畫面｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "map() 把 0..1 換成大小、顏色、速度、數量；constrain 夾住範圍；換一條曲線，小聲也看得到。（聲音 × 視覺；p5.js：map()、constrain()、pow()、sqrt()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/d037f07f1c59e575.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/d037f07f1c59e575.json",
      "contentHash": "cede14a8a8baf7edcc71faf6f31fee469864b7646d2a52550ae265d66d3d7b2f",
      "characters": 459
    },
    {
      "id": "cdc03beaecc2e80e",
      "url": "https://newmediaart.course.monolab.world/tools/lag",
      "path": "/tools/lag",
      "title": "lag：數字用追的，不要用跳的｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "照秒數追上去：上升、下降各一個秒數（跟 TouchDesigner 的 Lag CHOP 同一件事）；lerp 會因為電腦快慢手感不同。（聲音 × 視覺；p5.js：lag()、lerp()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/cdc03beaecc2e80e.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/cdc03beaecc2e80e.json",
      "contentHash": "d5cc02cd2d5dc829f964474b5ef3335e5c5a8a7785f37b4dc40bf418a05c2415",
      "characters": 464
    },
    {
      "id": "b2e9763021a31688",
      "url": "https://newmediaart.course.monolab.world/tools/envelope",
      "path": "/tools/envelope",
      "title": "env：打一下就是一個包絡｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "一下事件跳到 1 再慢慢回到 0（TouchDesigner 的 Trigger CHOP）；attack、decay 兩個秒數；連打會重新觸發。（聲音 × 視覺；p5.js：env()、trigger()、startDrums()、scale()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/b2e9763021a31688.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/b2e9763021a31688.json",
      "contentHash": "dac35c2fb1a0bafbc9589522cfbc0b5b9a05dec633e41d8fb2c93f8b8b50c738",
      "characters": 487
    },
    {
      "id": "ea0b469296122093",
      "url": "https://newmediaart.course.monolab.world/tools/sequencer",
      "path": "/tools/sequencer",
      "title": "16 步音序器：時間一格一格走｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "一小節切成 16 格，播放頭每格往前一步；BPM 決定一格多長；這就是 Demo 2 那張鼓機卡。（聲音 × 視覺；p5.js：startDrums()、drumStep、drumBar、kickDetected()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/ea0b469296122093.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/ea0b469296122093.json",
      "contentHash": "ecfd71151d280939d5d6c011bf1fc069cf99ed96ac8bfecbf34ed39cee056ca1",
      "characters": 458
    },
    {
      "id": "02dd4830c80b4a5b",
      "url": "https://newmediaart.course.monolab.world/tools/rhythmline",
      "path": "/tools/rhythmline",
      "title": "一行字寫節奏｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "空白等分、* 加快、~ 休息、[ ] 擠進一拍、逗號疊層、(3,8)、< >：每個字都對得到時間軸上的一下，正在響的字會亮；打錯會標出第幾個字；下面同時看放進 16 格的樣子。（聲音 × 視覺；p5.js：startDrums()、drawRhythm()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/02dd4830c80b4a5b.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/02dd4830c80b4a5b.json",
      "contentHash": "3cc8a6c6bc600244fa45a3dcac9fbc91a8416ce052ba16a58f0b92918fa0755a",
      "characters": 501
    },
    {
      "id": "6961fdff281e4754",
      "url": "https://newmediaart.course.monolab.world/tools/euclid",
      "path": "/tools/euclid",
      "title": "歐幾里得節奏：k 下平均分在 n 格｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "把 k 下盡量平均地放進 n 格；很多傳統節奏就是它（(3,8)、(5,8)）；第三個數字是晚幾格開始；大鼓、小鼓、鈸三圈疊起來就是 bd(3,8), sd(2,8,2), hh(5,8)。（聲音 × 視覺；p5.js：startDrums()、drawRhythm()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/6961fdff281e4754.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/6961fdff281e4754.json",
      "contentHash": "c4044e019ef7ad0cec634b9c2f1326c1a1d45f3bc9f0d11981c0b5ec98fc1059",
      "characters": 488
    },
    {
      "id": "5b35c7a0dc1c1d4d",
      "url": "https://newmediaart.course.monolab.world/tools/timeclock",
      "path": "/tools/timeclock",
      "title": "小節、拍、步：BPM 換成秒｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "60 ÷ BPM 是一拍幾秒；一小節 4 拍 16 步；drumPhase、beatPhase 連續地走；cue() 在第幾小節觸發。（聲音 × 視覺；p5.js：drumPhase、beatPhase、cue()、cueFired()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/5b35c7a0dc1c1d4d.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/5b35c7a0dc1c1d4d.json",
      "contentHash": "85d21f0c8c42718866acefff624404c8427ec78ce3be7d9270460fe0caa908ab",
      "characters": 466
    },
    {
      "id": "da4edb82f585f76a",
      "url": "https://newmediaart.course.monolab.world/tools/midikeys",
      "path": "/tools/midikeys",
      "title": "MIDI：一個音是一個號碼加一個力度｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "note 0–127（60 是中央 C）、velocity 是按多用力、旋鈕 0–127 變成 0..1；底下傳的是三個位元組。（聲音 × 視覺；p5.js：notePressed()、noteReleased()、knob1、map()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/da4edb82f585f76a.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/da4edb82f585f76a.json",
      "contentHash": "fc214b9c35416ff1aacd67c2d2869c5cd283a4c0a440b7753a734c912151fcd0",
      "characters": 483
    },
    {
      "id": "2b7e8f4d8d45533a",
      "url": "https://newmediaart.course.monolab.world/tools/pitchcolor",
      "path": "/tools/pitchcolor",
      "title": "音高變顏色、變位置｜互動教學模組｜吳哲宇新媒體藝術全景課",
      "description": "MIDI 號碼換成頻率；一個八度繞一圈就是色相環；音高也可以變成 x 位置；和弦是一個幾何形狀。（聲音 × 視覺；p5.js：map()、notePressed()、colorMode()）",
      "lang": "zh",
      "kind": "tool",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/2b7e8f4d8d45533a.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/2b7e8f4d8d45533a.json",
      "contentHash": "ebcb351e65c6b6c9c71e3282a16d6f17fae854bae2642e3bdb7f1cdba4187e6d",
      "characters": 448
    },
    {
      "id": "e788f20f35e6836c",
      "url": "https://newmediaart.course.monolab.world/snippets",
      "path": "/snippets",
      "title": "常用指令｜吳哲宇新媒體藝術全景課",
      "description": "上課一直會用到的 p5.js 小段程式：存圖、重來、全螢幕、粒子模板、麥克風測試，複製就能貼進 OpenProcessing。",
      "lang": "zh",
      "kind": "snippet",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/e788f20f35e6836c.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/e788f20f35e6836c.json",
      "contentHash": "0b8d49e89f234bfc4241226039d18ac8e3d51e9b1042719af2a2c8cd5d9b8123",
      "characters": 5145
    },
    {
      "id": "b49670424b05e7c1",
      "url": "https://newmediaart.course.monolab.world/resources",
      "path": "/resources",
      "title": "資源｜吳哲宇新媒體藝術全景課",
      "description": "每一堂課用到的範例程式、作品案例、團隊與工具連結。",
      "lang": "zh",
      "kind": "page",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/b49670424b05e7c1.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/b49670424b05e7c1.json",
      "contentHash": "597be11523732723a9dc02a5cb5f0d9f00c650bc1cfb3ffe5a0feae08dd7b417",
      "characters": 3010
    },
    {
      "id": "0476b2dbbe36dfe7",
      "url": "https://newmediaart.course.monolab.world/lesson/00",
      "path": "/lesson/00",
      "title": "第 0 堂 新媒體藝術的全景地圖｜吳哲宇新媒體藝術全景課",
      "description": "第 0 堂〈新媒體藝術的全景地圖〉：在 OpenProcessing 從零寫出滑鼠筆刷，再讓一段弧線每一格多轉一點，長成鸚鵡螺。全景課每週二直播，已開課也能加入，回放永久看。",
      "lang": "zh",
      "kind": "lesson",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/0476b2dbbe36dfe7.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/0476b2dbbe36dfe7.json",
      "contentHash": "53c443b92efc05bdaff1924d02d6085ab2b0ad3d387f36bf879d40e3a247db79",
      "characters": 4871
    },
    {
      "id": "96e70337d4e90482",
      "url": "https://newmediaart.course.monolab.world/lesson/01",
      "path": "/lesson/01",
      "title": "第 1 堂 第一個生成藝術作品｜吳哲宇新媒體藝術全景課",
      "description": "第 1 堂〈第一個生成藝術作品〉：用色票、if／else 和 for 迴圈排出環狀的花，再把一塊畫截下來，做成自己的筆刷。全景課每週二直播，已開課也能加入，回放永久看。",
      "lang": "zh",
      "kind": "lesson",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/96e70337d4e90482.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/96e70337d4e90482.json",
      "contentHash": "7591ba27206a49b03b6faf80e65a9a2f88bfdf30688e4bb65f2346304059ecc2",
      "characters": 5613
    },
    {
      "id": "e8f4980f9faa2d20",
      "url": "https://newmediaart.course.monolab.world/lesson/02",
      "path": "/lesson/02",
      "title": "第 2 堂 數學之美：向量與粒子｜吳哲宇新媒體藝術全景課",
      "description": "第 2 堂〈數學之美：向量與粒子〉：位置加上速度，就是下一刻的位置。從一顆會彈的球，做到按住滑鼠噴出來的粒子槍，再讓 noise 力場推著粒子流動。全景課每週二直播，已開課也能加入，回放永久看。",
      "lang": "zh",
      "kind": "lesson",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/e8f4980f9faa2d20.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/e8f4980f9faa2d20.json",
      "contentHash": "e34a56de04f9eda8c405d82b2096b9e5ad2b395f3652da3c99239252a1e860ac",
      "characters": 5313
    },
    {
      "id": "a7e2ad2ce49ae572",
      "url": "https://newmediaart.course.monolab.world/lesson/03",
      "path": "/lesson/03",
      "title": "第 3 堂 自然的演算法｜吳哲宇新媒體藝術全景課",
      "description": "第 3 堂〈自然的演算法〉：用規則長出自然：粒子死掉時分裂出下一代、照一串字畫出 L-System 的樹、三條規則讓 500 隻鳥自己成群。全景課每週二直播，已開課也能加入，回放永久看。",
      "lang": "zh",
      "kind": "lesson",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/a7e2ad2ce49ae572.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/a7e2ad2ce49ae572.json",
      "contentHash": "6fd138ee822250eff0907609215ce9c381f08e821034e92b6ce1f1f38bae1e8f",
      "characters": 4597
    },
    {
      "id": "27c6ab2d079fcc40",
      "url": "https://newmediaart.course.monolab.world/lesson/04",
      "path": "/lesson/04",
      "title": "第 4 堂 聲音 × 視覺：音頻分析｜吳哲宇新媒體藝術全景課",
      "description": "第 4 堂〈聲音 × 視覺：音頻分析〉：麥克風輸入、音頻分析、音像共感（p5.js 畢業作），做出音像互動作品。全景課每週二直播，已開課也能加入，回放永久看。",
      "lang": "zh",
      "kind": "lesson",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/27c6ab2d079fcc40.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/27c6ab2d079fcc40.json",
      "contentHash": "795faf21f6b97f3c7bf999bdd8e0803048950f73c90fcacc67d811dae9173e9c",
      "characters": 250
    },
    {
      "id": "1dc0ba3c88f05aac",
      "url": "https://newmediaart.course.monolab.world/lesson/05",
      "path": "/lesson/05",
      "title": "第 5 堂 TouchDesigner 入門｜吳哲宇新媒體藝術全景課",
      "description": "第 5 堂〈TouchDesigner 入門〉：節點式思維、TOP／CHOP／SOP 基礎、2D 視覺，做出第一個 TouchDesigner 作品。全景課每週二直播，已開課也能加入，回放永久看。",
      "lang": "zh",
      "kind": "lesson",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/1dc0ba3c88f05aac.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/1dc0ba3c88f05aac.json",
      "contentHash": "e7d6767736aa4c6941383ca711a0ed21636e808670a7b52f0439f4f33f36ab3d",
      "characters": 269
    },
    {
      "id": "2af61d1b983909b6",
      "url": "https://newmediaart.course.monolab.world/lesson/06",
      "path": "/lesson/06",
      "title": "第 6 堂 TouchDesigner 進階｜吳哲宇新媒體藝術全景課",
      "description": "第 6 堂〈TouchDesigner 進階〉：3D 世界、材質、光影、影像處理，做出3D 視覺作品。全景課每週二直播，已開課也能加入，回放永久看。",
      "lang": "zh",
      "kind": "lesson",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/2af61d1b983909b6.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/2af61d1b983909b6.json",
      "contentHash": "5212bd977f266efc101ea0f4591a46f3cd265dd09e27a44c87332691095ad0b6",
      "characters": 241
    },
    {
      "id": "f64f8d2de7f5f520",
      "url": "https://newmediaart.course.monolab.world/lesson/07",
      "path": "/lesson/07",
      "title": "第 7 堂 體感互動｜吳哲宇新媒體藝術全景課",
      "description": "第 7 堂〈體感互動〉：MediaPipe 手勢與身體追蹤、即時影像互動，做出體感互動作品。全景課每週二直播，已開課也能加入，回放永久看。",
      "lang": "zh",
      "kind": "lesson",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/f64f8d2de7f5f520.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/f64f8d2de7f5f520.json",
      "contentHash": "bd484447e57f2c390111316bdf4c5b3339fcb2f2da18c9e0007b6a63d974dac2",
      "characters": 242
    },
    {
      "id": "337097abbfae63c1",
      "url": "https://newmediaart.course.monolab.world/lesson/08",
      "path": "/lesson/08",
      "title": "第 8 堂 系統整合 × 音像表演｜吳哲宇新媒體藝術全景課",
      "description": "第 8 堂〈系統整合 × 音像表演〉：把所有工具串起來，做一場即時演出，做出音像表演 demo。全景課每週二直播，已開課也能加入，回放永久看。",
      "lang": "zh",
      "kind": "lesson",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/337097abbfae63c1.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/337097abbfae63c1.json",
      "contentHash": "13b11f10f0bd04de353770e5b2a55a773f26fa6f59dc103ca723f0679cf83cd8",
      "characters": 226
    },
    {
      "id": "312863753edd6820",
      "url": "https://newmediaart.course.monolab.world/lesson/09",
      "path": "/lesson/09",
      "title": "第 9 堂 學員作品發表講評會｜吳哲宇新媒體藝術全景課",
      "description": "第 9 堂〈學員作品發表講評會〉：學員分享作品，哲宇線上點評，做出個人完整作品。全景課每週二直播，已開課也能加入，回放永久看。",
      "lang": "zh",
      "kind": "lesson",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/312863753edd6820.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/312863753edd6820.json",
      "contentHash": "ce351af94671ef27b3f59876014a9ad510cdd22013a45cb73775786be15fb7e2",
      "characters": 227
    },
    {
      "id": "de3c950e4bf2ffff",
      "url": "https://newmediaart.course.monolab.world/lesson/10",
      "path": "/lesson/10",
      "title": "第 10 堂 AI 協作 × 創作永續｜吳哲宇新媒體藝術全景課",
      "description": "第 10 堂〈AI 協作 × 創作永續〉：AI 作為創作夥伴；讓創作持續發生的工作流，做出你自己的創作系統。全景課每週二直播，已開課也能加入，回放永久看。",
      "lang": "zh",
      "kind": "lesson",
      "markdownUrl": "https://newmediaart.course.monolab.world/ai/pages/de3c950e4bf2ffff.md",
      "jsonUrl": "https://newmediaart.course.monolab.world/ai/pages/de3c950e4bf2ffff.json",
      "contentHash": "057e96138fe67a8247c618be16a379021095c98a8a12e2c4cd18763103200946",
      "characters": 222
    }
  ]
}
