반응형
이전에 쓰던 mdf file의 버전이 10.0.xx버전이였는데, Server로 옮기면서 10.50.xx버전이 되어 어쩔수 없이 업그레이드 되면서 여러 문제에 부딛혔다.


위의 문제가 발생한 이유는, 
한글 sql express에 최신 영문판 sql 2008 r2 developer version을 설치 해서 발생한 문제였다.

해결방법은,
모두 설치되 있던, SQL 을 전부 삭제하고, 재설치가 답이였지만, 왠지 이거밖에 없을까 라는 생각이 들었고 또한
설치하기 전 설치상태를 체크하는 과정이 너무 번거로웠다.
(skip하고 설치하는 방법이 있긴하지만..)

재밌는건, 어떨된 설치가 되고 어떨된 되지 않는 점 이다.

ms sql들은 같은 언어팩의 프로그램을 설치해줘야 하는 점을 몸으로 배웠던 것 같다.
(영문->영문)(한글->한글)로 업그레이드 해야만 한다.

그 밖의 해결책으로는,
regedit을 통해 레지스트리 수정하여 해결하는 방법이 있다.
(이 부분은 검색하면 많이 나오는데, 포멧하고 재설치 하는과정에 기록이 날아가버렸네요..;;)
 
반응형
반응형



이번 앨리온 인터뷰에서는 얼마전에 열렸던 "사운드 디자이너" 공연에 참여했었던 3명의 사운드 아트 뮤지션을 만나보았습니다. 그 첫번째로 최수환 작가를 만나보았는데요. 그가 생각하는 사운드 아트는 어떤 것인지, 그가 추구하는 작품 세계와 이번 공연에 대한 이야기를 들어보았습니다.

Aliceon. 작가님에 대해서 간단히 소개 부탁드립니다.

: 전자음악, 컴퓨터음악을 중심으로 사운드에 대한 다양한 주제들을 연구하고 있는 사운드 아티스트이자 연구가이고, 웹이나 모바일 환경의 커뮤니케이션 디자인에 대해서도 관심이 많습니다. 95년경부터 포스트락, 전자음악을 하는 옐로우키친(Yellow Kitchen)이라는 밴드로 활동을 했었고, 최근에는 오디오비주얼 설치작업 및 공연도 가끔씩 하고 있습니다.
LG전자 MC(Mobile Communication)연구소 UI(User Interface)개발실에서 연구원으로 3년 정도 일을 했었고, 한국예술종합학교에 AT-Lab(Arts and Technology lab)에서 미디어아트 관련 테크놀로지 및 교과목 개발 연구를 담당하기도 했습니다.

Aliceon. 옐로우 키친이라는 밴드 생활을 하시다가 사운드 아트(전자음악)에 진입하게된 계기는 무엇인지요?

: 전자음악에 관심을 가지게 된 것은 1997년 정도였던 것 같습니다. 95-97년 사이에는 인디음악, 펑크음악으로 유명한 <드럭>이라는 클럽을 중심으로 활동하였습니다. 97년쯤 드럭이 본격적으로 세상에 알려지던 시기에 옐로우키친은 음악적 정체성 문제로 드럭을 나오게 되었는데, 음악을 만들거나 공연을 할 수 있는 장소가 없어져서 새로운 작업 방향을 찾아야 했습니다. 이 시기에 저는 사이버 공간이 음악을 창작하는데 중요한 공간이 될 것이라고 생각하였고 그때부터 컴퓨터를 이용해서 음악을 만들기 시작했습니다. 컴퓨터로 녹음을 하거나 컴퓨터 안에 있는 소프트웨어 악기로 음악을 만들면서 전자음악에 관심을 가지게 되었습니다. 전자음악에 대한 독학으로 공부하면서 컴퓨터 속의 가상 공간이 음악을 하는데 굉장히 중요하고 가능성이 많은 곳이라 생각했습니다. 전자음악에 대한 관심이 커지면서 좀 더 체계적으로 공부를 하고 싶다는 생각이 들었고 한국예술종합학교 음악테크놀로지과에 입학하게 되었습니다. 전자음악에 대한 관심이 미디어아트, 뉴미디어아트로 확장된 것은 2005년 교환학생으로 런던에서 공부할 기회를 가진 것이 계기가 된 듯 합니다.


Aliceon.
사운드 아트라는 용어는 미술계에서 소리로 작업하는 영역을 지칭하는 말 일텐데요. 작가님이 생각하셨을 때 사운드 아트에 대한 정의를 말씀해주신다면요.

