메트로놈 만들기


36

소개

며칠 전에 나는 무언가를위한 메트로놈이 필요했습니다. 사용할 수있는 앱이 없어 App Store에서 앱을 다운로드했습니다. 앱의 크기는 71MB입니다 !!!
틱 토크 제작을위한 71MB ...?!
그래서 코드 골프가 마음에 들었고 여러분 중 일부가 이것을 향상시킬 수 있는지 궁금합니다.

도전

소리를내는 코드를 골라주세요. 어떤 종류의 소리와는 관련이 없습니다. 필요한 경우 일부 사운드 파일을 생성하지만 시스템 경고음도 작동합니다. ( 내가 만든 소리가 있습니다 ... 특별한 것은 없습니다. )

입력 : 메트로놈 출력의 분당 비트 수.

예

이것은 골프가 아닌 Java 버전입니다! 작업을 보여주기 위해서입니다.

public class Metronome {
  public static void main(String[] args) throws InterruptedException {
    int bpm = Integer.valueOf(args[0]);
    int interval = 60000 / bpm;

    while(true) {
        java.awt.Toolkit.getDefaultToolkit().beep();
        // or start playing the sound
        Thread.sleep(interval);
        System.out.println("Beep!");

    }
  }
}

규칙

외부 라이브러리를 사용할 수 없으며 언어 자체의 도구 만 허용됩니다.
소스 코드의 바이트 만 카운트됩니다 ... 사운드 파일은 아닙니다.

이것은 이므로 바이트 수가 가장 적은 제출이 승리합니다!

편집하다:

예 출력 : 이런 일이에 대한 출력 될 것이다 그래서 120 BPS : 링크


1
I / O에 대한 몇 가지 예를 추가 할 수 있습니까 (소리를 녹음하고 업로드하고 여기에 링크를 게시하십시오)?
— 애디슨 크럼

2
질문 : "외부 라이브러리"라고 말하면 언어로 제안 된 라이브러리가 포함됩니까? (이것을 사용하지는 않지만 Vitsy에 쉘이나 JS에 액세스 할 수있는 예제가 있지만 JS가 내장되어 있음)
— Addison Crump

3
리더 보드 스 니펫 을 추가 할 수 있습니까 ?
— 애디슨 크럼

1
다운로드 한 앱의 대부분이 예쁜 그래픽과 사운드 효과라고 생각합니다. 마치 화면을 모두 흰색으로 돌리지 만 수십 MB를 계속 사용하는 손전등 앱과 같습니다.
— Darrel Hoffman

1
정확성에 대한 요구 사항은 무엇입니까? 샘플에서 beep()콘솔 출력은 모두 IIRC와 정확히 일치하지 않습니다. sleep()정확한 꿀벌로 도 알려져 있지 않습니다 .
— Num Lock

답변:


19

Mathematica, 26 바이트

