Alchemy를 이용한 Flash Equalizer 구현

Alchemy를 이용해서 Flash 10에서 사용 가능한 Equalizer를 구현했습니다. Flash에서 자체 Equalizer를 제공하지 않아서 여러가지로 고민했었는데… 일단 동작은 정상적으로 하네요. 처음에 PixelBender를 이용해서 구현을 할려고 했었는데 여러가지로 PixelBender는 오디오 처리하기에는 문제가 있는거 같더군요. 회사에서 C로 구현된 Equalizer소스가 있어서 Alchemy를 이용해서 Flash에서 돌릴수 있게 구현했습니다. Flash 10에서만 동작합니다.

 

위에 플래시가 안보이시면 이 페이지로 가시면 보실수 있습니다.

소스는 공개하기 힘들듯 하지만, 요청이 있다면 C Equalizer소스를 제외한 부분만 공개하겠습니다. Alchemy 개발은 그리 어렵지는 않았는데 문서화가 좀 부족해서 여러가지 자료 참고해서 구현했습니다. 막상 개발하고 나니 인터페이스하는 소스는 얼마 안되네요 :)

사용자 삽입 이미지eq.c 소스는 250줄 정도 되고, 이중 100줄 정도가 Alchemy 인터페이스 소스이지만, 많은 부분 재사용할수 있는 부분입니다. 이걸 컴파일하면 플래시 컴포넌트 파일인 swc 파일이 나옵니다. 용량이 82KB 소스에 비하면 많이 커졌네요. 더욱 놀라운건 마지막 as파일의 크기입니다. 파일 열어보면 거의 바이트 코드가 풀어서 적혀 있습니다.

Equalizer소스가 길지않으니 한번 AS3로 직접 짜보고 비교를 해보는것도 재미있을듯하네요. 그리고 인터페이스 소스가 메모리카피가 있어서 좀 비효율적인데 copy 줄일수 있는지도 고민해봐야할듯합니다.

구현하면서 여러가지 좋은 정보들도 많이 얻었습니다. PixelBender에 대해서도 알게 됐고, 플래시 10에서 오디오 처리의 가능성과 한계를 어느정도 알게되었네요.

음악은 아직 제목이 없는 제 음악입니다.^^ (20080208.mp3) 즐감하세요~

5 thoughts on “Alchemy를 이용한 Flash Equalizer 구현

  1. boksu

    안녕하세요. ^^;;;;
    방명록에도 글을 남겼더랬는데..
    확인을 거의 안하실수도 있을거 같아서요.. 다시 댓글로 남깁니다.
    as 로 mp3 player 를 구현하려고 하는데 이퀄라이져는 구현된 사례가 안찾아지네요… 기본 속성으로 제어도 안되고..
    swc 만이라도 공유 부탁드려도 될까요? 제 이메일 주소는 boksuzone@nate.com 입니다. 가능하시다면 꼭 좀 부탁드리겠습니다.

    Reply
  2. 이민정

    저는 컴퓨터 과학과에 재학중인 이민정이라고 합니다. 학교 수업으로 Equalizer를 구현하려고 하는데 여기저기 찾아봐도 정보가 많이 없어서 아직 구현을 못하고 있습니다ㅜㅜ 혹시 가능하시다면 자료를 조금이나마 공유했으면해서 댓글 남겨봅니당ㅜ 제 메일은 minbumg@gmail.com이고 연락은 이 메일로 부탁드립니다! 감사합니다!

    Reply
    1. mix1009

      메일로 답변 드렸는데, 이메일이 돌아왔네요. 다시 연락처 알려주세요~

      Reply
  3. gM2000s2

    플래시로 이퀄라이저를 구현하고 싶은데 아무리 책을 찾아봐도 인터넷으로
    찾아봐도 없드라고요 ㅠ
    그래서 부탁드리겠습니다.
    만약 가능하시다면,
    chabve@naver.com
    아님
    voplt1327@gmail.com으로 소스파일 보내주시면 너무 감사하겠습니다.
    꼭 부탁드립니다!

    Reply

Leave a Reply to mix1009 Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>