: 저는 사운드아트를 넓은 개념으로 생각합니다. 이 용어가 처음 사용된 곳은 미술 분야인데 사운드를 소재나 주제로 한 전시들이 많이 열리면서 사운드아트라는 용어를 사용하였습니다. 하지만 이런 전시들의 상당수가 실제로는 60~70년대 실험음악에 뿌리를 둔 실험적인 사운드 작업들을 전시에 사용하였습니다. 전 사운드아트의 범위를 넓게 봐서 미술, 음악, 공연 등 분야에 상관없이 사운드가 주 매체나 재료가 되는, 중요한 표현수단이 되는 작업이라고 생각합니다. 전통적인 미술, 음악 등의 특정한 영역에 속한다기 보다는 사운드를 중심으로 이런 것들의 가치를 하나로 아우르는 개념이라고 생각합니다.

사운드 이론가들은 전통적인 음악적 패러다임을 가진 음악-예를 들면 클래식 음악처럼-은 사운드아트에서 제외하는 경향이 있는데, 저는 클래식 음악의 형태를 가지고 있는 작품이라도 좀 더 다른 의미를 포함하고 있거나 다른 방식으로 배포가 된다면 사운드아트가 될 수 있다고 생각합니다.

 

Aliceon. 사운드 아트 작업들의 경우 가장 근간이 되는 요소인 사운드를 감상할 때 좀 난해한 점이 발생합니다. 화성과 리듬, 규칙에 익숙해져 있다 보니 어떻게 받아들일지 갈팡질팡 할 수 있을 것 같습니다.

 : 사운드아트를 난해하거나 낯설게 생각할 필요가 없다고 봅니다. 사운드아트의 개념을 좀 넓혀서 바라보면 재미있거나 쉬운 것도 있고 완성도가 높고 다양한 해석이 가능한 작품들이 많습니다. 사운드아트가 난해하다라고 받아들여지는 것은 작가나 기획자들의 책임도 있다고 봅니다.

Aliceon.
일반인들에게(전자음악을 처음 접하신 분들에게) 혹시 작은 가이드 라인을 주실 수 있으신지요.

: 사운드아트는 굉장히 재미있는 요소들을 많이 가지고 있습니다. 사운드아트나 전자음악이 소개된 흥미로운 책, 다큐멘터리, 웹사이트 등도 많고 가볍게 접근할 수 있는 작품들도 많습니다. 굳이 재미없는 사운드아트 작품, 어려운 공연을 보고 사운드아트는 어렵다라고 생각할 필요는 없습니다.

 Aliceon. 최수환 작가님의 대표적인 작품(작업)대해서 간단히 소개 부탁 드립니다.

: 클럽 드럭에서 지냈던 옐로우키친 시절이 저한테는 굉장히 중요했습니다. 95~96년도 사이에, 그 때의 기록은 거의 남아있지 않지만, 음악도 많이 제작했었는데, 녹음되지 않고 하루에 한두곡씩 작곡하고 연주하고 폐기되버린 것들도 많거든요. 그 당시에 클럽을 방문했던 몇 명 안 되는 분들이 그때의 음악을 기억하고 있을지도 모르겠습니다. 음반으로 발표한 것 중에는 2002년도에 발표했던 <Random Elements ’60>이라는 앨범을 대표 작품으로 생각합니다. 그 이후에 밴드가 해체되었지만 개인적으로 음반 작업들 중에서는 <Random Elements ‘60>이 가장 애착이 갑니다.

 

 
                                               
Random Elements '60. Yellow Kitchen. 2002.

 

그 이후에는 LG전자에서 일하면서 UI 분야 중 사운드 관련 업무를 맡았습니다. <프라다폰>, <샤인폰> 같은 제품의 수출용 모델 사운드 콘텐츠 기획 및 사운드 디자인을 주로 담당했습니다. 그리고 2009년부터 TiNT 시리즈라는 오디오 비주얼 설치 작업을 진행하고 있습니다. TiNT 시리즈는 장소 특정적(site-specific) 오디오 비주얼 작품인데 현재까지 <엘리베이터를 위한 TiNT(TiNT for Elevators)> <계단을 위한 TiNT(TiNT for Stairs)> 두 개의 작품이 있습니다. <엘리베이터를 위한 TiNT>는 원래 엘리베이터 안에 설치를 목표로 진행했었던 작품인데요, 작년 INDAF에서 설치가 되었던 작품이고 <계단을 위한 TiNT>는 금천예술공장 개관식 때 실제 계단을 악기처럼 연주할 수 있도록 고안하여 설치한 작품입니다.

그리고 작년 문지문화원에서 기획했던 <Text@Media>전 중에 이세옥 영상작가와 김중혁 소설가와 함께한 <자동기계들의 밤(A Night of Automata)> 퍼포먼스와 올해 7월에 진행했던 LIG아트홀 단독공연 <Sonic carousel>과 같은 인터미디어 공연이 있습니다.

 