Pause[Beep[];60/#]~Do~∞&

Do일반적으로 사용되는 좁은 의미에서 루프 "를"각 코드의이 부분을 반복 i에서 x에 y... 또는 단지 코드의 조각 반복 n번. 숫자 대신 n무한 루프를 만들 수 있지만 무한대를 줄 수 있습니다. 루프 본문은 Pause[Beep[];60/#]기입 단지 golfy 방법 인 기능 인자이다.Beep[];Pause[60/#]#

솔루션이 결국 호출 스택을 폭파시킬 수 있다면 재귀 솔루션으로 1 바이트를 절약 할 수 있습니다.

#0[Beep[];Pause[60/#];#]&

나는 그것이 ~Do~∞가능하다는 것을 몰랐다 . For루프는 29 바이트로 저를 얻었다. (또한 개인적으로 26 바이트 버전이 유일하게 유효한 것으로 생각합니다.)
— LegionMammal978

@ LegionMammal978 불행히도 변수 ~Do~∞에서 ∞올 때 작동하지 않는 것 같습니다 . (나는 당신의 진실 기계를 골프를 칠 때 그것을 사용해 보았습니다.)
— Martin Ender

1
Attributes[Do]포함 HoldAll, 그래서 내 생각 엔 _~Do~∞특별한 평가 패턴이 있습니다.
— LegionMammal978

@ LegionMammal978에 대한 오류 메시지가 있기 때문에 변수는, 더 많은 일 것 같아 Do[...,a]어디 a무한 보유가 실제로 전화를 보여줍니다 Do[...,{a}].
— Martin Ender

14

Pyth, 11 10 9 바이트

에 대해 알려 주신 Adnan 에게 감사합니다 #.

#C7.dc60Q

영원히 ( #), Char 코드를 인쇄하십시오 7. 그런 다음 휴면 ( .d) 60초를 ( c) 입력 ( Q) 으로 나눈 값 입니다.


@Adnan 잊어 버렸습니다. 감사.
— PurkkaKoodari

공간이 필요하십니까?
— lirtosiast

@ThomasKwa 네. IIRC 7.는 숫자로 구문 분석됩니다.
— Conor O'Brien

5
오. #pythnoob
— 코너 O'Brien

2
내가 시도했을 때 .d를 자지 못했습니다. 그것은 인쇄 유닉스 시간 유지
— busukxuan

8

자바 스크립트, 36 45 42 41 34 바이트

@RikerW 덕분에 1 바이트 절약

@ETHproductions 덕분에 1 바이트 절약

n=>{for(;;sleep(60/n))print("\7")}

이것은 기능입니다.

를 사용 `\7`하면 SpiderMonkey가 8 진 리터럴이 더 이상 사용되지 않는다고 불평합니다.

대안, 31 바이트

n=>{for(;;sleep(60/n))print``}

문제는 인쇄 할 수없는 파일이 제거되었지만 작동하는 것입니다.


젠장, 난 그냥 이런 식으로 게시하려고했다. 다른 접근 방식을 사용하기 때문에 여전히 노드와 모두를 사용하기 때문에 게시 할 것입니다.
— 애디슨 크럼

내가 질문 한 방식에서 그것을 본다면 재귀 솔루션은 불가능합니다. 메트로놈은 작업과 작업을 위해 만들어졌으며 일정 시간이 지나면 충돌하지 않습니다.
— PEAR

@PEAR 변수가 증가하지 않기 때문에 충돌이 발생하지 않습니다. 충돌을 일으킬 수있는 유일한 것은 내가 생각 걸릴 수도 최신 컴퓨터> 50-100년을 제외하고 터미널 버퍼입니다
— Downgoat

어떤 환경에서 운영됩니까? chrome과 Node.js를 시도했지만 작동하지 않습니다.
— starbeamrainbowlabs

@starbeamrainbowlabs 이것은 자바 스크립트 쉘 (SpiderMonkey)을 사용합니다
— Downgoat

8

배쉬, 53 55 41 바이트

14 바이트 를 면도 해주신 @Dennis에게 감사 합니다 1

좋아, 진실 시간 : 나는 골프 배쉬에 끔찍하다. 어떤 도움이라도 대단히 감사하겠습니다.

echo " ";sleep `bc -l<<<60/$1`;exec $0 $1
      ^ That's ASCII char 7

신성 쓰레기 1 개 아무도 데니스를 능가 할 수 있습니다.


가 while 1가능?
— PEAR

@PEAR Nupe-이미 시도했습니다.
— Addison Crump

while printf \\a혹시?
— Neil

bash가 정수 나누기를 사용하기 때문에 작동하지 않습니다. 을 사용해야 bc합니다.
— 스파게티

1. BEL 문자는 Bash에 특별하지 않으므로 따옴표가 필요하지 않습니다. 2. 입력을 CLA로 읽는 경우 필요하지 않습니다 read. 3. echo코드 0과 함께 존재하므로 대신 해당 명령문을 사용할 수 있습니다 true.
— Dennis

7

자바 스크립트 ES6 (브라우저), 43 바이트

이것은 규칙을 확장시킬 수 있습니다.

x=>setInterval('new Audio(1).play()',6e4/x)

이 기능에 이름 (예 F=x=>...:)을 지정 하고이 페이지 의 브라우저 콘솔에 입력 하십시오 . 그런 다음 bps를 사용하여 함수를 호출하고 F(60)마술이 일어날 때까지 기다리십시오. :-)

왜 이것이 작동합니까? 음, OP의 샘플 사운드 파일 인 b.html이라는 파일과 같은 폴더에 1있습니다. 이것이 규칙 내에 있는지 확실하지 않습니다 (쉘 버전과 비슷하다고 생각합니다. 특정 환경에서 실행해야합니다).

보다 안전한 버전, 57 바이트

위의 코드가 어떤 이유로 든 허용되지 않으면 대신 다음을 시도하십시오.

x=>setInterval('new Audio("//ow.ly/Xrnl1").play()',6e4/x)

모든 페이지에서 작동합니다!


이것은 흥미로운 솔루션입니다. 파일을 다운로드하고 이름을 바꿀 때 더 짧습니다.
— PEAR

@PEAR 짧아 지지만 실행하려면 동일한 폴더에 사운드 파일이있는 자체 웹 페이지가 필요합니다.
— ETHproductions

아, JavaScript xD ... 맞아요
— PEAR

@PEAR 거기, 내가 해냈어. 이 새로운 솔루션이 규칙 내에 있습니까?
— ETHproductions

허. 특정 웹 페이지에서 JS임을 지정할 수 있습니다. 기존의 통역사이므로 유효한 언어입니다.
— 애디슨 크럼

6

05AB1E , 31 바이트

암호:

I60s/[7ç?D.etime.sleep(#.pop())

N 초 동안 대기하는 내장 기능이 있으면 11 바이트 일 수 있습니다. 불행히도, 그렇지 않습니다. 설명은 다음과 같습니다.

I                               # Push input
 60                             # Push 60
   s                            # Swap the top 2 items
    /                           # Divide the top 2 items
     [                          # Infinite loop
      7ç                        # Push the character \x07
        ?                       # Output it, which give a sound
         .e                     # Evaluate the following as Python code
           time.sleep(       )  # Wait for N seconds
                      #         # Short for stack
                       .pop()   # Pop the last item

ISO 8859-1 인코딩을 사용합니다.


이 첫 번째 05AB1E 답변 중 하나는이를 보는 것은 매우 이상한 보이는 o.Ô해야 time.sleep하고 .pop()그런 코드의 중간에. ;)
— Kevin Cruijssen

6

osascript, 39 바이트

on run a
repeat
beep
delay 60/a
end
end

말 그대로 beep라는 명령이 있습니까? eeee!

제한된 라이센스로 인해 Mac OS X에서만 실행 가능하지만 실행하려면 다음을 수행하십시오.

osascript -e "on run a
repeat
beep
delay 60/a
end
end" bpm

6

파이썬, 68 67 57 바이트

@FlagAsSpam 덕분에 1 바이트 절약

@Adnan 덕분에 9 바이트 절약

import time
a=input()
while 1:print"\7";time.sleep(60./a)

또한 줄 끝을 UNIX 형식으로 변환 한 후 2 바이트가 덜 걸렸습니다.

이전 버전에서는 실제로 bpm을 명령 줄 인수 (66 바이트)로 사용합니다.

import sys,time
while 1:print"\7";time.sleep(60./int(sys.argv[1]))

4
당신은 할 수 print"\7";없습니까? 확실하지 않지만 작동한다고 확신합니다.
— 애디슨 크럼

@Andan 아니오, input ()은 사용자에게 입력을 요청합니다. 그것이 유효한 입력으로 간주되는지 모르겠습니다. 어쨌든 숫자로의 변환도 필요합니다.
— webwarrior

1
어떻 a=input()및 a교체 int(sys.argv[1])? 필자는 항상 Python 2가 입력을 자동으로 평가하므로 int 변환이 필요하지 않다고 생각했지만 잘못되었을 수 있습니다.
— Adnan

@Andan은 input()실제로 자동 평가를 수행합니다. 그 기능을 잊어 버렸습니다. 그것은 오히려 비유 론적입니다-아마도 옛날의 유산 일 것입니다.
— webwarrior

완전히 제거하면서 time.sleep(60./a)으로 교체 할 수 있습니까 ? time.sleep(60./input())a=input()
— 박수


4

Vitsy, 14 바이트

a6*r/V1m
<wVO7

상세 모드 (인터프리터 예정) :

0:                              // a6*r/V1m
push a; // 10
push 6;
multiply top two; // 60
reverse stack; // bpm on top
divide top two; // bpm/60
save/push permanent variable; 
push 1;
goto top method; // goes to 1
1:                              // <wVO7
go backward; // infinite loop, from the bottom of 1
wait top seconds;
save/push permanent variable; // pushes the bpm in terms of seconds of delay
output top as character;
push 7;

기본적으로 w연산자를 사용하여 bpm/60무한 루프에 싸여 지정된 초 수만큼 기다립니다 . 그런 다음 ASCII 문자 7 ( BEL) 의 터미널 출력으로 노이즈를 발생시킵니다 .


멋져 보이지만 어떻게 테스트 할 수 있습니까? :)
— PEAR

@PEAR 통역사 를 다운로드 해야합니다 (제목에 링크하지 않은 경우). 파일로 저장하고로 실행하십시오 java -jar Vitsy.jar <filename>.
— 애디슨 크럼

4

C #, 118 바이트

class A{static int Main(string[]a){for(;;System.Threading.Thread.Sleep(60000/int.Parse(a[0])))System.Console.Beep();}}

기본 솔루션.


ASCII 문자 7을 인쇄하지 않는 이유는 무엇입니까?
— 애디슨 크럼

@FlagAsSpam 더 길다 : 시스템 경고음은을 사용 System.Console.Beep();하고 문자 인쇄는을 사용합니다 System.Console.Write('<\a character>');.
— LegionMammal978

우와 그것은 문자를 많이 쓰는 것입니다.
— 애디슨 크럼

4

자바, 103 82 바이트

21 바이트를 줄인 @Justin에게 감사드립니다!

오 이런

void x(int b)throws Exception{for(;;Thread.sleep(60000/b))System.out.print('\7');}

샘플 프로그램의 방법 및 골프 버전.


왜 System.out.print('\7');대신에 java.awt.Toolkit.getDefaultToolkit().beep();?
— 저스틴

@Justin \은 정규식 문자를 이스케이프 처리하기위한 것입니다.
— 애디슨 크럼

1
백 슬래시는 이스케이프 시퀀스가 ​​아닙니다. '\7'벨 문자는 인쇄 될 때 소리를냅니다
— Justin

@ 주 스틴 허. 나는 항상 큰 따옴표를 사용할 때 그것에 오류가 발생했습니다. 내 실수. 감사! : D
— Addison Crump

3

GMC-4 머신 코드, 21.5 바이트

GMC-4는 Gakken이라는 회사에서 제공하는 4 비트 컴퓨터로 간단한 명령어 세트와 컴퓨터에서 어셈블리 언어의 원리를 가르칩니다. 이 루틴은 빅 엔디안 10 진수 (즉, 니블 당 1 자리)로를 0x5D통해 데이터 메모리 주소 를 입력합니다 0x5F.

이 알고리즘은 기본적으로 입력을 메모리에 추가하고 최소 600이 될 때까지 0.1을 기다린 다음 무한 루프에서 600을 빼고 신호음을 울립니다. GMC-4에는 많은 레지스터 스왑 기능이 있지만 레지스터 복사 기능은 없기 때문에 어려운 방법입니다.

16 진수 (두 번째 줄은 메모리에 위치) :

A24A14A04 80EC AF5A2EF AE5A1EF AD5A0EF 8A6 F2AF09 86ADEEE9F09
012345678 9ABC DEF0123 4567890 ABCDEF0 123 456789 ABCDEF01234

조립시 :

    tiy 2     ;ld y, 0x2
    AM        ;ld a, [0x50 + y]
    tiy 1
    AM
    tiy 0
    AM
start:
    tia 0     ;ld a, 0x0
    cal timr  ;pause for (a+1)*0.1 seconds
    tiy F
    MA        ;ld [0x50 + y], a
    tiy 2
    cal DEM+  ;add a to [0x50 + y]; convert to decimal and carry.
    tiy E     ;do the same for the second digit
    MA
    tiy 1
    cal DEM+
    tiy D     ;and the third.
    MA
    tiy 0
    cal DEM+
    tia A
    M+
    jump beep
    jump start
beep:
    tia 6
    tiy D
    cal DEM-
    cal SHTS  ;'play short sound'
    jump start

기권:

나는 실제로 GMC-4를 소유하지 않는다. 이 프로그램을 온라인의 문서로 꼼꼼하게 확인했지만 실수했을 수 있습니다. 나는 또한 엔디안을 모른다. GMC-4가 빅 엔디안 인 것처럼 보이지만 확실하지 않습니다. 누구나 GMC-4를 소유하고 있으며 GMC-4의 엔디안을 확인 / 확인할 수 있다면 대단히 감사하겠습니다.


3

C, 48 바이트

void f(int b){while(printf(""))Sleep(60000/b);}
                            ^ literal 0x07 here

Windows 전용 솔루션 (Sleep () 함수)

또한 (ab) printf ()는 무한 루프 조건으로 사용하기 위해 인쇄 된 문자 수를 반환한다는 사실을 사용했습니다.

printf () 호출에서 큰 따옴표 사이에 문자가 있지만 어떤 이유로 여기에 표시되지 않습니다. 의심스러운 경우 Sublime Text 2 또는 Notepad ++에 복사하여 붙여 넣으면 문자가로 표시됩니다 BEL.

이것은 C ++ 솔루션으로 시작하지만 좀 C의 C-부분 집합으로 떨어졌다 ++ (당신이 알고 있기 때문에하는 것은 Sleep()조금보다 짧은 std::this_thread::sleep_for(std::chrono::milliseconds())등) printf()보다는 짧은 std::cout<<).


3

AppleScript 94 바이트

나는 내가 꽤 늦었다는 것을 알고있다. 그리고 이것은 나의 첫번째 포스트 다. 그러나 무엇이든.

디스플레이 대화창 ""기본 답변 ""
x를 60000으로 설정 / 결과 텍스트 반환
반복
삑 하는 소리
지연 x
종료

언 골프 드 :

디스플레이 대화 상자 ""기본 답변 ""
x를 60000으로 설정 / (결과 텍스트 반환)
반복
    삑 하는 소리
    지연 x
끝 반복

이봐, 새로운 답변 :) 불행히도 나는 Mac이 없다면 당신의 게시물을 시험해 볼 수 없습니다;)-그러나 감사합니다
— PEAR

