๐Ÿค–

Teachable Machine

๐Ÿ‘‰
Teachable Machine links

์ง€๋‚œ ์‹œ๊ฐ„์— ๋ชป ๋‹คํ•œ ์ธํ„ฐ๋ž™์…˜


๋งˆ์šฐ์Šค ์ธํ„ฐ๋ž™์…˜
  • ์›์œผ๋กœ ๊ถค์  ๊ทธ๋ฆฌ๊ธฐ
  • sin + millis ๋ฅผ ์ด์šฉํ•˜์—ฌ ์› ํฌ๊ธฐ ๋ฐ”๊พธ์–ด ๊ถค์  ๊ทธ๋ฆฌ๊ธฐ
๋งˆ์ดํฌ ์ž…๋ ฅ
  • p5.AudioIn
    let mic;
    
    function setup() {
      createCanvas(710, 200);
    
      // ์˜ค๋””์˜ค ์ž…๋ ฅ ์ƒ์„ฑํ•˜๊ธฐ
      mic = new p5.AudioIn();
    
      // ์˜ค๋””์˜ค ์ž…๋ ฅ ์‹œ์ž‘ํ•˜๊ธฐ
      // ๊ทธ ๊ธฐ๋ณธ๊ฐ’์€ .connect()(์ฆ‰, ์ปดํ“จํ„ฐ ์Šคํ”ผ์ปค์— ์—ฐ๊ฒฐ)๋˜์ง€ "์•Š์€" ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
      mic.start();
    }
    
    function draw() {
      background(200);
    
      // ์ „์ฒด ๋ณผ๋ฅจ(0๊ณผ 1.0 ์‚ฌ์ด) ๋ฐ›์•„์˜ค๊ธฐ
      let vol = mic.getLevel();
      fill(127);
      stroke(0);
    
      // ๋งˆ์ดํฌ ์†Œ๋ฆฌ์˜ ๋ณผ๋ฅจ์— ๋”ฐ๋ผ ๋– ์žˆ๋Š” ๋†’์ด๊ฐ€ ๋ณ€ํ•˜๋Š” ํƒ€์› ๊ทธ๋ฆฌ๊ธฐ
      let h = map(vol, 0, 1, height, 0);
      ellipse(width / 2, (h-25), 50, 50);
    }
๋น„๋””์˜ค ์ž…๋ ฅ
  • createCapture()
    let capture;
    
    function setup() {
      createCanvas(640, 480);
    
      // Create the video capture and hide the element.
      capture = createCapture(VIDEO);
      capture.hide();
    }
    
    function draw() {
      // Draw the video capture within the canvas.
      translate(width, 0);
      scale(-1, 1);
      image(capture, 0, 0, width, height);
    }

p5.js์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด์šฉํ•˜๊ธฐ


์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—ฐ๊ฒฐ
  • HTML ํŒŒ์ผ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋งํฌ๋ฅผ ๊ฑธ๋ฉด ๋œ๋‹ค
  • ๊ธฐ๋ณธ index.html
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.9.2/p5.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.9.2/addons/p5.sound.min.js"></script>
        <link rel="stylesheet" type="text/css" href="style.css">
        <meta charset="utf-8" />
    
      </head>
      <body>
        <main>
        </main>
        <script src="sketch.js"></script>
      </body>
    </html>
  • ml5.js ์‚ฌ์šฉ์„ ์œ„ํ•œ index.html
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.9.2/p5.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.9.2/addons/p5.sound.min.js"></script>
        <!-- ml5 -->
        <script src="https://unpkg.com/ml5@latest/dist/ml5.min.js"></script>
        <link rel="stylesheet" type="text/css" href="style.css">
        <meta charset="utf-8" />
    
      </head>
      <body>
        <main>
        </main>
        <script src="sketch.js"></script>
      </body>
    </html>

Teachable Machine + p5.js


Teachable Machine์€?
  • ๋ˆ„๊ตฌ๋‚˜ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ์‰ฝ๊ณ  ๋น ๋ฅด๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ์ œ์ž‘๋œ ์›น ๊ธฐ๋ฐ˜ ๋„๊ตฌ
  • ์‚ฌ์šฉ๋ฒ•
    • ๋ชจ์œผ๊ธฐ
    • ํ•™์Šต ์‹œํ‚ค๊ธฐ
    • ๋‚ด๋ณด๋‚ด๊ธฐ
Teachable Machine ์ด๋ฏธ์ง€ ํ”„๋กœ์ ํŠธ
  • ์ด๋ฏธ์ง€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒˆ ํ”„๋กœ์ ํŠธ ์„ ํƒ
  • ํ‘œ์ค€ ์ด๋ฏธ์ง€ ๋ชจ๋ธ ์„ ํƒ
  • ์ƒ˜ํ”Œ ์ˆ˜์ง‘
  • ๋ชจ๋ธ ํ•™์Šต
  • ๋ฏธ๋ฆฌ ๋ณด๊ธฐ
  • ๋‚ด๋ณด๋‚ด๊ธฐ
  • p5.js ์›น ์—๋””ํ„ฐ์—์„œ ํ™•์ธํ•˜๊ธฐ(๋ชจ๋ธ ์ด๋ฆ„ ๋ณ€๊ฒฝ, HTML ํ…์ŠคํŠธ ์ˆ˜์ •)

TM + p5.js
  • ๊ฐ„๋‹จํ•œ ์—ฐ๊ฒฐ

Reference link

๐Ÿ‘‰
Making your sketches work on mobile devices