Alicoen. 말씀해주신 작업 중 틴트 시리즈의 하나였던 <엘리베이터를 위한 틴트> 에서 실제 엘리베이터에서 어떤 식으로 작업이 구현되었는지 궁금합니다.

: 처음 구상한 것은 엘리베이터에서 기능적으로 동작할 수 있도록 하는 것이었습니다. 엘리베이터의 위치에 대한 정보를 소리를 이용하여 음악적으로 알려주고, 엘리베이터라는 밀폐된 공간에서 느낄 수 있는 청각적 불편함을 완화시켜 주는 것이 목적이었습니다. 하지만 아직 실제 엘리베이터에서는 구현해 보지 못했습니다. 음악과 영상 모두 생성 예술(generative art)의 관점을 따르는 것인데 영상의 경우 기능적인 측면보다 장식적인 요소로 사용이 되었습니다.

 

엘리베이터를 위한 TiNT. 최수환. 2009.

 

Aliceon. <자동기계들의 밤>의 퍼포먼스 경우에 이세옥 영상작가와 김중혁 소설가와 함께 작업을 진행하셨는데요, 협업이 어떤 식으로 보여지게 되었는지 궁금합니다.

: 이 퍼포먼스는 언어를 주제로 한 공연이었습니다. 이세옥 작가가 기획, 연출, 영상을 담당했었고 저는 시스템 개발, 사운드 디자인 및 퍼포머로, 김중혁 작가는 텍스트 구성 및 퍼포머로 참여했습니다. 이 공연은 언어에 대한 몇 가지 생각들을 <질문들>, <인토네이션(intonation)>, <문법에 대하여>, <대화들>이라는 챕터로 구성한 것입니다. 형식적으로는 건물 외벽이나 공연장 내부의 스크린에 이세옥, 김중혁 두 작가의 텍스트를 모션 타이포그래피 형태로 프로젝션하기도 하고, 싱글채널 비디오 및 실시간으로 재구성되는 영상을 상영하고, 실시간 사운드 프로그래밍에 의한 음악 연주도 있습니다. 각 챕터는 언어에 대한 세부 주제들을 다룬 것인데, 예를 들면 <문법에 대하여>라는 챕터는 자연어와 기계어의 문법이 가지는 유사성을 컨셉으로 하고 있습니다. 이 챕터에서 저는 SuperCollider라는 프로그래밍 언어를 사용한 실시간 사운드 퍼포먼스를 통해 소설가에게 기계어를 가르치는 것으로 이야기를 진행합니다.

 


자동기계들의 밤. 최수환, 이세옥, 김중혁. 2009.

 

Aliceon. 최수환 작가님의 연주에는 사운드 연주 이외에도 빠지지 않는 것은 바로 영상입니다. 사운드와 영상의 관계에 대해서 말씀해 주신다면요?

: <Sonic Carousel>에서는 사운드, 영상, 텍스트라는 서로 성격이 다른 매체들이 동등하게 대화를 나누며 이야기를 진행시킵니다. 또한 사운드, 영상, 텍스트로 만들어진 각각의 오브젝트는 기억 속의 사건 혹은 인물을 대변하기도 합니다. 이 오브젝트들은 작가의 생각, 기억, 경험을 나타내며, 또한 제가 영향을 받은 다른 작가들의 생각을 반영하기도 합니다. 제 공연 속에서 사운드, 영상, 텍스트로 만들어진 오브젝트들은 독립적이고 대등한 관계입니다.

TiNT 시리즈와 같은 작품이나 석사 논문과 같은 연구들은 디지털 영역의 사운드와 영상의 관계에 대한 관심을 반영하고 있습니다. 디지털에서는 사운드와 영상이 모두 0 1의 숫자로 표현되니까 현실에서는 전혀 다른 형태를 지닌 사운드와 영상도 디지털의 세계에서는 쉽게 서로의 의미를 전달, 변환시킬 수 있다고 생각했습니다. 하지만 라는 디지털 세계의 물질에만 집중했기 때문에 중요한 의미들을 놓치고 있었다는 생각을 요즘 많이 합니다. 이세옥 작가, 김중혁 작가와 같이 네러티브를 다루는 작가들과 협업하면서 제 작업에서 매체 간의 관계, 형식과 의미의 관계에 대한 진지한 고민들을 다시 해보고 있습니다.

 

Aliceon. ‘문지문화원 사이에서 사운드 아트와 관련된 강의를 몇 년 동안 꾸준히 해오고 계신데요, 어떤 수업을 주로 하고 계신지 소개 부탁 드립니다.