@PEAR 천만에요. :)
— 당신은

프로그래밍 퍼즐과 코드 골프에 오신 것을 환영합니다. 좋은 대답입니다, +1 계속 답하십시오!
— wizzwizz4

2

VBScript, 113 66 바이트

a=InputBox("")
Do
WScript.Echo(Chr(7))
WScript.Sleep(60000/a)
Loop

이 프로그램은 충분히 간단합니다. 입력을 받고 BEL 문자를 반향하고 기다립니다. 프로그램의 거의 절반을 면도 해주신 Niel에게 감사드립니다!


무슨 일이야 WScript.Echo CHR(7)? 또한, 당신은 의미 60000했습니까?
— Neil

@ 닐 아, 예. 그것들을 잊었다.;
— Conor O'Brien

2

루비, 37 33 바이트

m=->b{loop{puts"\7"
sleep 6e1/b}}

꽤 직설적 인.

이것은 람다 함수입니다. 60bpm을 원하면 다음을 수행하십시오 m[60]..


이론적으로 $><<?\a경고음도 작동해야합니다. 그리고 proc의 이름을 지정할 필요가 없습니다 (뚱뚱한 화살표 기능을 가진 모든 JavaScript 솔루션도 할당되지 않은 채로 둡니다) ->b{loop{$><<?\a;sleep 6e1/b}}[60]. 익명으로도 호출 할 수 있습니다 .
— manatwork

