[질문] 오전반(김문희, 손영아, 이리나) - "숨력"

8 views
Skip to first unread message

rian yi

unread,
Dec 14, 2010, 9:33:28 AM12/14/10
to honaya_pi...@googlegroups.com

사운드 입력 값을 숫자로 출력하는데 있어서 어려움을 겪고 있습니다

println 으로 현재 입력받고 있는 사운드의 숫자값을 알려면 어떤 명령어를 넣어야 하는지 찾기 힘들어요 ㅠㅠ
println(in.bufferSize); 라고 입력했을 경우
in.bufferSize cannot be resolved or is not a field 라는 에러메세지가 나왔고

println(in);을 입력했을 경우

아래와 같은 출력물이 나왔습니다

=== Minim Debug ===
=== byteBufferSize is 2048

=== Minim Debug ===
=== Number of octaves = 9

ddf.minim.AudioInput@16877f8

....

현재

import ddf.minim.*;
import ddf.minim.signals.*;
import ddf.minim.analysis.*;
import ddf.minim.effects.*;


Minim minim;
AudioInput in;
BeatDetect beat;


void setup()
{
  size(512, 200, P2D);

  minim = new Minim(this);
  minim.debugOn();
 
  // get a line in from Minim, default bit depth is 16
  in = minim.getLineIn(Minim.STEREO, 512);
 
  PFont font;
  font = loadFont("FrutigerLTStd-Bold-48.vlw");
  textFont(font);
 
 
 beat = new BeatDetect(in.bufferSize(), in.sampleRate());
 

 
}

void draw()
{

 
 
 
  background(0);
  stroke(255, 200);
 
  textSize(36);
 
  text("blow me", 25, 50);

  //beat.detect(in.mix);
 // if (beat.isHat())
 //   ellipse(width * 0.25, height * 0.5, 100, 100);
      //println( ); <---------------------????????????????????????????????? 이부분을 모르겠어요
 
 
  // draw the waveforms
  for(int i = 0; i < in.bufferSize() - 1; i++)
  {
    line(i,30 + in.left.get(i)*100, i+1, 50 + in.left.get(i+1)*50);
    line(i, 150 + in.right.get(i)*50, i+1, 150 + in.right.get(i+1)*50);
  }
}


void stop()
{
  // always close Minim audio classes when you are done with them
  in.close();
  minim.stop();
 
  super.stop();
}



이러한 코드로 쓰고 있습니다.

----------------------------------

숫자로 받은 입력값을 이용하여
일정 값보다 높은 값을 입력받으면
새로운 페이지를 불러들이는 코드를 만들 예정입니다

첨부한 파일은 첫페이지 디자인으로써 불었을 경우,
현재의 날짜(현재의 날짜가 아닌 다른 날짜들은 불었을때 사라짐)와 스케줄을 보여주는 달력(숨력)을 만들고 있습니다.



ㅠㅠㅠ 도와주세요 ㅠㅠㅠ













달력.jpg

손영아

unread,
Dec 14, 2010, 10:38:33 AM12/14/10
to honaya_pi...@googlegroups.com
도와주세요........ㅠㅠ

2010년 12월 14일 오후 11:33, rian yi <rrrr...@gmail.com>님의 말:

SeungBum Kim

unread,
Dec 14, 2010, 10:45:54 AM12/14/10
to honaya_pi...@googlegroups.com
자.. 올려준 코드는 마이크입력을 좌우로 나눠서 시각화해주는 것이지요?

어떤 값을 이용해서 line()함수로 나타내는지 알겠나요? 

in.left.get() 혹은 in.right.get()을 쓰고 있습니다.

그리고 코드를 보면 0부터 bufferSize까지 여러 영역을 반복적으로 값을 가져와서 소리를 시각화하고 있습니다.

제 마이크로 불어보니 특정 영역이 아니라 전체적으로 값이 반응하는 것을 시각화 결과를 통해서 알 수 있었습니다.

그럼 아무 영역이나 콕 찝어서 값의 변화를 출력해봅시다. 여기서는 100이라는 위치에서

println(in.left.get(100)); 

뭔가 마이크입력에 따라 값이 나오죠?

여기서 개선할 사항이 두 가지 정도 되겠네요.

 1. 값의 변화 폭을 더 넓혀본다.
 2. 현재는 +/- 값이 왔다 갔다 하는데 절대값으로 음량을 파악하는 방법은 없을까?

개선사항은 여러분의 몫으로... ;)



2010/12/14 rian yi <rrrr...@gmail.com>



--
김 승 범 (SB Kim)
http://piny.cc - PINY (Powerful Idea jourNeY)
Digital Literacy & Communication
010 - 2686 - 6855
http://xenbio.net | http://squeak.kr

Donghee Park

unread,
Dec 14, 2010, 11:09:01 AM12/14/10
to honaya_pi...@googlegroups.com
사운드입력값은 볼륨크기를 말하는거겠군요.

minim의 in.get 으로 볼륨을 계산하기 위해서는 최근 몇개의 파형 데이트를 받아서 가장 큰값과 가장 작은 값의 차이를 알아내야해요.
파형의 진폭이 불륨이니깐요. println() 안에는 불륨의 크기가 들어가지 않을까 싶네요.

저는 minim volumn size processing 이런식으로 검색해봤습니다. 검색 키워드 잘 선택해 보세요.
자 그럼 볼륨을 알기위해서 파형 데이터를 받아서 계산해야 할까요? ㅎㅎ minim에 이미 사운드 분석하는 라이브러리가 있어요.

http://binteractive.org/xe/IVS/P5_Code/6932

요기 보니... 뭔가 실마리가...


2010/12/15 손영아 <gol...@gmail.com>
Reply all
Reply to author
Forward
0 new messages