: 문지문화원에서는 2007년 개설된 미디어아트 첫 수업부터 지금까지 사운드를 중심으로 강의를 하고 있습니다. 처음에는 테크놀로지가 주 관심사였기 때문에 SuperCollider, Max, Processing 등 미디어아트와 관련된 다양한 프로그래밍 툴을 가르치는 것으로 시작하였습니다. 강의를 계속 하면서 미디어아트 교육에서 발생하는 여러 가지 이슈들에 대해 고민을 하게 되었고, 최근에는 사운드에 대해 좀 더 쉬우면서 다양하게 접근할 수 있는 방법이 무엇일까하는 생각으로 접근하고 있습니다. 여러 형식의 사운드, 음악을 같이 만들어 보기도 하고, 20세기 초 미래주의, 다다이즘부터 전자음악의 역사가 어떤 식으로 형성되었는지 그 역사를 살펴보기도 하고, 컴퓨터로 사운드를 다룰 때 필요한 기본 기술들에 대해 실습하기도 합니다.

 

Aliceon. 이번 7 LIG아트홀에서 진행된 사운드 디자이너공연을 하셨습니다. 공연에 대한 전체적인 느낌은 어떠셨는지요?

: 공연을 구상하면서 소리를 중심으로 진행되는 한편의 실험영화와 같은 분위기를 만들고 싶었는데 영상, 사운드, 텍스트가 잘 구성되어 성공적으로 연출되었다고 생각합니다. 이것은 최근 2년 간 이세옥작가와의 협업에서 진행해왔던 사운드와 영상과 텍스트 등의 관계에 대한 실험에 기반을 두고 있습니다.

몇몇 친구들에게 공연에 대한 피드백을 받았는데 제가 의도했던 것처럼 관객에게 잘 전달된 것 같아 뿌듯함을 느낍니다. 그리고 LIG아트홀에서 공연 기획 단계부터 적극적으로 지원을 해주신 덕분에 더욱 더 잘 진행된 것 같습니다.

 

Aliceon. 공연인  "sonic carousel” 에 대한 주제에 대해서 궁금합니다.

:
공연은 <소리 회전목마(Sonic Carousel)>라는 제목처럼 시간 속에 기록된 생각, 경험, 기억들에 대한 이야기입니다. 이 이야기는 제 자신의 기억들의 재구성이기도 하고, 관객의 시간을 재구성하도록 해주는 장치이기도 합니다. 회전목마 위에서 스쳐 지나가는 주변 풍경들을 바라보듯이, 다양한 소리의 파편, 소리 풍경들을 통해서 관객들이 자신의 기록 속의 무언가를 생각하게 하거나 어떤 이야기를 연상하게 하고 싶었습니다.


 Sonic Carousel. 최수환, 이세옥. 2010.

 

Aliceon. 공연 중간부분에 영상의 반 정도는 작가님의 실시간으로 연주하는 영상이 나오고 다른 반은 텍스트들이 나오는 부분이 있습니다. 이 부분에 대해서 설명 부탁 드립니다.   

: 이 부분은 <자동기계들의 밤>에서 김중혁 작가와 함께 했던 퍼포먼스와 같은 맥락에서 볼 수 있을 것 같은데요, 이번에는 대화의 대상이 이세옥 작가의 <p..armacon>이라는 영상작품입니다. 제가 실시간 프로그래밍 코딩을 하는 화면과 <p..armacon> 속에서 등장하는 어린 아이의 받아쓰기 장면은 매우 여러 층위의 의미를 형성하며 조응합니다.

Aliceon. 공연 연주 중에 권병준, 류한길 작가 분이 함께 연주하는 부분이 있었습니다. 최수환 작가 공연 이외에 권병준, 류한길 작가 공연에서도 함께 연주하셨는데요. 어떤 계기로 자신의 공연 안에 다른 작가들과의 연주를 넣게 되었는지, 그리고 자신의 공연에서의 공연 연주가 주는 의미는 어떤 것들이 있을까요?

: 세 작가가 함께 연주하는 부분은 LIG아트홀에서 시간이라는 주제로 함께 연주를 해보면 좋겠다고 제안을 한 것이고, 그래서 각 공연의 메인 작가가 전체 틀을 구성하면 나머지 두 작가가 즉흥연주의 형태로 참여하였습니다.


Aliceon.
이번 사운드 디자이너공연을 권병준, 류한길 작가와 같이 하셨는데요. 다른 두 분의 공연을 간단하게 평을 해주신다면요?

