AS3 관련 사운드 라이브러리들 정리합니다.

88 views
Skip to first unread message

Jaeho Lee

unread,
May 20, 2013, 6:25:57 AM5/20/13
to appso...@googlegroups.com
당분간 sticky로 해놓겠습니다.

1. SiON
https://sites.google.com/site/sioncenter/example
SiON이라는 MML (Music Markup Language) 기반 라이브러리인데 아주 좋네요.
http://mmltalks.appspot.com/m/YkLeW MML 아직 죽지 않았군요.
여기에 있는 예제만 폰에 맞춰서 앱으로 내놔도 될 정도의 퀄리티네요

2. SoundTouch AS3
C/C++쪽에서 유명한 SoundTouch의 AS3 포팅입니다.
SoundTouch가 뭐하는 놈이냐해서 봤더니 장난 아니네요.
Audacity, FooBar 2000, Mixxx, Reaper, Cakewalk Sonar4 (;;;;;), FLStudio, PureData, WinAmp 등에 쓰인 고전중 고전이더군요.
Time Stretch와 Pitch Shift 쪽으로 꽉 잡고 있는 듯합니다. Amazing Slowdowner도 이걸 쓴게 아닐까 싶네요.

생각보다 audio 녹음과 mixdown 관련한 라이브러리는 아직 못찾았습니다.
신서사이징이나 오디오 이펙트 쪽으론 오히려 차고 넘치네요.

이쪽에서 봤는데 좀 더 찾아봐야겠습니다.




Jaeho Lee

unread,
May 20, 2013, 12:54:40 PM5/20/13
to appso...@googlegroups.com
http://stackoverflow.com/questions/5453438/mixing-2-sounds-from-bytearray

역시 예상했던 대로 무식하게 a+b 더해서 1/2하는 건 있네요.
정 안되면 저렇게 할려고 했는데 하아;
저 방식은 음질도 음질이지만 음원을 처음부터 끝까지 이벤트 받아서 플레이해야하므로 3분짜리 트랙들이면 믹스다운도 3분 걸립니다.
따라서 기각.

https://code.google.com/p/tonfall/
audioTool 을 만들때 사용한 라이브러리라는데 너무 문서화가 안되있습니다.
소스를 보니 어렵진 않네요. 근데 왜 문서가;;;
관련 링크도 하도 오래되서 다 없어졌습니다.

역시 이것도 최후의 보루인데
이론은 별거없죠.

sound.extract(soundData,Math.floor((sound.length/1000)*44100));

이렇게 추출해서 뺑뺑이 돌려가면서 더한다. 끝
제일 유력한 방법이긴한데
결국 1/n 해서 더하는거죠.
문서화 안된 tonfall을 쓰느냐 
로레벨하게 오디오 추출 & 믹스를 하느냐 둘중 하나네요. 현재까지는

2013년 5월 20일 월요일 오후 7시 25분 57초 UTC+9, Jaeho Lee 님의 말:

Jaeho Lee

unread,
Jul 11, 2013, 3:02:12 AM7/11/13
to appso...@googlegroups.com
ffmpeg 이나 imagemagick 과 유사하게 sox 라는 라이브러리가 있어서

brew sox
해서 설치 후 사용해 보았습니다.

date;sox -m Bass.mp3 Drums.mp3 Guitar.mp3 Keyboard.mp3 Vocal.mp3 mix.aif;date

2013년 7월 11일 목요일 15시 52분 31초 KST
2013년 7월 11일 목요일 15시 52분 35초 KST

AIR에 OSX 기준으로 4초정도 나옵니다.
decoding 의 경우는 상관없지만 인코딩할 경우 mp2,3 는 제한합니다.

설치는 
이쪽을 참조했습니다.

brew install lame 
brew reinstall sox
로 다시 lame mp3 encoding codec을 설치했더니 mp3 encoding이 가능했습니다.

$ date;sox -m Bass.mp3 Drums.mp3 Guitar.mp3 Keyboard.mp3 Vocal.mp3 -C 12 mix.mp3;date
2013년 7월 11일 목요일 15시 59분 28초 KST
2013년 7월 11일 목요일 15시 59분 37초 KST

mp3 인코딩을 포함해서 9초 정도가 걸렸습니다.
서버사이드에서 돌리면 서버 성능에 비례해서 속도가 나올 것으로 보입니다.


2013년 5월 21일 화요일 오전 1시 54분 40초 UTC+9, Jaeho Lee 님의 말:

Jaeho Lee

unread,
Jul 11, 2013, 3:17:02 AM7/11/13
to appso...@googlegroups.com
mp3 음질이 너무 안좋아서 2-pass 방식으로 인코딩했습니다.

$ date;sox -m Bass.mp3 Drums.mp3 Guitar.mp3 Keyboard.mp3 Vocal.mp3 -C 12 mix.aif; lame mix.aif mix.mp3; date;
2013년 7월 11일 목요일 16시 05분 31초 KST
LAME 3.99.5 64bits (http://lame.sf.net)
Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz
Encoding mix.aif to mix.mp3
Encoding as 44.1 kHz j-stereo MPEG-1 Layer III (11x) 128 kbps qval=3
    Frame          |  CPU time/estim | REAL time/estim | play/CPU |    ETA 
  8878/8878  (100%)|    0:06/    0:06|    0:07/    0:07|   34.176x|    0:00 
-----------------------------------------------------------------------------------------------
   kbps        LR    MS  %     long switch short %
  128.0        0.5  99.5        96.2   2.2   1.6
Writing LAME Tag...done
ReplayGain: +3.5dB
2013년 7월 11일 목요일 16시 05분 43초 KST

12초 정도로 늘었지만 품질은 좋아집니다. 대신 용량도 소폭 증가합니다.

lame -V 5 mix.aif mix.mp3 (3MB)
lame -V 6 mix.aif mix.mp3 (2.7MB)
로 각각 품질 조건을 달리했을때의 결과도 참조.


2013년 7월 11일 목요일 오후 4시 2분 12초 UTC+9, Jaeho Lee 님의 말:
Reply all
Reply to author
Forward
0 new messages