본문 바로가기
컴퓨터 활용/노년에 즐기는 코딩

[스크래치] 음악 연주할 때, 악기와 빠르기 모두 선택할 수 있나요?

by easyfly 2023. 2. 7.
반응형

스크래치 음악에서 악기와 빠르기 모두 선택할 수 있나요?

물론입니다.

악기 종류와 빠르기 모두 선택해서 자신이 원하는 악기와 템포로 연주할 수 있습니다.

방법은 변수를 사용하는 것입니다. 스크래치 변수 패널에서 두 개의 변수를 만듭니다. 하나는 '빠르기', 또 하나는 '연주악기'. 악기 종류는 '리스트 만들기'로 21개 악기를 등록합니다. 리스트란 자료 구조의 일종으로 여러 개를 한꺼번에 관리하기 위한 특별한 변수입니다. '리스트 변수의 몇 번째 항목'으로 원하는 항목을 지정할 수 있으니까, 일일이 변수를 지정하는 것보다 편합니다.

변수 패널에 생성된 변수와 리스트

오펜바흐 이야기

캉캉은 오펜바흐 오페레타 '지옥의 오르페'에서 나오는 음악입니다. 오페레타는 오페라보다는 규모가 작고 기볍게 즐길 수 있는 장르로 희극적인 요소가 다분합니다. 오펜바흐의 오페레타에서 '지옥의 오르페'는 그리스 신화 '오르페우스 이야기'를 풍자적으로 다룬 것입니다. 여기서 오펜바흐는 천국과 지옥을 희화시켜 대비하고 있습니다. 천국은 예배만 하는 젊잖은 사람들만 있는 따분한 곳으로, 지옥은 자극이 다양한 흥미진진한 곳으로(좀 심하게 표현한다면) 묘사합니다. 캉캉은 빨간색 주름치마를 입은 여성들이 다리를 번쩍 쳐들면서 춤을 추는 라스베이거스 같은. 유흥 도시를 배경으로 하는 영화에서 많이 볼 수 있는 춤입니다.

천국과 지옥은 1858년 10월 파리에서 초연한 이후 인기를 얻게 되어 지금까지 줄기차게 공연되는 장수 오페레타입니다. 특히 이 오페레타에서 소개된 캉캉춤이 널리 사랑받는 춤이 되면서 오펜바흐 명성은 꾸준히 유지되고 있습니다.(물론 음악성이 뛰어난 점은 두말할 필요 없고)

스크래치 코딩

'악기선택'은 따로 '내 블록'으로 만들었습니다. 이 블록은 스크래치 기본 블록이 아니고 코딩을 하는 프로그래머가 직접 만든 블록입니다. 어려운 작업은 아닙니다. '내 블록 만들기'를 선택하면 블록 정의 구역이 생깁니다. 여기에 자신이 의도한 내용을 구현하는 것입니다. '21개 악기 중 하나를 선택하는 기능'으로 따로 블록을 만들어 '악기선택'이라는 블록만 메인에 끼우면 됩니다. 블록 기반 프로그램은 어린아이들 레고를 맞추듯이 끼워 넣어 완성하는 것입니다.

완성된 코딩에서 조건문 구조

블록을 사용하는데 조건을 부여했습니다. 사용자가 실수로 입력값이 틀리면 '피아노'가 선택되게끔 조건을 준 것입니다. 입력값이 정상이면 그 값을 변수에 지정하여 악기가 선택되게끔 하구요.

빠르기도 마찬가지입니다. 본래는 빠르기를 '120'으로 했는데 캉캉이란 노래가 워낙 경쾌하게 빠른 노래라서 실제 코딩에서는 '200'으로 했습니다. (전 과정에서 빠르기 제한을 '120'으로 하고 입력값 범위를 벗어나면 '100'으로 적용했다가 아는 형님한테 혼났습니다. 너무 늘어진다는 혹평이었습니다.)

알고리즘 분석

먼저 스프라이트를 초기화했습니다. 빠르기와 연주 악기를 결정하기 위해 사용자의 입력을 받아들이는 과정이 이어집니다. 입력된 빠르기는 변수 '빠르기'로 대입합니다. 연주악기로 입력된 값도 변수 '연주악기'로 대입합니다. 변수는 다음 과정에서 비교하는 연산에 사용합니다. '연산'이란 프로그램 과정에서 비교하면서 계산을 하는 것입니다. 변수에 들어온 값이 범위 안에 있는지 벗어났는지를 비교하여 맞으면 다음 과정을 실행하고 틀리면 다른 과정으로 넘어가는 것입니다. 빠르기의 경우 빠르기 수치가 정상이면 그 숫자값대로 빠르기가 정해지고 범위가 벗어나면 '120' 속도가 부여되는 것입니다. 연주악기의 경우도 마찬가지입니다.

초기화와 입력값 받아들이기

위에서 언급했듯이 연산하고 그 결과를 비교하여 조건에 따라 분기되는 과정입니다. 연주악기가 '1과 21 사이이면' 악기선택으로 바로 가고 그것이 아니면 피아노로 연주하라는 코딩입니다.

'내 블록 만들기'로 블록을 이용하여 악기를 선택하고 빠르기 결정

빠르기는 캉캉춤의 경쾌함을 반영시키기 위해 200까지 적용할 수 있도록 높였습니다.(전에는 120 빠르기로 했는데, 너무 느려서 올림)

내 블록 '악기선택'은 아래와 같습니다. 리스트로 '악기종류'를 만들고 21개 악기가 등록되어 있기 때문에 리스트의 인덱스를 이용하여 악기가 선택되도록 했습니다.

악기종류를 선택하는 블록

스크래치 프로젝트 맛보기

완성된 스크래치 프로젝트를 체험하겠습니다. 스크래치 프로젝트는 MIT에 의해서 서비스가 됩니다. 스크래치 코딩을 끝내고 프로젝트에서 주소를 공유하면 다른 사람들과 같이 체험할 수 있습니다.

스크래치 프로젝트

프로젝트는 초록 깃발을 클릭하면서 시작됩니다.

노년에 즐기는 코딩 시간이었습니다.

그럼 이만.

반응형

댓글