: 세 공연이 다 재미있고 개성이 있었던 것 같은데 각자 최근 자신의 정체성을 잘 보여줬다고 생각합니다. 권병준 작가는 배우로서 움직임이나 연출도 좋았고, 실시간 공연에서 다루기 힘든 센서들도 굉장히 효과적으로 사용하였습니다. 소리 변화도 다양해서 잘 만들어진 일인극을 보는 듯한 즐거움을 주었습니다. 류한길 작가의 경우 기계적으로 소리가 발생하는 장치를 무대 위에 분산 배치하여 무대라는 공간이 가지고 있는 공간의 의미를 잘 활용한 듯한 느낌입니다. 백현진 작가의 무대 연출도 공연의 완성도를 높이는데 큰 역할을 한 것 같구요.

 Aliceon. 마지막으로 앞으로 계획에 대해서 말씀 부탁 드립니다.

: 기술적인 측면을 강조하기 보다는 탄탄한 네러티브나 의미를 가지는 인터미디어 퍼포먼스 실험을 몇 번 더 해보고 싶습니다. 그리고 사운드 작업은 예전의 작업 방식으로 돌아가서 스스로의 감정에 충실한 작업들을 하려고 합니다. 최근 몇 년 동안 음악 테크놀로지를 공부하면서 사운드의 기술적인 측면에만 집착하였는데, 요즘 스스로에 대해 반성의 시간을 가지면서 사운드 작업을 할 때 무엇이 정말 좋은 것인가에 대해 다시 생각해 보고 있습니다.

음악 작업과 함께 웹, 모바일 환경의 커뮤니케이션 디자인에 대한 공부도 하고 있습니다. 최근 비스킷클라우드(BiscuitCloud)라는 웹/모바일 개발 회사를 시작하였는데, 문지문화원 사이에서 기획한 웹진 Sound@Media에서 SeoulSoundMap, YOU.MIX.POEM과 같은 웹 어플리케이션을 개발, 발표하였습니다. 사운드와 웹을 결합한 이런 프로젝트들을 몇가지 더 구상 중에 있습니다.

 

Seoul Sound Map. BiscuitCloud. 2010.

http://som.saii.or.kr/
http://biscuitcloud.com/

반응형
반응형

이 프로그램은 CD의 정보를 담을 수 있는 프로그램이다.

우선
두개의 팩키지로 클래스를 나누어 만들었다.

 첫째 오디오 씨디
 package
{
 public class AudioCDModel
 {
  public var num:String;//고유번호
  public var title:String;//제목
  public var artist:String;//가수
  public var releasedate:Date;//출시일자
  public var track:Array;//CD트랙
 }
}
 둘째 트랙 정보
package
{
 public class MusicModel
 {
  public var m_music:String;//음악제목
  public var m_time:int;//시간
  
  public function MusicModel(param_music:String,param_time:int)
  {
   m_music = param_music;
   m_time = param_time;  
  }
 

 }
}


그리고 예전 자바 프로그래밍 연습하듯
클래스와 연동하여 플랙스 액션스크립트에서 작동하게 하였다.

 <mx:Script>
 <![CDATA[
  //데이터 모델
  public var myCDs:Array= new Array();
  
  //초기 데이터 설정
  private function initMyCDs(event:Event):void
  {
   /*  CD1  */
   var myCD1:AudioCDModel = new AudioCDModel();
   myCD1.num = "B000JJ4GW0";
   myCD1.title ="U218 Singles";
   myCD1.artist = "U2"; // 가수
   //myCD1.releasedate = "";
   
    /* CD1->트랙 */
    var myTrack1:Array = new Array();
    //var myTrack1:AudioModel = new AudioModel();
    myTrack1.push( new MusicModel("Beautiful DAYs",270));
    myTrack1.push(new MusicModel("I Still Haven't Found What I'm Looking For",210));
    myTrack1.push(new MusicModel("Pride (In the Name of Love)", 178));
    myTrack1.push(new MusicModel("With or Without You", 280));
    
    myCD1.track = myTrack1;
   //내 씨디에 객체 추가
   myCDs.push(myCD1);
   /*  CD2  */
   var myCD2:AudioCDModel = new AudioCDModel();
   myCD2.num = "B000KCHZK6";
   myCD2.title ="Not Too Late";
   myCD2.artist = "U3"; // 가수
   myCD2.releasedate = new Date(2007, 1,30);
    /* CD2->트랙 */
    var myTrack2:Array = new Array();
    //var myTrack1:AudioModel = new AudioModel();
    myTrack2.push(new MusicModel("Wish I Could", 258));
    myTrack2.push(new MusicModel("Sinkin' Soon", 278));
    myTrack2.push(new MusicModel("The Sun Doesn't Like You", 179));
    
    myCD2.track=myTrack2;
    
   //내 씨디에 객체 추가
   myCDs.push(myCD2);
  }
  private function Result(event:Event):void
  {
   var strResult:String;
   

   for each(var objCd:AudioCDModel in myCDs)
   {
    strResult += "Artist: " + objCd.artist+ "\n";
    strResult += "Title:" +objCd.title+ "\n";
    
    if(objCd.releasedate != null)
    strResult += "Release Date:" +objCd.releasedate+ "\n";

    for each (var objMusic:MusicModel in objCd.track)
    {
     strResult += objMusic.m_music + " (Time: " + objMusic.m_time+"\n";
    }    
    
    strResult += "=====================================\n";
   }
   txtShow.text = strResult;

   
  }
  
 ]]>
