Working with Audio Playback
지금까지 비디오가 Jitter을 통해 어떻게 작동되어가는지 알아보았다면 이제는 본격적으로 MSP를 통해 어떻게 프로젝트를 달성하는지에 대해 알아보겠다. Max에서 오디오가 어떻게 작동되는지 아는 것은 리얼타임으로 사운드를 다룰 수 있는 기회를 제공하게 된다. 지난번에 다룬 사운드와 다른 내용은 지난 번에 Max상에서 오디오를 따로 창조해낸것과 달리 이미 존재하는 오디오 파일을 불러와 재생시키는 방법으로써 접근해볼 것이다. 항상 강조하지만 Max는 아이디어를 실현시키는 하나의 도구임으로써 정답은 없지만 어떤 Object이 그 아이디어에 적합할 것인지에 대해서는 고찰해볼 필요가 있다. 이번 시간에서는 이 재생 파일들을 어떠한 다양한 방법으로 Max안에 구현시킬지 알아보는 시간을 가질 것이다.
Your Interests
Max를 이용함에 있어서 특출난 뮤지션이어야 할 필요가 없을 뿐더러 사운드가 이미지/스토리와 함께 여러 방면으로 엮여 세팅을 조절함으로써 유저가 원하는 방향으로 컨텐츠를 생성할 수 있음을 알아야 한다.
- 만약 관심사가 Max를 활용햐여 빠르고 비트가 혼합된 음악을 만들고 싶다면 오디오 파일을 동기화로 Max에서 플레이하게끔 만들어 여러개의 사운드가 실시간으로 혼합되어 나오는 음악을 만들 수 있다.
- 만약 분위기나 음경에 대해 더욱 초점을 맞추고 싶다면 사운드 파일을 동기화로 재생시키는 것에 대해 계속 고집할 필요는 없다. 대신 아마 사운드가 어떻게 약하게 재생되고 흘러가고 믹스될지에 대해 중점을 맞출 필요가 있을 것이다.
- 만약 실시간 오디오를 어떻게 재생시킬지에 대한 비음악적 사운드의 신호를 나타내거나 트리거시키려는 특정 관심사가 있다면 (e.g. 팟캐스팅, 연극) 효과음들의 적극적인 활용 (e.g. 사운드 효과, 찌르는 소리, 호흡 소리 등)이 매우 유용할 것이다.
Things to learn in this class
- Have a basic understanding of how 'signals' in Max work differently to regular Max messages. (Max안에서의 Signal이 다른 일반 Max의 Message들과 어떻게 다르게 작동되는지 기본적인 이해를 하기.)
- Start and stop audio processing in Max. (Max 안에서 오디오 프로세싱을 시작하고 멈추기.)
- Understand how to load and playback sounds in a variety of ways, and have a working understanding of how Max can stream audio from the disk, or playback sounds loaded into memory. (다양한 방법으로 사운드를 로드 및 재생하는 방법을 이해하고 Max가 디스크에서 오디오를 스트리밍하거나 메모리에 로드된 사운드를 재생하는 방법을 실제로 이해하기.)
- Obtain information about a sound stored in a buffer~ object. (buffer~ MSP object안에서 저장되는 사운드의 대해 정보를 얻기.)
- Manipulate the playback of audio files, such as changing speed/pitch, seeking to different parts of a soundfile, and looping sections. (스피드/음역대를 바꾸거나 사운드 파일의 다른 부분과 반복되는 섹션을 찾는거와 같은 오디오 파일의 재생을 직접 조절 해보기.)
- Adjust the loudness of sounds as they play back. (사운드가 재생되면서 볼륨을 조절하기.)
Setting Audio Output
본격적으로 내용에 들어가기 전 우리는 MIDI를 이용해서 Max 자체에서 사운드를 생성해보았다. 그 다음 Jitter을 이용하여 시각적인 비디오를 로딩해보는 방법을 고찰해보았다. 여기서 MIDI를 사용했을 때에는 MIDI Message들이 Synthesiser안에 구축된 컴퓨터 사운드 카드안으로 보내져 사운드가 생성되는 것을 알 수 있었다. 또한 사운드가 비디오와 함께 삽입되어있는 파일들도 또한 재생시킬 때 사운드카드안으로 보내져 사운드가 생성되는 것을 알 수 있다. 이 때 사운드트랙은 Max에서 노출되는 것이 아니라서 우리가 볼륨을 조절하는 것 빼곤 Max상에서 직접적으로 사운드를 맘에 드는 방향으로 조절할 수 없다는 것이었다. 그치만 MSP Object들을 사용하면 Max안에서 사운드를 생성시켜 조작하는 방법에 대해 알 수 있게 되고 이를 본격적으로 하기 전 Max의 오디오 설정을 해주어야 한다.
Max는 일반적으로 내장 오디오 기기에 사운드를 내보낸다. 이 때 기본 오디오 기기는 Mac 또는 PC를 사용하느냐에 따라 각기 다른 이름을 갖게 된다. Zoom과 같은 어플리케이션으로 리얼타임 오디오를 내보내기 위해서는 Zoom 오디오 코덱을 사용하기 위해 어떻게 Max의 오디오 아웃풋을 설정해야 하는지 알아야 한다. 이 때 방법은 다음과 같다.
Max의 Options 메뉴를 들어가 Audio Status를 누른다음 Output Device를 알맞게 바꿔주면 된다. 이 때 또 다른 방법으로 ;dsp open과 같은 message box를 클릭하여 곧바로 설정할 수 있게끔 할 수 있다.
이 때 오디오 아웃풋을 Zoom Audio Codec으로 바꾸어 설정하게 되면 Zoom을 실행하지 않았을 때 오디오를 실행시킬 때 Max상에서 다음과 같은 에러를 표기하는 것을 알 수 있다.
만약 이런 일이 생기게 된다면 Options-> Audio Status를 들어가 오디오 아웃풋을 기본 내장형으로 다시 바꾸어 주어야 한다.
Working with Audio
Max상에서 오디오로 작업을 할 때 기본적인 Max Object들과 다르게 작동 할 수 있다. Max object들이 서로 어떠한 방식으로 작동되고 있을때 그들이 서로 커뮤니케이션을 할 동안 Max의 오디오 신호는 조금 다르게 작동하게 된다. 마치 다음과 같이 Boo와 같은 message box를 클릭하기 전에는 정보는 절대로 다른 object으로써 자동으로 보내지지 않게 된다. 하지만 이 때 Max에서 ~ (tilde)와 같은 물결표시가 있는 object들은 MSP Object으로써 칭하는데 이는 각기 다른 종류의 정보를 간단한 Max message에 보내게 된다. 이들은 신호와 함께 커뮤니케이션을 하며 정보는 유저의 인터렉션을 떠나 지속적으로 보내게 되는 역할을 하게 된다.
이러한 object들은 "Signal Processing"이라는 것에 알맞는 Max의 한 면을 구축하게 되거나 지속적인 오디오 정보를 조절한다. 이러한 원리에 따라 Max Signal Processing Objects라는 명칭이 붙게 되었으며 이는 MSP Objects라는 말로 대체되어왔다.
Examples of MSP Objects:
MSP는 다음과 같은 object들이 있으며 이때의 물결 표시들은 정보들이 Max message들과는 다르게 지속적인 시그널로서 작동한다는 것을 암시한다.
rate~ | sig~ | phasor~ 0.5 | change~ | ~0. | groove~ | pink~ |
MSP Object들은 Signal Rate과 함께 서로 커뮤니케이션하게 되는 데 이는 트리거가 감지될 때에면 정보를 보내거나 교환하려는 특징과는 상반된다. 하지만 초기 이를 이루게끔 하기 위해서는 유저가 직접 설정은 해야 한다. 이는 Max의 오디오 프로세싱 파이프라인을 작동시켜야 한다. 이 때 방법은 다음과 같다.
- ezdac~이나 ezadc~과 같은 object들을 켜주어야 한다.
- 그 다음 Patcher 오른쪽 구석에 있는 오디오 프로세싱을 Audio On/Off와 같은 아이콘을 클릭하여 오디오 정보가 지속적으로 도출될지 아닌지 설정해주어야 한다.
다음과 같은 과정을 마치고 나면 ezdac~이나 ezadc~과 같은 object들이 Max가 오디오를 프로세싱하게 되게끔 작동을 하기 시작한다. ezadc~과 ezdac~은 사운드를 Max상에서 불러오고 표출할 수 있게 만드는 MSP Object들로써 각기 다른 역할을 한다.
먼저 ezadc~는 오디오 시그널 (e.g. 마이크에서 녹음되는 소리) 등을 Max로 불러와 인식될 수 있게끔 해주는 Object이다.
또한 이름이 비슷하지만 다른 ezdac~은 반대로 Max에서 나오게 된 오디오를 외부로 (e.g. 헤드폰이나 스피커)로 나오게끔 만들어 주는 Object이다. 이를 켜주게 되면 Object이 특정 정보를 자동적으로 Max상에서 전달해줄 수 있다. ezdac~은 Patch상에서 얼마든 여러개를 집어 넣을 수 있다. 그리고 ezdac~에서 나오는 DAC라는 표현은 "Digital-to-Analog Conversion" (디지털-아날로그 변환)으로써 디지털로 생성된 오디오 파일을 아날로그적인 외부 스피커로 틀어진다는 점에서 의미론적으로 받아들일 수 있다.
그리고 앞서 말한 Audio On/Off를 나타내는 아이콘은 Max Patcher 오른쪽 맨 아래에 자리하고 있다.
Quick Tip
지금까지 배워왔던 것은 Message box들을 이용하여 그 Message들이 트리거 될때에만 Object의 Bang Inlet에 연결된 정보들이 도출될 수 있도록 하는 방식이었다면 Message는 또한 두번째 Inlet을 이용하여 Message를 트리거하지 않아도 Message가 설정될 수 있도록 만들어 줄 수 있다. 이는 우리가 특정 값을 다른 Object으로 임시적으로 저장할 때 유용하며 우리는 그러므로 또한 그 값을 Bang으로 보내줌으로써 우리가 준비 될 때 지속적으로 값을 자동으로 내보낼 수 있게끔 할 수 있다. 이는 방금 언급한 MSP Object들의 원리와 비슷하다. 이때 만약 수가 아닌 정보를 내보내려고 한다면 우리는 Message object을 활용하여 각각의 파일들의 이름을 디스플레이 할 수 있다.
아래에서의 예시는 p Mnemonic이라는 Object을 사용하여 특정 단어들을 생성하게끔 설정해준 다음 Message box의 왼쪽 inlet에 연결된 Button이 클릭되었을때 p Mnemonic에서 생성된 단어를 message로 읽어와 프린트할 수 있게끔 설정해주는 예시이다. 이때 또한 Message를 p Output-Items-One-At-A-Time이라는 Object으로 연결하여 연결된 message들에게 이전 message로 불러들여지는 단어들을 하나하나 열거된 message로 입력될 수 있게 하는 Patch를 구조해보았다.
Getting Audio Output
ezdac~ Object은 Max가 인식된 Audio Signal을 외부적으로 내보내는데 있어 아주 중요한 역할을 하게 되는데 이 때 두 개의 inlet이 공존하는 것을 알 수 있다. 첫번째 inlet은 Channel 1으로 불리며 두번째 inlet은 Channel 2로 불리게 된다. 이 두개의 Inlet들은 Audio Signal을 둘다 받아주는 동시에 헤드폰으로 사운드를 들을 때 어느 한쪽에서 들릴지 결정할 수 있게 해준다. 즉 만약 Channel 1에다 patch를 연결하게 되면 헤드폰으로 들을 시 왼쪽에서만 들려지는 것을 알 수 있다.
즉 특정 Audio File을 불러와 다음과 같이 연결하게 되면 양쪽 모두의 방향에서 소리가 들리는 경험을 할 수 있다. 만약 오디오 파일을 ezdac~에 연결하지 않으면 Max상에서 오디오를 재생을 하여도 우리는 오디오 파일이 아웃풋으로 나가져지는 것이 아니기 때문에 들을 수 없다. 즉 만약 오디오의 대한 정보를 다른 object에 연결하여 정보를 옮기고 싶지만 꼭 귀로 듣는 과정을 스킵하고 싶을 때에는 ezdac~을 연결해주지 않는 방법이 있다. 반면 사운드를 듣기 위해서는 ezdac~의 연결이 필연적이게 된다.
playlist~
만약 사운드 파일을 그냥 재생시켜보는것이 목표라면 playlist~ Object을 사용하면 된다. 일반적으로 Unlock된 Patcher에 Audio 파일을 그냥 드래그하면 자동적을 해당 파일이 소속된 playlist~ object이 자동생성되게 되며 이때 각각에 있는 첫번째 그리고 두번째 outlet을 각각 ezdac~의 Channel 1 그리고 Channel 2에 연결하여 모든 소리가 양쪽에서 들리게끔 만들어 줄 수 있다. 그리고 세번째 Outlet에 Floating Number box를 연결하면 Sound 파일의 Index 다음에 현재 재생 중인 사운드/선택 영역을 나타내는 분수 값이 불러올 수 있다. 그리고 네번째 Outlet에 Print Object을 연결하여 사운드가 언제 시작하고 멈출때 특정 메세지가 Pop Up 되게끔 설정해 줄 수 있다. 그리고 제일 마지막 다섯번째 Outlet은 정보를 다른 Object에 특정한 관계없이 저장하고 싶을때 이용해 줄 수 있다.
playlist~는 오디오 파일을 여러개 불러올 때 진가를 발휘하게 되는데 파일 여러개를 Patcher로 드래그하게 되면 다음과 같이 여러개의 오디오 파일들이 Stack 형태로 붙어져서 playlist~ object이 생성되는 것을 알 수 있다. 하지만 동시에 재생될 수 는 없고 하나의 오디오만이 재생될 수 있다. 하지만 이때의 playlist~의 첫번째 inlet에 number box나 message를 연결하여 몇번째에 있는 오디오 소스가 재생될지 설정해줄 수 있다. 만약 1이라는 number box를 연결하게 되면 첫번째의 오디오가 플레이되게 된다. 만약 0을 집어넣게 되면 아무 오디오 소스도 재생디지 않게 된다. 또한 playlist~는 특정 부근을 반복해서 재생하거나 특정 오디오를 지정해서 플레이 하거나 하는등의 여러가지 기능들을 제공한다.
sfplay~
sfplay~는 playlist~와 비슷한 형태의 object 이지만 UI가 없는 것을 말한다. 즉 sfplay~는 조금 Max의 숙련자들에게 더 유용하게 작용하며 기능적으로는 오디오 파일을 읽고 재생하는것과 같은 playlist~와 동일한 기능을 한다. sfrecord~는 반면 sfplay~의 친척관계로써 사운드를 녹음하여 디스크로 보내는 역할을 하는 Object이다. 첫번째 outlet은 playlist~와 동일하게 소리를 외부적으로 나올수 있게끔 세팅해주고 두번째 outlet은 파일의 재생이 모두 끝났을 때 Bang을 보내주는 역할을 한다.
Toggle은 이때 1과 0과 같은 값을 생성하여 오디오를 플레이할건지 말건지 결정해주는 역할을 해줄 수 있다. (1은 재생/0은 중지와 같다.) 하지만 이는 pause와 resume과 같은 message들로도 충분히 제어 가능하다.
다음 예시는 open으로 불러와진 오디오 소스가 sfplay~로 연결되어 ezdac~으로 소리가 외부적으로 나올수 있게끔 설정한 구조이다. 이때 loop message를 연결하여 toggle의 결과에 따라 오디오가 반복될지 안될지 결정해주고 resume과 pause를 통해 직접 재생과 중지를 제어할 수 있도록 만들어 주었다.
sfplay~에 2와같은 argument가 들어갔다면 이는 오디오가 두 개의 Channel로 내보내어진다는 것을 암시한다. 즉 sfplay~의 object은 Channel의 갯수를 상징한다.
Playing sounds stored in memory
sfplay~와 playlist~가 디스크로부터 사운드를 플레이할때 이때 몇몇의 object들은 컴퓨터의 메모리에 저장된 사운드를 플레이하는데 도움을 준다. 그렇다면 하드 드라이브에서의 사운드와 메모리에서의 사운드의 차이점은 과연 무엇일까? 보통적으로 재생하려는 사운드는 녹음됬거나 다운로드하였거나 아니면 어떠한 방식으로 생성되어 만들어진 것일것이다. 이들은 또한 하드 드라이브에 오디오파일 형태로 아직 저장되지 않았을 것이다. 이때 하드 드라이브에 저장되지 않은 디스크로부터의 사운드를 메모리로 로딩하여 Max로 재생할 수 있게끔 해주는 Object이 있는데 이는 buffer~ object으로써 사운드 파일을 임시적으로 Max에 저장한 다음 녹음과 재생을 동시에 진행되게끔 할 수 있게 한다. buffer~ object은 우리가 직접 argument들을 선택할 수 있는 권한을 주게 되는데 argument들은 각각의 buffer~ object의 이름을 만들어 줄 수있다. 이는 buffer~을 통해 Max에 임시저장하고 싶은 오디오 소스들은 buffer~의 이름을 따로 설정해주어야 한다. 이때 buffer~의 이름에 띄어쓰기가 들어가면 안되며 이는 왜냐하면 띄어쓰기는 buffer~의 새로운 argument로써 인식하기 때문이다.
replace message를 통해 buffer~에 오디오 컨텐츠를 집어넣을 수 있으며 (또는 dropfile object을 통해 replace의 inlet에 연결하여 대신 오디오 컨텐츠를 집어넣을 수 있음) 이때 파일이 로딩되었을때 오른쪽 outlet을 Bang을 보내 info~ Object이 버퍼에 로드된 파일에 대한 각각의 정보 (outlet에 따라 다름)를 알려주게 만들어 message로 입력될 수 있게끔 만들어 줄 수 있다. 이 때 buffer~의 컨텐츠가 어떻게 재생되는지 알고 싶을때 buffer~를 더블클릭하거나 waveform~ object을 활용하여 시각적으로 재생되는 경과를 알 수 있다. 이때 attribute으로 buffername을 집어넣은 후 argument로 buffer~의 이름을 집어넣어야 작동시킬 수 있다.
buffer~의 이름은 동일한 이름을 가진 모든 buffer~에게도 똑같이 변경이 적용되며 이는 buffer~의 이름을 지을때 중복되는 것이 없도록 요하는 바이다.
buffer~은 patch를 끌때 어떤 파일이든지간에 모두 순식간에 잊어버리게 되며 이때 patcher를 여는 순간 자동으로 불러온 오디오 파일들을 불러오게끔하고 만들고 싶을 때 buffer~의 첫번째 argument인 이름 뒤에 두번째 argument로써 파일의 이름을 써넣어주어 자동으로 어떤 파일을 기본적으로 인식하고 싶게끔 만들어 줄 수 있다. (e.g. buffer~ cello cello-f2.aif) 이때 오디오 파일은 .maxpat 파일과 같은 폴더 안에 있어야 한다.
play~ and groove~
play~와 groove~는 buffer~에 저장된 사운드를 플레이 하는데 각기 다른 방향으로 유도한다. 이를 완성해주기 위해선 각각의 play~와 groove~ MSP Object들에게 buffer~의 argument와 동일하게 argument를 설정해야 작동한다. play~와 groove~ 들은 여러가지 buffer~에 저장되어 있는 오디오 파일들을 대신해서 재생시켜 ezdac~으로 전송하여 여러개가 있을 경우 동시재생을 가능케 만든다. 이 때 play~는 Max message와 함께 사운드 파일을 재생하며 groove~는 여러가지의 스피드로 사운드를 재생한다는 점에서 차이점이 있다. 이때 groove~에 들어오는 message값이 0이라면 스피드가 0이되어 재생하지 않을 것이다. 만약 play~와 groove~로 생성되는 오디오 파일을 반복하고 싶게 만들고 싶다면 loop message를 inlet에 연결하거나 @loop 1과 같이 attribute로써 object안에 써넣는 방법이 있다. (e.g. play~ soundFileC @loop1 / groove~ soundFileC @loop1)
위에서 보면 play~나 groove~의 name argument 옆에 2와같은 숫자가 argument로써 써넣어져 있는 것을 알 수 있는데 이는 Signal의 수를 뜻하며 이는 유저가 오디오 파일이 스테레오 (즉 두개의 채널이 있는지)에 대한 중요한 지표로써 작용할 수 있다. 또한 가장 오른쪽에 있는 outlet은 사운드 파일이 재생을 끝냈을때 Bang을 전달하는 것으로 작동한다. 만약 play~나 groove~의 두번째 signal의 수를 나타내는 argument가 적혀있지 않다면 Signal outlet은 하나만 생성되어 (argument를 1로 작성하는 것과 동일) 가장 맨 왼쪽에 있는 outlet이 channel을 전달하는 것으로 작동된다.
만약 groove~나 play~가 오직 두 개의 outlet밖에 없다면 다음과 같이 가장 오른쪽의 outlet (Sync outlet)을 audio signal로 착각하여 ezdac~의 inlet에 연결하지 말고 왼쪽의 outlet에서 ezdac~의 inlet에 각각 연결하여 두 귀로 들을 수 있게끔 설정할 수 있다.
groove~'s sync outlet
그렇다면 groove~의 sync outlet (제일 오른쪽의 outlet)은 왜 유용할까? play~는 buffer~에 담겨져 있는 오디오를 재생할 동안 (시작과 끝 포인트를 명시한다) play~에게 number box를 연결해줌으로써 buffer~안에 있는 재생되는 오디오가 현재 어느시점인지 나타나게끔 해줄 수 있다. 즉 이는 재생 파일의 현재 시간이 어디인지 알려주는 방법으로써 유용하게 쓰인다.
Changing Playback Speed
지금까지 배웠던 내용을 종합해 보아 과연 재생 길이가 다른 두 각기의 오디오 파일을 Sync(동기화)하여 동시에 재생할 수 있을까? 이때 각각 오디오 파일의 길이와 channel의 수를 확인하는 방법은 info object에서 7번째와 9번째 outlet을 각각 연결하여 확인할 수 있다.
만약 start message box 뒤에 0과 4000과 같은 숫자를 써넣은다면 재생파일에서의 0초부터 4초까지만 플레이 해주라고 명령을 내릴 수 있다. (e.g. start 0 4000) 이때 수들은 Milliseconds로 계산되며 만약 숫자를 더 넣게 된다면 총 몇초동안 플레이 할지에 대해 명령을 내릴 수 있다. 즉 start 0 4000 6000과 같은 message는 재생파일의 0초부터 4초 부근까지만 플레이하지만 6초동안 플레이 즉 원본보다 느리게 재생하라고 명령을 내리는 것과 같다.
sig~ object은 Max message를 signal로 변환하여 만약 sig~ 위에 toggle을 연결할 경우 0 과 1값을 반환하여 이를 groove~에 연결할 경우 결국은 오디오 파일이 재생할지 말지에 결정된다. 이는 왜냐하면 엎서 언급했듯이 groove~는 오디오의 스피드를 조절하여 플레이해주는 object이기 때문이다.
아래와 같이 재생 속도가 다른 오디오 파일들을 연결하여 play~로 재생시켰을 때 길이가 짧은 오디오가 먼저 끝나고 그 뒤로는 길이가 긴 오디오파일만 재생되는 것을 알 수 있다. 이를 방지하기 위해 play~에게 알맞는 start message를 전달해주기로 하였다.
Changing loudness
만약 사운드를 같이 재생한다면 이 sync를 맞추었지만 볼륨에서 차이가 나게 된다는 사실을 알 수 있다. 또한 재생하는 와중 볼륨을 조절하고 싶을 때도 있을 것이다. Max는 이 때 몇가지의 방법들을 제시하는데 우선 가장 쉬운 방법을 소개하겠다. 마치 jit.brcosa가 jit.movie와 jit.pwindow object들 사이 비디오의 brightness를 조절해주는 것과 같이 이들 또한 사운드를 내보내는 object과 ezdac~사이에 배치하여 작동시킬 수 있다. (즉 Max는 MSP든 Jitter든 정보를 가져오고, 이를 어떠한 방법으로 조절하여 내보내는 방식으로 작동한다.) gain~ object은 Signal의 볼륨을 조절할수 있게 만들어주는 UI object이고 meter~는 그 조절된 볼륨을 시각적으로 확인할 수 있게끔 만들어주는 object이다. 또한 live.gain~은 gain~과 meter~의 혼합체로써 볼륨을 시각적으로보여주는 동시에 볼륨이 얼만큼 진행될지 설정해주는 것도 거능하다. 또한 이 object은 오디오를 스테레오로써 관리가능케 해 오직 하나의 signal만을 조절가능케 하는 gain~보다 더욱 유용하게 작동할 수 있다. 이는 live.gain~의 outlet으로써 어느 signal이 ezdac~으로 연결될지 설정 가능ㅇ하다.
Movie Soundtracks in Max
그렇다면 이번 시간에 배운 MSP는 jitter로 활용을 어떻게 할까? 이는 jit.movie가 컴퓨터의 사운드 카드로 사운드를 전달하는 것부터 알아야 할 필요가 있다. jit.movie~라는 object은 jit.movie와 비슷하지만 이는 오디오 트랙을 Max상에서 내보낼 수 있다는 점에서 차이가 있다. 이는 비디오에서 나오는 사운드를 MSP Object들과 함께 오디오 효과나 사운드 조절을 해줄 수 있다는 점이다.
다음 예시와 같이 jit.movie상에서 나오는 비디오의 오디오 파일을 MSP Object들과 함께 조절하여 슬라이더를 늘릴수록 더욱 reverberant (울려 퍼지는) 사운드가 생성되는 것을 알 수 있다.
지금까지 MSP에 대해서 탐구해 보았다. 사운드를 조절하는 방식에 대해 많은 것을 고찰 할 수 있어 신기한 부분들이 많았고 이를 통해 더욱 다채로운 작업물을 뽑아낼 수 있다는 기대감이 조금은 생긴것 같다.
'Interactive Art > Max_Interactive and Digital Arts' 카테고리의 다른 글
Module 4 - Working with Video in Max (0) | 2022.10.20 |
---|---|
Module 3 - Working with MIDI Input and Output (0) | 2022.10.20 |
Module 2 - Introduction to Max (0) | 2022.09.14 |
Module 1 - Overview of Interactive and Digital Media (0) | 2022.09.14 |