Updates from 10월, 2011 댓글 스레드 토글 전환 | 키보드 단축키

  • punkt68 October 15, 2011 9:43 am 퍼머링크 | 응답  

    5button, 2knob, 2slider로 Ableton Live 연주하기 

    https://docs.google.com/document/d/1_jV-eXZpmnkWoKFikgjqpXyYSlLcM7oBr53Gr4bbtkA/edit?hl=en_US
    
    Ableton Live 파일은 용량이 커서 메일로 보내 드리겠습니다. 미디맵은 이미 되어 있는 상태기 때문에 이 코드를 그대로 사용하신다면 바로 연주 하실 수 있습니다.
     
  • teum11 October 12, 2011 5:06 pm 퍼머링크 | 응답  

    피에조 드럼 패드 코드 수정본 

    낮에 보내드린 소스코드 수정본입니다!!!
    (아래 코드 본문에 마우스를 대면 우측상단에 붙여넣기 아이콘이 나옵니다. 붙여넣기 편리해요~)

    //////////////////////////////////////////////////////////////////////////
    
    //PIEZO DRUM PAD
    //reference: http://spikenzielabs.com/SpikenzieLabs/DrumKitKit.html
    //piezo 6: A0~A5
    //pot 2: A8, A9
    //effectbutton 4: digital 0~3 
    //footswitch 1: digital 4
    //LED 6: digital 5~10
    
    //////////////////////////////////////////////////////////////////////////
    
    ////////////
    // piezo
    ////////////
    
    unsigned char PadNote[6] = {60,62,64,65,66,68};         // MIDI notes from 0 to 127 (Mid C = 60 // C3, D3, E3, F3, F#3, G#3)
    int PadCutOff[6] = {300,300,300,300,300,300};           // Minimum Analog value to cause a drum hit
    long piezoNoteOnTime=0;
    int MaxPlayTime[6] = {10,10,10,10,10};                  // Cycles before a 2nd hit is allowed
    boolean VelocityFlag  = true;    
    
    boolean activePad[6] = {0,0,0,0,0,0};                   // Array of flags of pad currently playing
    int PinPlayTime[6] = {0,0,0,0,0,0};    // Counter since pad started to play
    unsigned char status;
    int piezoPin = 0;     
    int piezoVal = 0;
    
    ////////////
    // pot 
    ////////////
    
    int analogPin1 = A8;//Modula
    int analogPin2 = A9;//Modula
    int mod = 0; int oldmod =0; int oldermod =0;int olderermod =0; // modulation wheel
    int mod1 = 0; int oldmod1 =0; int oldermod1 =0;int olderermod1 =0; // modulation wheel
    
    ////////////
    // effect button
    ////////////
    
    int effectPin[4] = {0,1,2,3};              
    int effectState[4] = {0,0,0,0};                
    int effectFlag[4]  = {0,0,0,0};
    int midistate = 0;
    
    ////////////
    // footswitch
    ////////////
    
    int switchPin = 4;              // footswitch is connected to pin 4
    int midiChannel = 1;            // MIDI channel from 1 to 6
    int val;                        // variable for reading the pin status
    int val2;                       // variable for reading the delayed status
    int switchState;                // variable to hold the button state
    
    ////////////
    // led
    ////////////
    
    int ledPin1 = 5;
    int ledPin2 = 6;
    int ledPin3 = 7;
    int ledPin4 = 8;
    int ledPin5 = 9;
    int ledPin6 = 10;
    
    int piezo1 = A0;
    int piezo2 = A1;
    int piezo3 = A2;
    int piezo4 = A3;
    int piezo5 = A4;
    int piezo6 = A5;
    
    int threshold = 50;  
    
    int piezoValue1=0;
    int piezoValue2=0; 
    int piezoValue3=0;
    int piezoValue4=0; 
    int piezoValue5=0;
    int piezoValue6=0; 
    int ledState = LOW;        
    
    
    
    //*******************************************************************************************************************
    // Setup			
    //*******************************************************************************************************************
    
    
    
    void setup() 
    {
      Serial.begin(9600);                                 
      
      pinMode(ledPin1, OUTPUT);
      pinMode(ledPin2, OUTPUT);
      pinMode(ledPin3, OUTPUT);
      pinMode(ledPin4, OUTPUT);
      pinMode(ledPin5, OUTPUT);
      pinMode(ledPin6, OUTPUT);
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, LOW);
      digitalWrite(ledPin4, LOW);
      digitalWrite(ledPin5, LOW);
      digitalWrite(ledPin6, LOW);
    }
    
    
    
    //*******************************************************************************************************************
    // Main Program			
    //*******************************************************************************************************************
    
    ////////////
    // piezo
    ////////////
    
    
    void loop() 
    
    
    {
      for(int piezoPin=0; piezoPin < 6; piezoPin++)
      {
        piezoVal = analogRead(piezoPin);                              
        if((piezoVal > PadCutOff[piezoPin]))
        {
          if((activePad[piezoPin] == false))
          {
            if(VelocityFlag == true) piezoVal = (piezoVal / 8) - 1 ;
            else piezoVal = 127;
            
            usbMIDI.sendNoteOn(PadNote[piezoPin],piezoVal,midiChannel);
            PinPlayTime[piezoPin] = 0;
            activePad[piezoPin] = true;
          }
          else
          {
            PinPlayTime[piezoPin] = PinPlayTime[piezoPin] + 1;
          }
        }
        else if((activePad[piezoPin] == true))
        {
          PinPlayTime[piezoPin] = PinPlayTime[piezoPin] + 1;
          
          if(PinPlayTime[piezoPin] > MaxPlayTime[piezoPin])
          {
            activePad[piezoPin] = false;
            usbMIDI.sendNoteOff(PadNote[piezoPin],127,midiChannel);	
          }
        }
      } 
      
    ////////////
    // pot 
    ////////////
    
    mod = (analogRead(analogPin1)/8); // read the analog input (0~1023 -> 0~127)
    mod1 = (analogRead(analogPin2)/8); // read the analog input (0~1023 -> 0~127)
    
    if (mod != oldmod && mod != oldermod && mod != olderermod) // modulation wheel
    {
    usbMIDI.sendControlChange(15, (mod), 1 );// 
    // Serial.print("mod"); Serial.println(mod);
    olderermod = oldermod;
    oldermod = oldmod;
    oldmod = mod; 
    }
    
    
    
    if ( mod1 !=oldmod1 && mod1 != oldermod1 && mod1 != olderermod1) // modulation wheel
    {
    usbMIDI.sendControlChange(16, (mod1), 1 );// 
    // Serial.print("mod"); Serial.println(mod);
    olderermod1 = oldermod1;
    oldermod1 = oldmod1;
    oldmod1 = mod1; 
    }
    
    ////////////
    // effect button
    ////////////
      
       for(int i=0; i<4; i++){
       effectState[i] = digitalRead(effectPin[i]);
     
     if (effectState[i] == HIGH && effectFlag[i] == 0)
     {
       if (midistate == 0)
       {
        usbMIDI.sendControlChange(i, 80, midiChannel);
        midistate = 1;
        }
        
    else if (midistate == 1)
        {
         usbMIDI.sendControlChange(i, 0, midiChannel);
         midistate = 0;
        }
        
       effectFlag[i] = 1;
     }
     
     if (effectState[i] == LOW)
     {
      effectFlag[i] = 0; 
     }
    }
    
    ////////////////
    // footswitch //
    ////////////////
     
      val = digitalRead(switchPin);      // read input value and store it in val
      delay(10);                         // 10 milliseconds is a good amount of time
      val2 = digitalRead(switchPin);     // read the input again to check for bounces
      if (val == val2)
      {                 // make sure we got 2 consistant readings!
        if (val != switchState)
        {          // the button state has changed!
          if (val == LOW)
          {                // check if the button is pressed
            if (midiChannel == 1) midiChannel = 2;
            else if(midiChannel == 2) midiChannel = 3;
            else if(midiChannel == 3) midiChannel = 4;
            else if(midiChannel == 4) midiChannel = 5;
            else if(midiChannel == 5) midiChannel = 6;
            else if(midiChannel == 6) midiChannel = 1;
           }
        }
        switchState = val;                 // save the new state in our variable
      }
    
    
    ////////////
    // led
    ////////////
    
    
       piezoValue1 = analogRead(piezo1)/4;  
       piezoValue2 = analogRead(piezo2)/4;  
       piezoValue3 = analogRead(piezo3)/4;  
       piezoValue4 = analogRead(piezo4)/4;
       piezoValue5 = analogRead(piezo5)/4;  
       piezoValue6 = analogRead(piezo6)/4;      
          
        if ( piezoValue1 >= threshold) digitalWrite(ledPin1,HIGH);
        else digitalWrite(ledPin1, LOW);
        
        if ( piezoValue2 >= threshold) digitalWrite(ledPin2,HIGH);
        else digitalWrite(ledPin2, LOW);
        
        if ( piezoValue3 >= threshold) digitalWrite(ledPin3,HIGH);
        else digitalWrite(ledPin3, LOW);
        
        if ( piezoValue4 >= threshold) digitalWrite(ledPin4,HIGH);
        else digitalWrite(ledPin4, LOW);
        
        if ( piezoValue5 >= threshold) digitalWrite(ledPin5,HIGH);
        else digitalWrite(ledPin5, LOW);
        
        if ( piezoValue6 >= threshold) digitalWrite(ledPin6,HIGH);
        else digitalWrite(ledPin6, LOW);
        
        
    }
          
         
    
     
  • joynimm October 5, 2011 7:49 pm 퍼머링크 | 응답  

    강의자료 3 

    https://docs.google.com/spreadsheet/ccc?key=0AtucKJx9fzfzdGU1ZTEzMmY3cVExOGxyZzBseTh4UkE&hl=en_US

     
    • jimmii 10월 10, 2011 10:20 오후 퍼머링크 | 응답

      Midi OX 사용법을 모르겠어요~ 설치는 했는데 사용법이 도통 검색해도 안나오구.. 그래서 예제 중 usbMIDI구문 테스팅이 안되어요~~어떻게하는것일까욤?

    • jimmii 10월 11, 2011 1:35 오후 퍼머링크 | 응답

      아, 처음에 주신 물체주머니(!!!) 안에 포텐시오미터랑.. 버튼도 있고.. 또하나 길다랗게 생겨서 볼륨이나 수치같은거 쭉 밀어올려서 변화시키는 그걸 뭐라고 하죠? 그것도 사용해서 테스트 해보고 싶은데 다리가 여러개라 어떻게 사용하는지 잘 모르겠더라구요 ^^ 이름도 몰라서 검색도 애매하구

      • joynimm 10월 11, 2011 7:02 오후 퍼머링크 | 응답

        물체주머니… ㅋㅋ
        진미님은 예습도 잘하시니 좋습니다.

        슬라이드 가변저항을 말씀하시는 것 같은데요. 뒷면에 숫자가 있을 거에요… 2번을 신호선 1번/3번을 전원에 연결하시면 될 것같아요. 혹시 모르니 5v 연결전에 330옴 저항 하나 다시고 실험해보시기를… 지금.. 똑같은 부품이 저에겐 없어서… 확신하지는 않지만..

        바로 브레드보드에는 못 꼽을 것 같아요. 와이어를 잘 꼬아서 연결시키거나 납땜하시거나…
        수요일 확실히 알려드릴께요.

    • jimmii 10월 11, 2011 8:41 오후 퍼머링크 | 응답

      ㅋㅋㅋ 지미에요 신승현양입니당 ^^

      • joynimm 10월 11, 2011 11:37 오후 퍼머링크 | 응답

        아 죄송… 신승현님!… 성은 알았는데 잠시 착각을… -..-;

  • mortp October 5, 2011 7:17 pm 퍼머링크 | 응답  

    프로세싱 예제를 실행하기 위해서 필요한 두 가지는 1… 

    프로세싱 예제를 실행하기 위해서 필요한 두 가지는,

    1. 프로세싱을 설치한다.
    http://processing.org/download/

    2. 프로세싱에서 미디신호를 주고받기 위한 라이브러리인 promidi를 설치한다.
    http://creativecomputing.cc/p5libs/promidi/
    에서 다운받은 폴더를 자신의 컴퓨터, processing -> libraries 폴더에 넣는다.

    잘 안되시면 바로 손들어주세요!

     
  • mortp October 5, 2011 7:11 pm 퍼머링크 | 응답  

    프로세싱 예제입니다:) 

    
    import promidi.*;
    import ddf.minim.*;
    
    Minim minim;
    AudioInput in;
    
    MidiIO midiIO;
    
    int drawtype = 2; //choose 1 ~ 4. default = 4;
    
    float angle;
    float cx, cy, cr;
    
    int[] notes = new int[4];
    int[] vels = new int[4];
    boolean[] onoff = new boolean[4];
    float[] timerOn = new float[4];
    float[] interval = new float[4];
    float[] sr = new float[4];
    float[] velo = new float[4];
    color[] col = new color[4];
    int[] ap = new int[4];
    float tradAvg;
    
    void setup()
    {
      size(800, 800);
      background(0);
      smooth();
      angle = 0;
      cx = width/2;
      cy = height/2;
      cr = 600;
      
      for(int i = 0; i < 4; i++)
      {
        ap[i] = 20;
      }
      
      col[0] = color(30, 48, 113);
      col[1] = color(20, 80, 30);
      col[2] = color(10, 30, 13);
      col[3] = color(30, 10, 10);  
      
      midiIO = MidiIO.getInstance(this);
      midiIO.printDevices();
      midiIO.openInput(2, 0); //input device, channel. set input device idx first.
      midiIO.openInput(2, 1);
      midiIO.openInput(2, 2);
      midiIO.openInput(2, 3);
      
      minim = new Minim(this);
      minim.debugOn();
      
      // get a line in from Minim, default bit depth is 16
      in = minim.getLineIn(Minim.STEREO, 512);
      tradAvg = 0;
      
    }
    
    void draw()
    {
      background(255);
      stroke(0);
      round(angle+=1);
      
      
        fill(255, 200);
        ellipse(cx, cy, cr, cr);
    
    
      for(int i = 0; i < 4; i++)
      {
        float[] tvel = new float[4];
        tvel[i] = map(notes[i], 0, 127, 0, 4.0);
    
        float[] trad = new float[4];
        trad[i] = map(vels[i], 0, 127, 10, cr/3);
        
        float[] intv = new float[4];
        intv[i] = (4000 - interval[i])/2000;
        
    
        tradAvg+=trad[i];
        fill(col[i], ap[i]);
        ccc(cx, cy, cr/2 - trad[i]/2, trad[i], tvel[i]);
      }
      
        tradAvg = tradAvg/4.0;
      
        stroke(0);
        for(int i = 0; i < in.bufferSize() - 1; i++)
      {
        switch(drawtype){
          
        case 1:
        line((width/2) + cos(radians(i)) * (cr/2), height/8 + sin(radians(in.left.get(i)*200)) * (cr/2), width/2 + cos(radians(i+1)) * (cr/2), height/8 * 7 + sin(radians(in.left.get(i+1)*200)) * (cr/2));
        break;
        
        case 2:
        line((width/2) + cos(radians(i)) * (cr/2), height/2 + sin(radians(i)) * (cr/2), width/2 + cos(radians(i+1)) * (cr/2), height/2 + sin(radians(in.left.get(i+1)*200)) * (cr/2));
        break;
        
        case 3:
        line((width/2) + cos(radians(i)) * (cr/2), height/2 + sin(radians(i)) + (in.left.get(i)*300) , width/2 + cos(radians(i+1)) * (cr/2), height/2 + sin(radians((i+1))) * (cr/2) + (in.left.get(i+1)*300));    
        break;
        
        default:
        line((width/2) + cos(radians(i)) * (cr/2), height/2 + sin(radians((i))) * (cr/2) + (in.left.get(i)*200) , width/2 + cos(radians(i+1)) * (cr/2), height/2 + sin(radians((i+1))) * (cr/2) + (in.left.get(i+1)*2000));
        break;
        
        }
      }
    
      
    }
    
    
    void ccc(float xoffset, float yoffset, float rad, float sr, float vel)
    {
      float[] tarr;
      tarr = new float[2];
        tarr[0] = round1(xoffset + sin(radians((angle*vel)%360)) * rad);
        tarr[1] = round1(yoffset + cos(radians((angle*vel)%360)) * rad);
        
      noStroke();
        ellipseh(tarr[0], tarr[1], sr, 5);
      
    }
    
    
    float round1(float in)
    {
      return round(in * pow(10, 1)) / pow(10, 1);
    }
    
    
    void ellipseh(float px, float py, float rad, int layer)
    {
      float tx, ty, tr;
      for(int i = 0; i < layer; i++)
      {
        tx = random(1.0);
        ty = random(1.0);
        tr = random(rad/10);
        
        ellipse(px + tx, py + ty, rad + tr, rad + tr);
      }
    }
    
    void stop()
    {
      // always close Minim audio classes when you are done with them
      in.close();
      minim.stop();
      
      super.stop();
    }
    
    
    
    void noteOn(Note note, int device, int channel){
    int vel = note.getVelocity();
    int pit = note.getPitch();
    
    notes[channel] = pit;
    vels[channel] = vel;
    
      if(onoff[channel] == false)
      {
        timerOn[channel] = millis();
        onoff[channel] = true;
      }
    }
    
    void noteOff(Note note, int device, int channel){
      int pit = note.getPitch();
    
      onoff[channel] = false;
      vels[channel] = 0;  
      interval[channel] = millis() - timerOn[channel]; 
    }
    
    
     
  • joynimm September 28, 2011 4:02 pm 퍼머링크 | 응답
    태그: , ,   

    강의자료 2 

    내용은 거의 흡사합니다.

    스프레드시트 버전
    https://docs.google.com/spreadsheet/ccc?key=0AtucKJx9fzfzdE53RjlyRC1zRXJwenliU2VWSm0zT2c&hl=en_US

    프레젠테이션 버전
    https://docs.google.com/present/edit?id=0AducKJx9fzfzZGd2ZDU0cmRfMmRmYmNubWdu&hl=en_US

     
  • teum11 September 24, 2011 3:10 pm 퍼머링크 | 응답  

    웹사이트 사용 안내 

    워드프레스로 만들어진 사운드아트랩 사이트 사용이 낯선분들을 위해 짧은 노트를 올립니다.

    본 사이트에 글을 올리시려면 회원가입을 해주셔야 합니다. 네이버나 다음까페 사용과 마찬가지로요. 회원가입을 안한 상태에서는 게시물 확인만 가능하며 댓글을 다는것은 가능하나 관리자의 승인이 나기 전에는 사이트에 반영되지 않습니다.

    회원가입 방법은,

    • http://wordpress.com/ 에서 회원가입을 하고
    • 회원가입한 분의 아이디와 이메일주소를 본 게시물의 댓글로 달아주세요
    • 관리자가 확인하는대로 회원가입 초대메일을 보내드립니다.

    불편한 사항은 알려주시면… 최대한 반영해보도록 하겠습니다. 🙂

     
  • joynimm September 22, 2011 1:02 pm 퍼머링크 | 응답
    태그: , ,   

    자작악기 워크숍 01 

    강좌내용 정리

     
    • 안신열 9월 23, 2011 12:45 오전 퍼머링크 | 응답

      관심은 있지만, 포항에서 학교를 다니고 있어서 시간이 여의치 않아 가지 못하게 되었는데요,
      teesy나 teesy+ 를 국내에서 구할 수 있는 곳이 있나요?

      • morogado 9월 23, 2011 11:43 오전 퍼머링크 | 응답

        아마 없을거에요. 현재는 해외주문으로만 구입할수 있어요. 관심 가져주셔서 감사합니다.
        csound 공부하시나봐요. 온라인에서나마 자주 뵈요.

        • 안신열 9월 23, 2011 12:30 오후 퍼머링크

          csound는 예전에 잠시 공부를 했었어요.
          .orc파일을 이용한 음색 만들기 연습이 다였구요.
          하지만 csound의 경우 .sco파일 다루기가 너무 노가다 스럽다 싶은 생각에,
          미디시퀀서들을 배우고 있습니다.
          Pd, Max/Msp, Processing, Arduino도 맛보기만 했구요.

          teesy는 크기가 작아서 오브젝트 안에 숨기기가 더 좋겠다는 생각이 들었는데, 아쉽네요.ㅎㅎ
          아무튼 답변 감사드립니다. 🙂

      • mortp 9월 23, 2011 3:41 오후 퍼머링크 | 응답

        반갑습니다!
        혹시 supercollider에도 관심이 있으신가요?
        저는 csound는 잘 모르지만, 블로그를 잠깐 살펴봤는데 혹 supercollider를 접해보지 않으셨다면 살짝 보셔도 좋을 것 같아서요:)

        • 안신열 9월 23, 2011 7:03 오후 퍼머링크

          네, 관심은 있었는데, 언어의 장벽도 있고 해서 손 놓고 있었더랬습니다.
          그러잖아도, 여기 블로그에 스터디 자료가 있어서, 시작해볼까 생각하고 있었어요. 🙂

      • morogado 9월 23, 2011 5:55 오후 퍼머링크 | 응답

        teensy 작아서 정말 좋죠. arduino mini 가격이 조금 내려갔으면 좋겠어요.

        • 안신열 9월 23, 2011 7:04 오후 퍼머링크

          ㅎㅎ 아두이노가 전반적으로 가격이 내려 가면 좋겠습니다만,
          사실 그래서 학부과정의 전산전자를 들어볼까도 생각하고 있었어요.
          배보다 배꼽이 더 큰 건지도 모르겠지만, 마이크로 컨트롤러만 따로 사서,
          teensy 같은 걸 직접 구성해볼 수 있지 않을까 싶기도 했거든요. 아직은 매우 소원한 일입니다만. ㅎㅎ

        • morogado 9월 23, 2011 8:13 오후 퍼머링크

          만드시면 꼭 알려주셔요. 컹컹거리는 강아지 백마리 만들고 싶어요. csound 조금 해봤는데요.
          완전 암기과목이라는 생각들었어요. supercollider는 그것에 비하면 약간 암기과목이라는 생각이 들더라고요. 모임에서는 워크샵 끝나면 supercollider로 다시 돌아가서 스터디 할것 같아요.

    • 김상현 9월 24, 2011 2:34 오후 퍼머링크 | 응답

      이런…. 수업내용 보내주시는거군요…. 적느라 고생했는데… 다음에는 듣는것에 충실해야겠네요….^^

    • 김상현 9월 24, 2011 2:49 오후 퍼머링크 | 응답

      그리고 아직 이곳이 잘 적응이 않되네요… 어디서 무얼 봐야할지…ㅠㅠ
      그리고 강의하신 선생님에 싸이트는 어떻게 들어가나요…^^

  • punkt68 September 22, 2011 6:00 am 퍼머링크 | 응답  

    ableton live 설치, 소개, 미디맵핑 

     

     

     

     

    Ableton Live

     

     

     

     

     
    • 김상현 9월 24, 2011 2:36 오후 퍼머링크 | 응답

      감사합니다… 다음시간이 기대가되네요…^^

  • teum11 September 11, 2011 8:44 pm 퍼머링크 | 응답  

    ‘Teensy로 만드는 자작 미디악기 워크숍’ 안내 

    ‘Teensy로 만드는 자작 미디악기 워크숍’

    2009년 여름에 시작되어 그동안 Supercollider를 통한 사운드 연구 및 정기세미나와 공연을 기획해온 ‘사운드아트랩’에서 처음으로 유료워크숍를 개최합니다. 9/21(수)에 시작하여 총 4회에 걸쳐 진행될 본 워크숍에서는 아두이노보다 작고 저렴하면서도 더 많은 입출력핀을 가진 개발보드 Teensy를 국내 최초로 소개하여 이를 이용한 특색있는 자신만의 악기를 만들게 됩니다. 피지컬 컴퓨팅, DIY 악기, 미디 컨트롤러, 전자음악 등에 관심있는 많은 분들의 참여를 부탁드립니다.

    • 일정: 2011.9.21부터 4주간, 매주 수요일, 총 4회
    • 시간: 오후 7:30~10:30
    • 장소: 합정역 한빛미디어 세미나실 (아래 약도 참조)
    • 참가비: 15만원 (재료비 포함)
    • 무료 제공 재료 : 개발보드(Teensy), USB Cable, 점퍼와이어, 미니브레드보드, 스위치, 저항, 가변저항,피에조센서, CdS Cell, 전선, 미니스피커, LED
    • 신청방법: 온라인 신청양식(클릭)을 통해 참가신청후 9/20 정오까지 참가비 계좌입금                                              (신한은행, 110-324-010524, 계좌주: 유석종)
    • 문의: joynimm@gmail.com, 010-5215-3174
    • 주최: 사운드아트랩
    • 후원: MAKE:KOREA

    온라인 신청양식으로 바로가기 (클릭)

     

     

    워크숍 장소(한빛미디어) 약도

     
    • 별꽃뱀아줌마 9월 12, 2011 12:55 오후 퍼머링크 | 응답

      대장장님 메일받고 들려봅니다. 다들 잘 지내죠? 워크샵 무지 알차보이고 재미있어보여요……그림의 떡ㅠ. 일 낼 때마다 잊지 않고 연락주셔서 고마운데 매번 아쉬움만 그득그득한거시…언제 한번 뵈옵기를 ~_~…… 수요일날 홍대 근처에 갈 일 있음 연락하겠사와요…. 배정식군한테 커피도 얻어먹어야는데 (이런건 이상하게 안잊어버리네) ‘부진아반’ 과 ‘허세반’을 보니 너무나 친숙하고 여전들 하시네요 ㅋ.

      • joynimm 9월 13, 2011 3:50 오후 퍼머링크 | 응답

        반갑습니다만 별명만 보고는 누구신지 모르겠네요?
        혹시 전*미님이신가요?

      • 솜솜 9월 14, 2011 9:57 오전 퍼머링크 | 응답

        혜진언니? ㅋㅋㅋ 저 소미 ㅋㅋ

    • punkt68 9월 13, 2011 6:17 오후 퍼머링크 | 응답

      누규??
      고기를 얻어 먹었으면 복부지방 어딘가에 기억 되어 있을것 같은데. 커피는 이뇨작용으로 … 기억이..
      아마 내일 회의때문에 모일듯. 시간과 장소가 맞으면 한번 뵘~

      • mortp 9월 13, 2011 10:24 오후 퍼머링크 | 응답

        내일 저희 모이남요?

        • joynimm 9월 14, 2011 8:33 오전 퍼머링크

          오늘 수요일 정규모임은 쉽니다만
          홍보, 강의준비 관련 비정규모임을 갖을까 생각중입니다.

          4시쯤 뵙죠. 장소는 조금 궁리하고 올릴께요.

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