@manatwork 루비 2.x 만 가지고 있으므로 테스트 할 수 없습니다 ?\a. Ruby 1.x가 있습니까? 그렇다면 이것이 작동하는지 테스트 할 수 있습니까?
— Justin

글쎄, 나는 Ruby 1.9.3을 가지고 있으며 코드는 오류가 발생하지 않습니다. 그러나 테스트에 또 다른 문제가 있습니다. 시스템에서 경고음이 들리지 않습니다. 루비 나 다른 것도 없습니다. 무엇을 한 번만 설정하십시오.
— manatwork

2

apt, 30 바이트

6e4/U i`?w Au¹o('../1').play()

는 ?문자 그대로 바이트해야한다 9A. 온라인으로 테스트하십시오! (처음 몇 비트를 지연시키는 팝업이 유감입니다. 곧 제거 될 예정입니다.)

작동 원리

6e4/U i"new Audio('../1').play()  // Implicit: U = input bps
6e4/U                             // Calculate 60000 / U.
      i                           // Set a timed event every that many milliseconds,
       "new Audio('../1').play()  // running this code every time.
                                  // ../1 is the path to the file used in my JS entry.

2

볼거리, 18 바이트

R I F  H 60/I W *7

BPM을 변수 I로 읽은 후 F {다음에 두 공백 사용}는 무한 루프입니다. 60 초 / BPM 동안 정지 한 다음 $ CHR (7) {Ascii : BEL}을 표준 출력에 기록하여 필요한 오디오 출력을 제공 한 다음 무한 루프에서 다시 시작하십시오.


2

자바, 321 자

아주 좋은 데요 MIDI를 지원하는 시스템에서만 작동합니다.

import javax.sound.midi.*;import java.util.*;class A{public static void main(String[] a) throws Exception{int d=new Scanner(System.in).nextInt();Synthesizer b=MidiSystem.getSynthesizer();b.open();MidiChannel c=b.getChannels()[0];c.programChange(116);while(true){c.noteOn(0,100);Thread.sleep((int)(d/.06));c.noteOff(0);}}}

.


외모의 좋은,하지만 이것은 나를 위해 작동하지 않습니다 : pastebin.com/0CbGYkU0
— PEAR

@PEAR가 수정되었습니다. 나는 캐스트를 잊었다.
— username.ak

@PEAR and import
— username.ak

@PEAR, 소리가 나지 않아 일부 작전을 교환했습니다
— username.ak

2

ChucK , 90 바이트

두 틱마다 켜고 끄는 화이트 노이즈.

60./Std.atoi(me.arg(0))*1000=>float s;while(1){Noise b=>dac;s::ms=>now;b=<dac;s::ms=>now;}

설명

60./Std.atoi(me.arg(0)) //Convert the input to an int and divide 60 by it
*1000                   //Multiply by 1000 (in order to avoid s::second)
=>float s;              //Store it as a float in variable s
while(1)                //Forever,
{Noise b=>dac;          //Connect a noise generator b to the audio output
s::ms=>now;             //Wait for s milliseconds
b=<dac;                 //Disconnect b from the audio output
s::ms=>now;}            //Wait for s milliseconds

비트에서 사운드를 켠 다음 비트에서 끄도록 설정됩니다.

98 93 바이트 버전 (fancier)

화이트 노이즈가 틱당 10 밀리 초 동안 재생되었습니다.

60./Std.atoi(me.arg(0))*1000-9=>float s;while(1){Noise b=>dac;10::ms=>now;b=<dac;s::ms=>now;}

이것은 일정한 소음을 켜고 끄는 대신 클릭으로 만들어졌습니다.


2

펄 5, 36 바이트

{{$|=print"\a";sleep 60/$_[0];redo}}

서브 루틴; 로 사용

sub{{$|=print"\a";sleep 60/$_[0];redo}}->(21)

sleep초 단위이므로 분당 60 회 이상 경고음을 울릴 수 없습니다 (필요한지 확실하지 않음). 또한 동일한 바이트 수를 유지할 수는 있지만 다음과 같은 작업을 수행하여 전체 프로그램을 가질 $|=<>;{print"\a";sleep 60/$|;redo}수 있습니다 (지금은 테스트 할 수 없음).
— ChatterOne

문서에 따르면 @ChatterOne이 맞습니다 sleep. 그러나 그것은 나를 위해 일했습니다.
— msh210

1

Jolf, 7 바이트, 비경쟁

이 매우 훌륭한 도전을 한 후에 소리를 추가했습니다.

TΑa/Αaj
T       set an interval
 Αa      that plays a short beep (Α is Alpha)
   /Αaj  every 60000 / j (the input) seconds. (Αa returns 60000)

이 소리를 지우려면 출력에주의하십시오. 그 숫자가이라고 가정하십시오 x. 다른 Jolf 명령을 실행 ~CP"x"하면 간격이 지워집니다.


1

Zsh , 32 바이트

<<<$'\a'
sleep $[60./$1]
. $0 $1

선행 bash 답변을 기반으로하지만 sources 대신 execs를 사용합니다. $0:a원본 파일이 실행되는 방식으로 인해 TIO 링크 소스 가 있지만 파일이 없으면 작동합니다.

온라인으로 사용해보십시오!


당신은 파티에 늦었지만 이것은 정말 훌륭한 해결책처럼 보입니다!
— PEAR

나는 늦었다는 것을 알고있다. 그러나 나는 오늘 골프와 같은 느낌이 들었다. 재미를 위해 음악 태그를 확인하기로 결정 하고이 도전을 발견했습니다. 좋은 하나, btw!
— GammaFunction

0

Bash + bc + > <> , 44 바이트

> <> 인터프리터를 사용하면 틱 시간을 정의 할 수 있습니다.

python fish.py -t $(bc -l<<<"2/$1/60") -c 7o

> <> 코드는 문자를 7o출력 BEL하며 시스템 경고음을 발생시킵니다. 중단 될 때까지 반복됩니다.
이 -t값은 (2 / RPM) / 60으로 설정되어 전체 코드가 RPM * 초당 60 회 재생됩니다.


게시 후 일정 시간이 지난 후 새로운 답변을 보내 주셔서 감사합니다. 작동하지 않습니다 :( 시스템 또는 다른 문제가 있는지 확실하지 않습니다. GitHub에서 fish.py를 다운로드하여 commad (openSUSE)를 실행했습니다.이 오류가 발생했습니다 : (standard_in) 1 : 구문 오류 사용법 : fish .py [-h] (<스크립트 파일> | -c <code>) [<options>] fish.py : 오류 : argument -t /-tick : 하나의 인수가 예상 됨
— PEAR

당신이 가지고 bc설치되어 있습니까? $(bc -l<<<"2/$1/60")출력을 생성하지 않은 것 같습니다 . 대답의 언어 목록에 추가하겠습니다. 아직 답변을 완전히 테스트 할 수 없었기 때문에 어떤 종류의 오류도있을 수 있습니다.
— Aaron

0

SmileBASIC, 26 바이트

INPUT B$BGMPLAY@8T+B$+"[C]

9 개 이상이면 더 많은 바이트를 사용하지만 모든 일반 미디 악기를 재생할 수 있습니다.


0

Stax, 17 바이트

ü7»♥O╚⌂╥☻≈OyM╜Δ∩`

또는 포장 풀기 :

4|A48*x/W2|A]pc{| }*

프로그램은 명령 행 도구를 통해 기본 설정으로 재생 될 때 메트로놈 노이즈를 생성하는 바이트를 출력합니다. 입력은 bpm으로 사용됩니다

예:

example-stax-interpreter metronome.stax -i "60" | aplay

원하는 bpm에서 끔찍한 경고음이 들립니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.