</mx:Script>

 


문제는 처음에
널값이 들어간다는 것이다...
왜 그러지..흠..ㅡ.ㅡ

반응형
반응형
간단한 덧셈 계산기로 함수 연습

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
 <![CDATA[
 private function func(nVal1:int, nVal2:int):int
 {
  return nVal1 + nVal2;
 }
  
  private function Clicks():void
  {
   var result:int;
   
   result = func(int(txtVal1.text),int(txtVal2.text));
   txtRlt.text = String(result);
   txtRlt2.text = String(result);

  }
 ]]>
 
</mx:Script>

 <mx:Button x="501" y="44" label="결과값" id="btnResult" click="Clicks();"/>
 <mx:TextInput x="44" y="44" id="txtVal1"/>
 <mx:Text x="212" y="46" text="+"/>
 <mx:TextInput x="250" y="44" id="txtVal2"/>
 <mx:Text x="425" y="74" text="Text" width="73" height="69" fontSize="23" id="txtRlt"/>
 <mx:TextInput x="425" y="44" width="68" id="txtRlt2"/>
 
</mx:Application>

특이한것은

배열 (Array)에서 = 의 뜻은 Call by Reference의 의미였다는 것!!
  public function arrayTest(evt:Event):void
  {
   var myArray:Array =[1,"two",true,3.14];
   var my2:Array = myArray;
   
   my2[0]=100;
   
   for(var i:int =0; i < myArray.length; i++)
  {
    trace(myArray[i]);
   }
}
->실행 결과로 
0
two
true
3.14

1이 아닌 0이 나왔다.

연관배열
- 액션 스크립트에서는 정수 값으로 접근하는 배열 객체 외에 키와 속성을 하나의 쌍으로 표현하는 연관배열을 지원함,.
연관객체는 액션 스크립트 클래스의 최상위 객체인 Object를 통해 다음과 같이 생성한다.
   var obj:Object = new Object();
   obj.aKey ="a value";
   obj.bKey ="b value";
   
   trace(obj["aKey"]);
   trace(obj["bKey"]);
  }
 
 연관배열의 for in문

연관배열은 정수 인덱스 값으로 접근 불가
(그러므로 for문 사용불가)
 연관배열의 for each 문
 for(var key:String in obj)
{
trace(key+ " " +obj[key]);
}
 for each (var val : String in obj)
{
trace(val);
}

두개의 반복문의 차이점은

var key값에 값을 저장해서 보여주냐,  아니면 저장없이 보여주냐의 차이

 날짜와 시간 다루기
 var current:Date = new Date();

trace(current);

//이러면 Date 인스턴스 생성, 현재 시간으로 초기화 된다규!

var birthday:Date = new Date(1984,7,20);

trace(birthday);


주의점은 밀리세컨드단위까지 표시됨!!
(이말은 즉슨 밀리세컨드까지 생성자에 입력가능하단 이야기^^)



 문자열다루기  - indexOf()  ,  lastIndexOf() 
[문자열 내에서 특정문자를 검색할때 사용]
 var msg:String = "A little boy was born in Korea";
 //"boy" 문자열을 왼쪽->오른쪽으로 검색
