최근 업데이트 페이지 2 댓글 스레드 토글 전환 | 키보드 단축키

  • punkt68 May 23, 2012 8:00 pm 퍼머링크 | 응답  

    모임 장소가 바뀌어서 ‘낙성대 사자킴 작업실’입니다.
    내일 참여인원이 10인 이상일것 같은데, ‘서교예술실험센터’는 좁은데다가 옆방에서 우클레라 강습을 하고 있어서 시끄럽다고 합니다.

    https://soundartlab.wordpress.com/2012/01/10/모임공지-5/
    처음 오시는분은 오시는길 확인 하시고,
    못찾겠으면 전화 주세요. 010-2232-4704

    확인 하신분은 리플을 남겨주세요.
    미확인자에게는 문자를 쏘겠습니다.

     
  • ohnena May 14, 2012 6:22 pm 퍼머링크 | 응답  

    ************* 장소가 정해졌네요 그래서 공지 다시합니다 ***************************

    시간 : 5월 17일 목요일 오후 6시

    장소 : 낙성대 사자킴님 작업실
    -아래주소를 참고하세요!
    (https://soundartlab.wordpress.com/2012/01/10/모임공지-5/)

    일정
    1, SC기초실습반
    2, 물로만든 테레민
    3, 메이크페어 진행되는게 있는지 잠깐 회의
    4, 배정식님 코딩팁 (시간이 남으면)
    5, 정승기님 OOP관련 2탄 예정이었으나 참석이 어려울 것 같다고 하네요

    ###########################################
    기타 발표 접수 받습니다, 그 어떤 것도 좋습니다 (아닌가)
    ###########################################

     
  • mortp May 14, 2012 1:11 am 퍼머링크 | 응답  

    공지가 늦었습니다.

    5/10 목요일 모임 잘 마쳤습니다.
    시간 : 18:00~21:00
    장소 : 신촌 토즈본점
    참가인원:13명

     
  • mortp May 8, 2012 9:23 pm 퍼머링크 | 응답  

    5/10 모임공지입니다.

    시간 : 18:00 ~ 21:00
    장소 : 신촌 토즈본점(13인 예약)
    장소후원 : 구글코리아

    18:00 ~ 19:30 SC기초실습반
    19:30 ~ 21:00 초심자를 대상으로한, OOP(Object Oriented Programming)의 기본과 개념 – 정승기씨

    + 토스트 12인분

     
  • punkt68 May 4, 2012 12:30 am 퍼머링크 | 응답  

    SC 3.5 불만고발 & 해결방법 정리

    cmd_d로 헬프를 열때 새창에서 열기가 안된다.(여러유젠의 헬프를 열어서 비교해 보려고 할때 매우 불편)
    해결방법
    HelpBrowser // 선택후 cmd_J

    HelpBrowser {
    classvar singleton;
    classvar defaultHomeUrl;
    classvar openNewWindows = false; // 이부분을 true로 바꾸고, 저장 -> recompile library(cmd_K)

    plot의 range가 -1.0~ 1.0이 아님. plot 메소드의 디폴트값을 수정하는 방법?
    ArrayedCollection:plot // 모두 선택후 cmd_j
    //아니면 plot창이 떳을때 n을 누른다.
    {SinOsc.ar(1, mul:5)}.plot(1);

    + ArrayedCollection {
    plot { |name, bounds, discrete=false, numChannels, minval, maxval|
    //이부분을 다음과 같이 고친다.
    plot { |name, bounds, discrete=false, numChannels, minval= -1.0, maxval = 1.0|

    Class Browser가 안나온다.
    GUI.qt;// 실행, cocoa에서는 안되고, qt에서만 Class Browser를 열 수 있다.

    find text in document에서 previous, next가 안된다.
    즉, 헬프에서 특정단어를 찾을때 다음찾기, 이전 찾기가 안된다.
    ->해결방법 없음. 개선되기를 기다려 봅시다.

    헬프에서 method의 argument 목록을 그대로 긁어와서 쓰곤 했는데.
    기본값이 들어 있어서 기본값을 지우는게 귀찮다.
    *ar (freq = 440, phase = 0, mul = 1, add = 0)
    3.4에서는 아래의 형태였음.
    *ar (freq, phase, mul, add)
    ->귀찮아도 어쩔 수 없음. ㅋ

    3.4에서는 헬프파일이 .sc라서 일반 문서처럼 다룰 수 있었으나
    3.5에서는 .schelp 파일이라 ‘변경’, ‘주석추가’, ‘프롬프트를 움직여서 문서 일부 선택’등이 안됨.
    *Examples 부분은 이전과 같음.

    총평: SC3.5 짜증나~

     
  • mortp May 3, 2012 11:53 pm 퍼머링크 | 응답  

    오늘 모임 잘 마쳤습니다 시간 18:30~21:00 장소 신촌… 

    오늘 모임 잘 마쳤습니다.
    시간 : 18:30~21:00
    장소 : 신촌 토즈본점
    참가인원:14명

     
  • mortp May 2, 2012 11:26 am 퍼머링크 | 응답  

    5월 3일 목요일, 모임공지입니다.

    시간 : 18:30~21:30(18:00시가 아니라 18:30 입니다. 장소 사정으로 늦추어 졌으니 확인하세요.)

    장소 : 토즈 신촌본점, (신촌전철역 3번출구로 나와 50m직진)
    http://toz.co.kr/booth/JB_Booth/booth_jb_basicinfo.asp?idx=2

    장소후원 : 구글코리아

    모임내용 :

    • 기초실습반
    • 정식형의 코딩팁에 관한 발표
    • 회의
     
  • mortp April 26, 2012 2:47 pm 퍼머링크 | 응답
    태그: , ,   

    백년만의 글쓰기 

    이병무 선생님 특강때의 두서없는 필기를 공유합니다.

    제대로 알고있지 못했던 것 등, 개인적으로 필요했던 부분만 적어두었습니다.

    특강은 개인적으로 너무 좋았구요.

    그러나, 전혀 정리되어 있지 않으니 섣불리 스크롤하지 마세요!

     

    ================================================

    20120421

    <이병무 선생님 특강>

     

    <array와 list의 차이> : 둘 모두 순서가 중요한 collection

    ~ar = Array.new(3);

    ~ar.add(1); //넣을 수 있는 요소의 수에 제한이 있다

     

    ~ls = List.new;

    ~ls.add(1); //List는 원래 요소의 수에 제한이 없다.

     

    *array를 list처럼 쓰는 방법

    ~ar = ~ar.add(1);

     

    처음부터 갯수를 정해놓을 때에는 .newClear; 를 쓰는 것이 좋다.

     

     

    <반복과 관련된 메소드>

    그 중에 .do

    3.do({“hi”.postln}); //postln은 postln의 ‘receiver를 post 창에 줄바꿔 찍어라’는 명령

    3.do{| idx | idx.postln;}; //0, 1, 2까지 찍어주고, 마지막으로 receiver인 3을 찍는다.

     

     

    <반복을 이용한 소리만들기>

    Server.local.boot;

     

    {SinOsc.ar(440, mul: 0.3)}.play(s);

    {SinOsc.ar(440, mul: 0.3)}.play(Server.local);

    10.do{| idx | {SinOsc.ar(400*(idx+1), mul: 0.03)}.play;};

    [0, 1, 4, 7].do{| i, j | i.postln; j.postln;}; // i는 0, 1, 4, 7. j는 0, 1, 2, 3

     

    FreqScope.new(400, 300);

    s.scope;

     

    <Dictionary>: 순서가 없는 collection

     

    d = {“hi dic”.postln}

    a = Dictionary[\a -> d, \b -> 20];

    a.at(\a).value;

    \a가 숫자일 수도 있지만 거대한 펑션일 수도 있다.

     

     

    IdentityDictionary

    : Environment는 IdentityDictionary의 subclass다.

     

    Event

    : Environment의 subclass다. 소리를 내기 위한 속성들을 지니고 있는 일종의 IdentityDictionary.

    (freq: 1000, amp: 0.5).play; //고로 이것도 dictionary의 속성을 물려받았다.

     

     

    <Server 만들기>

     

    a = Server.new(“jongro”, NetAddr(“127.0.0.1”, 10000)) //port number는 아무거나 써도 좋지만 두 가지는 예약되어 있다.

    server port : 57110

    Server.internal.addr.port; //0

    Server.local.addr.port; //local host 는 주소가 있으나, internal 은 주소가 없다. 외부에서 명령을 주어 소리를 만드는 등의 일은 모두 localhost 서버에서 이루어 져야 한다.

    lang port : 57120

    NetAddr.langPort; //57120. 이것은 재부팅시마다 달라질 수 있다.

     

    Other applications sending messages to SuperCollider should distinguish between sending messages to the server or the language. Server messages are documented in the Server Command Reference and should be sent to the server’s port – s.addr.port – which is 57110 by default. Messages sent to the server will not be processed by any OSCresponder in the language.

    Messages from external clients that should be processed by OSCresponders must be sent to the language port, 57120 by default. Use NetAddr.langPort to confirm which port the SuperCollider language is listening on.

     

    외부에서 sc로 오는 메시지는 그것이 server(scsynth)로 가는 것인지, client(sclang)로 가는 것인지 구분되어야 한다. server로 직접 보내지는 메시지는 57110포트를 통해서, internal 이 아닌 localhost 서버로 보내지며, 이는 Server command 형태가 되어야 한다. 반면 client(sclang)으로 보내지는 메시지는 57120포트를 통해서 보내지며 이 둘(scsynth와 sclang)은 메시지를 주고받는 객체로서는 서로 영향받지 않는다.

     

    OSCresponder

    a.makeWindow; //서버 창을 만든다.

     

     

    *internal 서버에서 p를 누르면 노드의 상태를 보여주는 창이 뜬다.(3.5버전에서 추가된 훌륭한 기능)

    s.queryAllNodes; //같은 역할

     

    <Node>

    g = Group(s); //group 만들기

    r = Group(g); //group 안에 group 만들기

    {SinOsc.ar(mul: 0.5)}.play(target: g); //group g에 synth만들기

    {SinOsc.ar(mul: 0.5)}.play(target: r); //group r에 synth만들기

    nodeId로 synth를 제거하려면, s.sendMsg(\n_free, nodeId);

     

    <Bus>

    {In.ar(8, 1)}.play; // feedback!!!

    하드웨어에 연결된 버스(8 + 8) 이후 번호는 private bus라고 한다.

     

    {SinOsc.ar(mul: 0.5)}.play(s, 100);

    s.scope(2, 100); //number of channes, index

    {In.ar(100, 1) * SinOsc.ar(440, mul: 0.5)}.play(addAction: \addToTail);

    시그널은 head 에서 tail로 흐른다. 따라서 소스가 되는것이 위에, 그것을 받는것이 아래에 깔려야 한다.

     

    이 순서를 맞추기 위해서는,

    1) 실행 순서를 조절하거나,

    2) addAction의 속성을 주거나,

    3) head쪽, tail 쪽 그룹을 만들어 두고 소스는 head쪽 그룹에, 받는 쪽은 tail쪽 그룹에 넣어 생성하는 방법

    등이 있다.

     

     

    (크게보아서)<소리를 내는 두 가지 방법>

    1) 오실레이터 이용

    2) 버퍼에 녹음된 소리를 이용

    *오실레이터 역시 버퍼안에 특정 시그널 주기를 넣어두고 재생하는 것

     

    Buffer.freeAll; //존재하는 모든 버퍼를 free시킨다.

    b = Buffer.alloc(s, s.sampleRate * 4, 1);

    b.read(Platform.resourceDir +/+ “sounds/a11wlk01-44_1.aiff”, action:{|buf| {buf.plot}.defer; buf.play});

    b.plot;

     

    BufRateScale – samplerate converting의 역할

     

    <멀티 채널 셋팅>

    {[SinOsc.ar(300, mul: 0.4), SinOsc.ar(1000, mul: 0.2)]}.play;

    {SinOsc.ar([300, 1000], mul: 0.4)}.play;

    배열의 형태로 간단히 멀티 채널의 셋팅을 달리 할 수 있다.

    ({

    var sig;

    sig = PlayBuf.ar(1, b, BufRateScale.kr(b)*[0.5, -1], loop:1);

    LPF.ar(sig, 500);

    }.play;)

     

    <action, completionMsg>

    action은 function형식으로 써도 되지만, completionMsg는 Msg 형태로 주어야 한다.

    *function형태로 적되, .read 를 .readMsg 로 쓰면, function을 msg 타입으로 알아서 바꾸어 적용해 준다.

     

    a = Buffer.alloc(s, s.sampleRate * 2.0, 1, {| buf | buf.read(Platform.resourceDir +/+ “sounds/a11wlk01-44_1.aiff”)}); //안된다. function

    a = Buffer.alloc(s, s.sampleRate * 2.0, 1, {| buf | buf.readMsg(Platform.resourceDir +/+ “sounds/a11wlk01-44_1.aiff”)}); //된다. msg

    a = Buffer.alloc(s, s.sampleRate * 2.0, 1, [\b_read, a.bufnum, Platform.resourceDir +/+ “sounds/a11wlk01-44_1.aiff”]); //된다. msg

    a.free;

    a.plot;

    Buffer.freeAll

     

     

    <루틴>

    기본적으로 stream을 만들어 준다.

    (

    r = Routine{

     

    “first”.postln;

    1.yield;

     

    “second”.postln;

    2.yield;

     

    “third”.postln;

    3.yield;

     

    }

    )

     

    (

    q = Routine{

     

    “1st”.postln;

    1.yield;

     

    “2nd”.postln;

    2.yield;

     

    “3rd”.postln;

    3.yield;

     

    }

    )

     

     

    r.reset;

    r.next;  //Routine은, .next를 받으면 처음 .yield까지만, 다음 .next를 받으면 다음 yield까지만 일하는 스트림.

    r.play; //.play를 받으면 자동으로 처음부터 끝까지 진행한다. 그러나 .yield, .wait 의 receiver 만큼의 시간동안 중간에서 기다린다.

    *스트림(Stream) : .next를 받았을 때 값을 내보내는 연속적인 오브젝트. 아주 특별한 형태의 배열

     

    r.postln;

    r.asArray.at(1);

     

     

    <클럭(Clock)>

    sc에는 세 가지의 시계가 있다.

    SystemClock, AppClock, TempoClock

     

    SystemClock가 가장 정확하다.

    그러나 GUI에서는 AppClock이 시계로 쓰여야만 한다.

     

    *SystemClock, AppClock은 인스턴스를 만들 수 없다. 따라서 클래스 메소드를 이용해 사용한다.

     

    SystemClock.sched(0.0, {“hi”.postln}); //바로

    SystemClock.sched(2.0, {“hi”.postln}); //2초 후에

     

    (

    SystemClock.sched(0.0, {

    r.play;

    “first routine start”.postln;

    });

     

    SystemClock.sched(2.0, {

    q.play;

    “second routine start”.postln;

    });

    )

     

    r.reset; q.reset; //루틴 reset

     

    TempoClock은 인스턴스를 만들 수 있다.

    ->인스턴스를 만들어야 한다.

    t = TempoClock(2); //2는 1의 두 배 속도

     

    (

    t.sched(0.0, {

    r.play;

    “first routine start”.postln;

    });

     

    t.sched(5.0, {

    q.play;

    “second routine start”.postln;

    });

    )

    r.reset; q.reset;

    *GUI interface는 PD에서, 소리합성은 SC에서 하는 것을 연습해보자.

     
  • joynimm April 25, 2012 8:48 pm 퍼머링크 | 응답
    태그: 모임공지 sc3실습반   

    모임공지 (4/26일 목요일 6시~, 망원동 작업실)

    |||||||||||||||||||

    SC 기초실습반 :

    • 소리만들기 (ProxySpace로 Oscillator Ugen, EnvGen, SynthDef)
    • 리듬만들기 (Pbind, Demand Rate)
    • 준비할것 : 지난주 했을 때 안되었던 부분, 쓸모없는 부분, 더 파보고 싶은 부분이 뭘까? 향후 기초 실습반을 어떻게 운영할지…

    |||||||||||||||||||

    배정식의 코딩팁

    발표하실 것 있는 분 말씀주세요.

    |||||||||||||||||||

    논의할 것

    • 당번 정하기
    • 내주 할 것
    • 장소문제 논의
    • 향후 계획

    — Makefair
    — Project 선정
    — 후니다님의 제안에 대한 의견

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    내일 참석이 어려우신 분들이라도
    자유롭게 위의 논의할 것에대해 의견주세요.
    페북에 올려도 되고 문자, 메일, 전화… 다 좋습니다.

     
    • joynimm 4월 27, 2012 12:32 오후 퍼머링크 | 응답

      4/26 모임후기

      O 기초실습반

      • 소리만들기 복습
      • 리듬만들기

      PulseDivider.ar 이용예
      Demand Rate Ugen 이용예
      Pbind 기초

      각자 할것 : 각자 만든 소리를 이용하여 위의 예처럼 리듬 만들기

      O 배정식의 코딩팁 : 다음 기회에 하기로..

      O 논의 한 것

      • 다음주 당번 : 이강일, 이동훈

      => 당번의 임무 : 모임공지, 의견수렴

      • 다음주 할 것

      . 장소는 토즈에서 하는 것으로 알아보기로 했음
      . 기초실습반 (Pbind) , 코딩팁(배정식)

      • 후니다님의 제안에 대해서

      “프로젝트 코어 멤버 &도와주는 사람 & 참여하는 사람”
      으로 나누는 것이 혼선을 막을 수 있는 장점이 있음

      단 어떤 프로젝트를 할지는 다같이 정하고.
      그렇게 지정된 프로젝트는 코어 멤버가 책임과 권한을 가지고 진행

      => 대체로 수긍하는 분위기임. 일부 의견은 코어멤버가 정해지면 비 코어멤버가 도와주고 싶을 때 부담 스러울 수도 있다는 것임.

      • 메이커페어

      => 페이스북에서 참가희망자의 의견을 모아서 다음주에 지원키로…
      . 사운드아트랩스러운 무언가를 가지고 가자는 의견이 있었음
      . 판매를 할지 말지도 더 두고 보기로 함.

  • joynimm April 24, 2012 3:26 am 퍼머링크 | 응답
    태그:   

    SC 기초 실습반
    지난주 했던 것 약간 수정해서 올립니다.

    http://ge.tt/2FPuVjG?c

    Basic Synth Sum은 설명이고
    Basic Synth0은 Ugen 모음이에요.
    설명보고 Ugen모음에 있는 것으로 여러 시도를 해보세요.

    궁금한 것 안되는 것은 물어보시고요.

    이번주는 가능하면 북소리라도 만들어서
    리듬을 만들어 볼까 합니다.

    리듬은 Pattern을 이용하던지
    아직 안배운 Demand Ugen으로 하던지 하겠습니다.

     
    • 승기 4월 27, 2012 2:46 오전 퍼머링크 | 응답

      감사합니다 사정이 안돼서 이번주도 지난주도 참석못했네요 T.T

c
새 글 작성
j
다음 글/다음 댓글
k
이전 글/이전 댓글
r
응답
e
편집
o
댓글 표시/숨기기
t
상위로 가기
l
로그인하기
h
도움말 표시/숨기기
shift + esc
취소