# 라이브 코딩

소닉 파이의 가장 멋진 특성 중 하나는 음악을 만들기 위해 코드를 작성하고 실시간으로 수정할 수 있다는 것입니다. 여러분이 기타로 라이브 연주를 하는 것과 같죠. 즉, 연습을 하면 소닉 파이를 가지고 무대에서 연주를 할 수 있다는 것이죠.

## 편하게 생각하세요

이 튜토리얼의 다른 부분에서 소닉 파이의 작동방법에 대한 상세한 설명에 들어가기 전에, 라이브 코드가 어떤 것인지 경험시켜 드리겠어요. 라이브 코드를 충분히 이해하지 못한다고 해도 걱정하지 마세요. 그냥 자리에 앉아서 즐겨보세요.

## 라이브 루프

자~ 시작하죠! 다음의 코드를 복사해서 비어있는 버퍼에 붙여넣으세요:

    live_loop :flibble do
      sample :bd_haus, rate: 1
      sleep 0.5
    end

이제 ‘재생’ 버튼을 누르면, 멋지고 빠른 베이스 드럼을 치는 소리가 들릴거에요. 만약 언제라도 소리를 중단시키고 싶으면, ‘중지’ 버튼을 누르면 됩니다. 지금은 ‘중지’버튼을 누르지 말고, 다음 단계를 따라 해보기로 하지요:

1. 아직 베이스 드럼 소리가 나는지 확인하세요
2. ‘sleep’ 값을 ‘0.5’에서 ‘1’처럼 더 큰 숫자로 바꿔보세요.
3. ‘재생’버튼을 한번 더 눌러보세요
4. 드럼 속도가 어떻게 변하였는지 주목해보세요.
5. 마지막으로, “이 순간을 기억해 두세요!”, 여러분이 처음으로 소닉 파이로 라이브 코딩을 하는 순간입니다. 이 순간이 마지막이 될 것 같지는 않네요..

자, 충분히 간단하지요. 믹스에 뭔가 다른 것도 추가해 보기로 하죠. ‘sample :bd_haus’ 윗 줄에 ‘sample :ambi_choir, rate: 0.3’을 추가합시다. 여러분의 코드는 이것과 같아야 합니다:

    live_loop :flibble do
      sample :ambi_choir, rate: 0.3
      sample :bd_haus, rate: 1
      sleep 1
    end

이제, 놀아봅시다. rate 값을 변경해보죠 - 큰 값을 넣었을 때, 혹은 작은 값이나 음의 값을 넣었을 때 어떻게 되나요? 여러분이 ‘:ambi_choir’ 샘플에 대한 ‘rate: ‘의 값을 아주 약간(‘0.29’정도로) 변경하면, 어떤 일이 일어나는 지 알아봅시다. 만약 여러분이 정말 작은 ‘sleep’ 값을 주면 어떻게 될까요? 만약 그렇게 한다면, 여러분의 컴퓨터가 너무 빨리 작동하게 되어 속도를 유지할 수 없기 때문에 오류가 나서 멈출 것입니다. (그런 상황이 발생하면, 좀 더 큰 ‘sleep’ 시간으로 설정하고 ‘Run’버튼을 다시 누릅니다).

‘sample’ 행 중에서 어느 한 행 맨 앞에 ‘#’을 추가하여 주석으로 만들어 보세요:

    live_loop :flibble do
     sample :ambi_choir, rate: 0.3
    #  sample :bd_haus, rate: 1
     sleep 1
    end

’#’이 붙은 줄은 컴퓨터가 무시하게 되고, 우리가 들을 수 없게 된다는 점에 주목하세요. 이것을 주석이라고 부릅니다. 소닉 파이에서는 믹스에 무언가를 더하거나 뺄 때 주석기능을 사용할 수 있습니다.

마지막으로, 여러분이 갖고 놀기 좋을 만한 것을 남겨두겠습니다. 아래 코드를 복사해서 여분의 버퍼에 붙여넣으세요. 지금은 두 개의 루프가 있는 걸 확인하는 것 외에는 너무 많이 이해하려고 하지 마세요 - 이 루프들로 두 가지 일을 동시에 하게 됩니다. 이제, 여러분이 가장 잘 하는 걸 하세요 - 실험하고 놀아보세요. 여기 몇가지 해볼 만한 것들이 있습니다:

- 샘플 사운드가 바뀌는 것을 들어보기 위해 파랑색 ‘rate:’의 값을 변경해 봅시다.
- ‘sleep’ 시간을 바꾸어서 두 루프가 서로 다른 속도로 돌아가는 것을 들어보세요.
- 샘플 라인을 주석해제(‘#’을 삭제하면 됨)해서 기타연주가 거꾸로 재생되는 것을 즐겨보세요.
- 파랑색 ‘mix:’ 값 하나를 ‘0’(믹스하지 않음)에서 ‘1’(완전히 믹스함)사이의 값으로 바꾸어 보세요.

‘Run’ 버튼을 누르면, 다음 번 루프에서 변경된 부분이 들린다는 것을 기억하세요. 잘 안되더라도, 걱정하지 마세요 - ‘Stop’ 버튼을 누른 후, 버퍼에서 코드를 지우고 새로 복사해서 붙여넣으면 다시 연주할 수 있습니다. 실수를 하면 더 빨리 배울 수 있습니다…

    live_loop :guit do
      with_fx :echo, mix: 0.3, phase: 0.25 do
        sample :guit_em9, rate: 0.5
      end
    #  sample :guit_em9, rate: -0.5
      sleep 8
    end
    live_loop :boom do
      with_fx :reverb, room: 1 do
        sample :bd_boom, amp: 10, rate: 1
      end
      sleep 8
    end

이제, 이 모든 것이 실제로 어떻게 작동하는지 궁금증이 생길 때까지 계속 놀고 실험해 보시면, 이걸로 다른 무언가를 할 수 있을지 궁금해지기 시작할 것입니다. 여러분은 이제 이 튜토리얼의 나머지 부분을 읽을 준비가 된 것이지요.

뭘 기다리는 건가요…