var index:int = msg.indexOf("boy");
trace(indexOf method result: " +index);
 //"boy"문자열을 오른쪽->왼쪽으로 곰색
index = msg.lastIndexOf("boy");
trace("lastIndexOf method result: " + index);

그밖의 지정한 인덱스의 문자열을 추출할땐
substring(), substr() 또는 slice()메소드 사용

substring(startIndex, endIndex)

 문자열 자르기 split(delimiter, limit)
var imgFile:String = "mypic.jpg";

var splittedNames:Array = imgFile.split(".");
trace("File name: " splittedNames[0]);
trace("Extension name: " splittedNames[1]); 

 파일 확장자와 파일명 을 자를때 유용하겠지요?^^


참고사항
 internal
(default)
 동일한 패키지 내에서 참조할수 있다. 명시적으로 선언하지 않으면 internal 접근제한자 속성을 가짐
 private 클래스 내에서만 참조가능 
 protected 클래스 내와 상속받은 클래스 내에서만 참조가능 
 public 어느 위치에도 참조가능 





반응형
반응형
다음은 MaxLink에 대한 설명

1. 다운로드 받은 후 요래 작업을 해주어야 함

:: MaxLink 0.34 installation instructions for Windows XP ::

:: For Processing ::

   Drag the "Library-MaxLink" folder into your Processing examples folder
      (C:\Program Files\processing-xxxx\examples\).
       
   Drag the "maxlink" folder into your Processing libraries folder
      (C:\Program Files\processing-xxxx\libraries\).


:: For Max/MSP 4.5+ ::

   Drag the "jk" folder into the C:\Program Files\Common Files\Cycling '74\java\classes folder.
       
   Drag the "p5-sketches" folder into the C:\Program Files\Common Files\Cycling '74\ folder.   
               
   Add the line

      max.dynamic.jar.dir "C:\Program Files\Common Files\Cycling '74\p5-sketches"

      to your max.java.config.txt file (in C:\Program Files\Common Files\Cycling '74\java\).

max.dynamic.jar.dir "/Library/Application Support/Cycling '74/p5-sketches"

->이렇게 해줌됨!!


Restart both apps. 

If you have a firewall running, enable network traffic on port 7474.

Check out the Processing examples from File:Sketchbook:Examples:Library-MaxLink.  Corresponding Max patches can be found in the "example max patches" folder.

It is no longer necessary to copy files into each sketch's code folder -- just add the library from the Processing application from Sketch:Import Library:maxlink.


More info: http://jklabs.net/maxlink/

2. 테스트



그림을 보면
mxj jk link color_sketch 3 0   ->max/map부분

MaxLink link = new MaxLink(this,"color_sktch"); ->processing 부분

느낌오지~예?
다 주는데로 퍼먹는것보다 생각한번 해보는것도 좋지예~?

반응형
반응형


초두의 관심사였던 Vst연동!!!!!

의외로 쉬웠당.
그림은 MAX/MSP와 내가 좋아하는 EP 연결한 모습


핵심은

vst~패쳐

이곳에 plug Msg박스를 연동해주면 되는거 였음.


이곳에서 몇가지만 들여다 보자

The vst~ object loads a real-time VST plug-in and uses its audio processing in MSP. Some plug-ins have their own editing window, which is visible when you double-click on the object. Otherwise, double-clicking on the object displays a default parameter editing window. The number of signal inputs and outputs default to 2, but the number required by the plug-in may be less than that. If you want to specify a larger number of inputs and outputs, you can supply them as optional arguments

-MIDIEVENT-
note: the midievent message produces an error until the audio is turned on for the first time


아웃렛을 한번 살펴보죠




이거는 인렛


뭐를 이렇게 많이 인풋할수있는지...ㅡ.ㅡㅋ

반응형
반응형
Processing 라이브러리

Tween
Description
This class creates a basic tween, which automatically tracks a number from 0 to 1 over time. A Tweened number can be used within Processing to control an animation between two states. A Tween is given a time duration in seconds or frames, and optionally an easing function.
Example
import megamu.shapetween.*;

Tween ani;
void setup(){
  ani = new Tween(this, 2, Tween.SECONDS, Shaper.COSINE);
}

void draw(){
  background(255);
  ellipse(ani.time()*width, ani.position()*height, 4, 4);
}
Constructor
중뷁정의 보세염~!
Tween( parent, duration )
Tween( parent, duration, durationType )
Tween( parent, duration, durationType, easing )
Parameters
parent
PApplet: typically use "this"
duration
float: tween duration in seconds unless you've set durationType to FRAMES
durationType
boolean: Tween.SECONDS or Tween.FRAMES (smoother)
easing
Shaper function used for animation easing. See setEasing() for details.
Methods
time()
Returns the current time
position()
Returns the current shaped position
isTweening()
Returns true if the tween is playing
start()
Begins a tween from 0
end()
Forces the end of the tween, setting time to 1
pause()
Haults playing
resume()
Resumes playing
reverse()
Causes the tween to reverse direction
seek()
Seeks to a specific time
setDuration()
Sets the duration of this tween
setEasing()
Sets the current easing shape function
setEasingMode()
Sets the current easing mode, such as ease in or ease out
noEasing()
Removes any easing shape function
setPlayMode()
Sets the play mode
repeat()
Causes the tween to repeat playing after it ends
noRepeat()
Turns off repeating for a tween
getEasing()
Returns the current easing shape function
playCount()
Returns the number of plays since start if set to repeat
speed()
Returns the relative speed of this Tween
force()
Returns the relative force of this Tween
tick()
Advances the tween one step, advanced use
Public Variables
timeScale
Modifys the speed at which all tweens move
Related
Shaper

반응형
반응형

공부한거 까먹을까봐 내가 그냥 이해하기 쉽게만 정리해놓았음



import megamu.shapetween.*;
import oscP5.*;
import netP5.*;
import processing.opengl.*;

import foetus.*;
import processing.core.*;
import processing.core.PApplet.RegisteredMethods;

import java.util.*;
import javax.media.opengl.*;
import javax.media.opengl.glu.*;

// Messages:
// "/Gradient/TopColor" iii
// "/Gradient/BottomColor" iii

public Foetus f;

FoetusParameter m_TopR;
FoetusParameter m_TopG;
FoetusParameter m_TopB;
FoetusParameter m_BotR;
FoetusParameter m_BotG;
FoetusParameter m_BotB;
 //파라미터 형식   (파라미터, value, 주소, 태그)
void setup()
{
  // When run as a synth, setup() is never called!->신스돌때 셋업 함수 절대 호출안되염!
  // put the necessary initialization code in a method named initializeFoetus().->그니깐 초기화 코드 가능하면 이니셜라이즈풰투스에 하셈
  // The necessary Processing initialization calls are called by Mother, and so should be left out from
  // initializeFoetus(). ->프로세싱 초기화는 머더에 의해 불려진뎅.
  // Finally, for the synth to work as a processing sketch within the PDE, call initializeFoetus() from within
  // setup().
->신스가 일하게 하기위해선 이니셜라이즈페투스를 셋업서 포함하여 호출해야함

  size(400, 300, OPENGL);
  frameRate(24);

  initializeFoetus();
//->바로 여기서!
}

void initializeFoetus()
{
  noStroke();

  // Instantiate foetus object here
  f = new Foetus(this);
//이걸 전화기라고 생각하련다

  // Register messages that synth responds to (see OSC documentation)
  // This is here done automatically by the FoetusParameter constructors.

  m_TopR = new FoetusParameter(f, 1.0, "/TopRed",  "f");
  m_TopG = new FoetusParameter(f, 0, "/TopGreen",  "f");
  m_TopB = new FoetusParameter(f, 0, "/TopBlue",        "f");
  m_BotR = new FoetusParameter(f, 0, "/BotRed",  "f");
  m_BotG = new FoetusParameter(f, 0, "/BotGreen",  "f");
  m_BotB = new FoetusParameter(f, 0, "/BotBlue",  "f");
//각각의 알쥐비를 가져다줄 전화기들
}

void draw()
{
  pushMatrix();
  
  beginShape(QUADS);
   
  fill(m_TopR.getValue()*255, m_TopG.getValue()*255, m_TopB.getValue()*255);
//각각의 값을 가져와 *255를 해주면 색깔로 표현이 되겠지여~
  vertex(0, 0);
  vertex(width - 1, 0);
  
  fill(m_BotR.getValue()*255, m_BotG.getValue()*255, m_BotB.getValue()*255);
  vertex(width - 1, height - 1);
//원래 가로세로 길이에서 -1만큼 작게 네모를 그리넹~>
  vertex(0, height - 1);

  endShape();
   
  popMatrix();
}

/**
 * This method is called when an OSC message is received by the synth.
 */
//리씨브 받는곳
void oscEvent(OscMessage theOscMessage)
{
//주소확인
  if (theOscMessage.checkAddrPattern("/TopRed") == true)
  {
    /* check if the typetag is the right one. */
//태그가 이게 맞으면 일을하셈
    if (theOscMessage.checkTypetag("f"))
    {
      m_TopR.setValue(theOscMessage.get(0).floatValue());
      return;
    }
  }
  else if (theOscMessage.checkAddrPattern("/TopGreen") == true)
  {
    /* check if the typetag is the right one. */
    if (theOscMessage.checkTypetag("f"))
    {
      m_TopG.setValue(theOscMessage.get(0).floatValue());
      return;
    }
  }
  else if (theOscMessage.checkAddrPattern("/TopBlue") == true)
  {
    /* check if the typetag is the right one. */
    if (theOscMessage.checkTypetag("f"))
    {
      m_TopB.setValue(theOscMessage.get(0).floatValue());
      return;
    }
  }
  else if (theOscMessage.checkAddrPattern("/BotRed") == true)
  {
    /* check if the typetag is the right one. */
    if (theOscMessage.checkTypetag("f"))
    {
      m_BotR.setValue(theOscMessage.get(0).floatValue());
      return;
    }
  }
  else if (theOscMessage.checkAddrPattern("/BotGreen") == true)
  {
    /* check if the typetag is the right one. */
    if (theOscMessage.checkTypetag("f"))
    {
      m_BotG.setValue(theOscMessage.get(0).floatValue());
      return;
    }
  }
  else if (theOscMessage.checkAddrPattern("/BotBlue") == true)
  {
    /* check if the typetag is the right one. */
    if (theOscMessage.checkTypetag("f"))
    {
      m_BotB.setValue(theOscMessage.get(0).floatValue());
      return;
    }
  }
}

반응형

+ Recent posts