기본 콘텐츠로 건너뛰기

intelliJ에서 actionscript3 사용시 외부 파일 문제.

source code 안에서 [Embed]를 사용하는 방법도 있지만 리소스를 실시간으로 로딩하여 초기 기동시간을 앞당기고 싶어서 Loader를 사용하여 swf를 실시간 로딩하였으나 데스크탑에뮬/iOS/Android가 각각 다르게 작동.     private var stageLoader:Loader; ..     stageLoader = new Loader();     stageLoader.load(new URLRequest("NoiseInfoSession01.swf")); 이런식으로 로드를 하려고 했더니 Error #2044: Unhandled IOErrorEvent:. text=Error #2035: URL Not Found. 오류 나신다. Project structure 에서 source를 추가했다. 기본은 src 폴더만 잡혀있는데 오른쪽 tree에서 loader에서 부를 swf가 있는 경로인 flash를 찍고 상단에 그 상단에 Sources 라고 써있는 부분을 클릭하면 Source Folders에 추가된다. 하지만 이게 전부가 아니다. 이 상태로는 장치에서 돌렸을때 역시 누락이 발생해서 URL오류가 난다. URL 경로가 잘못되었나 싶어서 봤더니 아니다. 아예 패키징할때 빠지는 현상이다. Android 와 iOS 탭 각각에 똑같이 추가할 파일들을 Path to file or folder 목록에 넣어주자. iPhone 5 대응용 Default-568h@2x.png 스플래시 파일도 동일한 요령으로 추가하면 된다. 보통 gitignore 할때 *.iml을 빼주곤 하는데 as3를 할땐 그래선 안된다. 위의 설정이 iml 파일안에 들어가므로 반드시 git 목록에 추가해놓자. 요약 1. 외부 파일은 Modules에서 Android/iOS 각각 추가 2. 데스크탑 에뮬을 위해 해당 폴더를 Sources에도 추가 3. i...

Renoise로 바닥부터 Sound Design (No Sample/No VST)

Renoise는 Ableton Live Standard 버전처럼 기본적으로 아무 악기가 없고 달랑 샘플러 하나가 전부인데 그마나 다행인건 멀티레이어라고나 할까. 샘플러만 있으면 사실 다 되지. 아날로그 웨이브 테이블을 최소단위로 넣어서 루프를 돌리면  되니까. 근데 그러면 무조건 폴리포니가 되어서 구조적으로 모노 신스는 구현이 불가능하다. 그것도 방법이 없는 건 아닌데 Bend 라든가 Glide 등등으로 하면 되니까. 그래도 모노 신스가 있었으면 좋겠는데 방법이 있더라. http://forum.renoise.com/index.php?/topic/27225-renoise-native-monophonic-synthesiser/  이 글을 보고 약간 충격을 받음. 이펙터만 있으면 역시 소리를 만들 수 있구나! 바로 시도에 들어감. 처음은 이런 상태. 나는 누군가. 여긴 어딘가. 키보드를 눌러도 아무 소리가 안난다. ESC 눌러서 첫번째 트랙 맨위에 Z(C-4 00) 하나 눌러 놓고 일단 플레이. 일단 이렇게 해놓고 소리가 날 수 있게 한단 말이지. 그럼 먼저 제네레이터. 일단 1byte짜리라도 뭐가 있어야 시작을 할 수 있으니 빈 샘플을 만들자. 1byte 짜리 빈 샘플을 만든다. 당연히 소리가 안난다. DC Offset을 만들어 00 인 상태를 바꿔보자. 퍽하고 클릭음이 생기면서 Master Scope 에 변화가 생겼다. Meter도 생겼다. 그런데 이건 소리라고 할 수 없다. RingMod(Ring Modulator)를 추가해보자. 오오 소리가 난다. 0인 경우엔 Ring Modulator를 적용해도 0으로 소용이 없지만 DC Offset으로 값을 변경한 후부터 Oscillator에 따라 파형이 생긴다. 기본적으로 440Hz의 음을 들을 수 있다. 무에서 유를 만들기는 했는데 Pitch도 Volume도 없다. 일단 Pitch부터 해보자. Key Tracker로 Dest...

Renoise 공부 - Recording Vocal / Interpolation / Multiple instance / Console

Renoise 는 기본이 Sample 를 Track에 찍는 것. 기준은 C4 일단 찍어놓고 LOOP을 돌리면서 shift+option+R 상태로 Sample Recorder를 기동 play 시 시작점을 지나지 않으면 소리가 나지 않는데 중간부터 재생해도 듣고 싶으면 Instrument Settings 에서 Auto seek을 활성화 해준다. Renoise AutoSeek 영상 참조. 연속된 값을 계속 채워 놓고 싶을때 처음과 끝만 써주고 cmd + I 로 밀어 넣는다. 복수개의 renoise 를 열고 싶을 때 - package 안쪽에 있는 renoise 를 직접 실행 Scripting Terminal & Editor 활성화 - Help / Show the Preferences Folder - config.xml ShowScriptingDevelopmentTools 항목 true. 저장 전 renoise를 닫을 것. - 재시작 후 tool 메뉴에서 확인 Multiple instance - /Applications/Renoise_Reg_Intel64.app/Contents/MacOS/Renoise - 혹은 open -n /Applications/Renoise_Reg_Intel64.app/ 전자는 log 를 볼 수 있고 후자는 그냥 실행한 것과 동일

