The Beach Boys의 노래 Good Vibrations 에서 저기 의 소리 가 불멸되었습니다 . 많은 사람들이 그 사운드를 스타 트랙 오리지널 시리즈의 주제와 연관 짓지 만 소프라노의 에뮬레이션 인 것 같습니다 .
이 도전은 당신이 theremin 을 구현해야합니다 .
입력
- 마우스 또는 다른 입력 장치 (예 : 조이스틱을 사용할 수 있음)에서 2 차원 입력을 가져 오면 다음과 같이 오디오 출력 장치에서 톤이 생성됩니다.
- x를 증가 시키면 톤의 주파수가 증가합니다. 음표에 따라 주파수가 기하 급수적으로 증가하므로 마우스 x 위치와 음표 사이에 선형 관계를 구현해야합니다.
- y를 높이면 톤의 음량이 증가합니다.
- 실수에 의해 생성 된 파형과 관련하여 혼동 되는 것으로 보이 므로, 단순화를 위해 사인파 (또는 그 근사)를 사용해야한다.
규칙
- 생성 된 톤은 최소 2 옥타브 범위를 가져야합니다. 더 많은 범위가 허용됩니다. A-440은 범위 내에 있어야합니다.
- 연속적으로 가변적 인 주파수 및 진폭의 가청 외관을 생성하기 위해, 입력 장치로부터의 두 차원에서 고려되는 값의 범위는 500 이상이어야한다. 구현은 마우스 커서 위치로부터 입력을 판독하기 위해 윈도우 (최소 500x500 픽셀)를 열 수있다. 또는 창을 열지 않고 마우스 나 다른 입력 장치에서 직접 좌표를 읽을 수 있습니다.
- 키 조합, 마우스 클릭 또는 기타 일반적인 입력 장치 등 프로그램을 중지 할 수있는 간단한 방법이 있어야합니다. CTRL-c로 충분합니다.
- 다른 작업이 필요없이 솔루션을 완전히 구현하지 않는 한 모든 표준 라이브러리를 사용할 수 있습니다.
- 코드 골프 및 I / O에 대한 표준 규칙
- 마우스 나 입력 장치가 입력 상자에 초점을 잃게하여 중지 할 수 있습니다.
노트
- 출력 톤이 동적으로 생성되므로 톤이 연속 파형인지 확인해야합니다. 즉, 위상이나 진폭의 갑작스러운 변화로 인해 들리는 클릭이나 팝이 없습니다.
- 입력 크기 영역을 500 x 500으로 제한 할 수 있지만 더 클 수 있습니다.
이것은 code-golf 이므로 모든 언어에서 가장 짧은 답변이 이깁니다.
특별한 감사
이 도전에 도전하고 Secret Santa 's Sandbox에 게시 한 Digital Trauma에게 특별한 감사를드립니다. 몇 가지 수정 작업을 수행했으며 여기 에 원래 게시물이 있습니다.