Meteor 와 다른 언어/플랫폼과의 통신 수단인 DDP

Meteor 0.6.x 대부터 DDP 라는게 생겼는데 이걸로 Meteor application 과 다른 application 사이에 통신을 할 수 있는 인터페이스가 생겼다. Mobile 에서도 예외는 없는데 가령 websocket으로 직접 meteor 서버랑 붙어서 데이터를 교환하는게 가능. 이게 참 매우매우 강력하면서도 단순한 것이. collection에 subscribe 하는 것과 method 를 호출하는 것만으로 다른 언어에서도 meteor application처럼 쾌적하게 자료 교환을 할 수가 있다 :) DDP Spec. https://github.com/meteor/meteor/blob/master/packages/livedata/DDP.md 언어별 클라이언트 Node.js : https://github.com/alansikora/node-ddpclient Objective-C : https://github.com/alansikora/objective-c_ddp-client Ruby : https://github.com/tmeasday/ruby-ddp-client Java : https://github.com/kutrumbo/java-ddp-client Python : https://github.com/meteor/meteor/tree/master/examples/unfinished/python-ddp-client  (얘는 왜;;;) .NET : https://github.com/sonyarouje/DDPClient.NET

Meteor에서 REST API를 사용하는 방법 #2

server쪽 API를 router package를 사용해 쓰다보면 header 같은 걸 다루거나 할땐 너무 단순하게 만들어서 곤란할 수 있다. 이전에도 다룬 적( http://spectrumdig.blogspot.kr/2012/08/meteor-rest.html )이 있지만 __meteor_bootstrap__ 객체를 통해 접근하면 node.js 식의 접근이 가능하다. Meteor update와 함께 Npm 객체가 생겼으니 이를 이용해 connect 객체를 사용해보자 http://www.slideshare.net/cjoudrey/building-your-first-node-app-with-connect-express 위 슬라이드를 한번 보면 이해에 도움이 될 것이다. WebApp.connectHandlers 가 connect.createServer()라는 걸 기억하면 된다. connect = Npm.require 'connect' server = WebApp.connectHandlers server.use connect.router (app)-> app.get '/info', (req,res)-> res.end "info" app.get '/user/:id', (req,res)-> res.end "user id: #{req.params.id}" 이와 같은 코드를 server 디렉토리에 안에 넣거나 Meteor.isServer일때 실행하도록 하자. 파일 업로드나 쿼리 문자열 처리(ex: ?a=1&b=c)하려면 각각 bodyParser( http://www.senchalabs.org/connect/bodyParser.html ) 와 query( http://www.senchalabs.org/connect/query.html )를 추가하는 것이 좋다. 위의 해당 링크에 보면 소스까지 공개 해놓아서 이해하기 쉬우니 ...

rvictl로 iOS Network packet을 보자.

iOS 5이후 부턴 USB로 장비를 연결하고 rvictl이란 명령으로 네트워크 패킷을 볼 수 있다고 한다. $ rvictl rvictl [-h][-l][-s <udid1> ... <udidN>][-x <udid1> ... <udidN>] Remote Virtual Interface Tool starts and stops a remote packet capture instance for any set of attached mobile devices. It can also provide feedback on any attached devices that are currently relaying packets back to this host. Options: -l, -L List currently active devices -s, -S Start a device or set of devices -x, -X Stop a device or set of devices 내용은 간단. UDID 입력하고 -s 로 시작 -l로 확인 -x로 정지. 한번 해보자 $ rvictl -s <UDID> Starting device <UDID> [SUCCEEDED] 이런 식으로 나오면 성공. USB연결을 꼭 확인하자. 참고로 iPhone Simulator 에서도 UDID만 있으면 작동한다는 이야기가 있음; 어디다 쓸진 모르겠지만;; 확인해보자. $ rvictl -l Current Active Devices: [1]  <UDID> 아까 그 UDID 가 목록에 있으면 성공. ifconfig 로 잘 들어갔나 확인해보자. $ ifconfig -l lo0 gif0 stf0 en0 p2p0 utun0 rvi0 rvi0이 들어갔으면 성공. $ ifconfig rvi0 rvi0: flags=3005<UP,D...

Meteor 0.6.x 변경.

그동안 server-side 에서 fs 같은 객체를 쓰기 위해 @require = __meteor_bootstrap__.require 이렇게 만들어 썼었는데 이번 업데이트로 Npm을 정식지원하면서 require도 같이 변경되었습니다. @require = Npm.require 이렇게 쓰면 됩니다. https://github.com/meteor/meteor/blob/devel/History.md 참조