Bir Metronom Bina


36

Giriş

Birkaç gün önce bir şey için bir metronom gerekli. Hiçbiri müsait değildi, bu yüzden App Store'dan bir uygulama indirdim. Uygulamaya 71 MB büyüklüğünde !!!
Tic-toc yapmak için 71 MB ...?!
Kod golf aklıma geldi ve bazılarınızın bunu iyileştirip iyileştiremeyeceğini merak ediyordum.

Meydan okuma

Bazı sesler veren bir kod yaz. Ne tür bir ses olduğu oldukça ilgisiz. Gerekirse bir miktar ses dosyası oluşturun ... ancak bir Sistem bip sesi de işi yapacak. ( İşte yarattığım bazı sesler ... özel bir şey değil. )

Giriş : Metronomun çıkışını dakikadaki vuruş sayısı.

Örnek

Bu, golf oynamayan bir Java sürümüdür! Sadece sana görevi göstermek için.

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!");

    }
  }
}

kurallar

Harici kütüphaneleri kullanamazsınız, sadece dilin araçlarına izin verilir.
Sadece kaynak kodun baytları sayılır ... ses dosyası değil.

Bu , bu yüzden en az sayıda bayt olan gönderim kazanıyor!

DÜZENLE:

Örnek çıktı: Yani bunun gibi bir şey 120 bps çıktısı olacak : link


1
G / Ç için birkaç örnek ekleyebilir misiniz (biraz ses kaydedin ve yükleyin, bağlantıları buraya yazın)?
Addison Crump,

2
Soru: "dış kütüphaneler" derken, bu dille önerilen kütüphaneleri içeriyor mu? (Bunu kullanmayacağım, fakat bir örnek Vitsy'de, kabuk veya JS'ye erişebiliyorum (ancak JS yerleşiktir))
Addison Crump,

3
Bir afiş pasajı ekleyebilir misiniz ?
Addison Crump,

1
İndirdiğiniz uygulamanın çoğunluğunun güzel grafikler ve ses efektleri olduğunu düşünüyorum. Ekranı tamamen beyaza döndüren fakat yine de bir düzine MB
harcayan kartı

1
Doğruluk şartı nedir? Örneğinizde, hem beep()konsol çıkışı hem de tam olarak IIRC değil. İkisi sleep()de arı yetiştiriciliği için bilinmemektedir.
Num Lock

Yanıtlar:


19

Mathematica, 26 bayt

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

Donormalde "for" döngüsünde en dar anlamıyla kullanılır: bu kod parçasını her biri için ... ' idan tekrarlayın, hatta sadece bu kod zamanlarını tekrarlayın . Bir sayı yerine sonsuz bir döngü oluşturmak için sonsuzluk verebiliriz. Döngü gövdesi, fonksiyon argümanının bulunduğu yazının sadece golflü bir şeklidir .xynnPause[Beep[];60/#]Beep[];Pause[60/#]#

Çözümün sonunda arama yığınını havaya uçurması kabul edilirse, özyinelemeli bir çözümle bir bayttan tasarruf edebiliriz:

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

Bunun ~Do~∞mümkün olduğunu bilmiyordum . Bir Fordöngü sadece 29 bayta ulaştı. (Ayrıca, şahsen 26 bayt sürümünün tek geçerli sürüm olduğuna inanıyorum.)
LegionMammal978

@ LegionMammal978 Ne yazık ki, bir değişkenden geldiğinde ~Do~∞işe görünmüyor . (Gerçeği makinenizi golf yaparken kullanmaya çalıştım.)
Martin Ender

1
Attributes[Do]içerir HoldAll, bu yüzden benim tahminim, _~Do~∞özel bir değerlendirme düzenine sahip olmasıdır.
LegionMammal978

@ LegionMammal978 Değişkenler gibi gözüküyor, çünkü sonsuzluğun Do[...,a]olduğu yerdeki hata mesajı aaslında çağrıyı gösteriyor Do[...,{a}].
Martin Ender

14

Pyth, 11 10 9 bayt

Bana hatırlattığın için Adnan'a teşekkür ederim #.

#C7.dc60Q

Sonsuza dek ( #), Char kodunu yaz 7. Sonra uyku ( .d) 60saniye bölü ( c) girişi ( Q).


@Adnan Bunu unuttum. Teşekkürler.
PurkkaKoodari

Boşluğa ihtiyacınız var mı?
lirtosiast

@ThomasKwa Evet. IIRC 7.bir sayı olarak ayrıştırılır.
Conor O'Brien

5
Ah. #pythnoob
Conor O'Brien

2
Denedim .d uyuyamadım. Unix zamanını basmaya devam etti
busukxuan

8

JavaScript, 36 45 42 41 34 bayt

@RikerW sayesinde 1 bayt kaydedildi

@ETHproductions sayesinde 1 bayt kaydedildi

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

Bu bir fonksiyondur.

Eğer kullanırsam `\7`, SpiderMonkey, sekizli değişmezlerin kullanımdan kaldırıldığından şikayet ediyor.

Alternatif, 31 bayt

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

Sorun yazdırılamaz olanların soyulmasıdır, ancak bu çalışması gerekir.


Kahretsin, böyle bir şey göndermek üzereydim. Hala göndereceğim (çünkü node ve hepsini kullanıyor) çünkü farklı bir yaklaşım kullanıyorum.
Addison Crump,

Soruyu sorma biçimimden bakarsanız özyinelemeli çözüm mümkün olmazdı. Metronomlar çalışmak ve çalışmak için üretildi ... bir süre sonra çökmek için değil.
PEAR

@PEAR bu çökmemelidir, çünkü değişken değişmez. Kazasında çalışmasına neden olabilecek tek şey bence sürebilir Modern bilgisayarlar> 50-100 yıl hariç, terminal tampon
Downgoat

Bu hangi ortamda çalışıyor? Chrome ve Node.js'yi denedim, ancak çalışmasını sağlayamıyorum.
starbeamrainbowlabs

@starbeamrainbowlabs bu JavaScript kabuğunu kullanır (SpiderMonkey)
Downgoat

8

Bash, 53 55 41 bayt

14 bayt tıraş için @Dennis teşekkürler 1

Tamam, gerçek zaman: Golf sahasında berbatım. Herhangi bir yardım çok çok takdir edilecektir.

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

1 Kutsal bok. Hiç kimsenin Dennis'i alamayacağına şaşmamalı.


while 1mümkün?
PEAR

@PEAR Nupe - zaten denedim.
Addison Crump,

while printf \\abelki?
Neil

Bu bash tamsayıyı kullandığı için çalışmaz. Kullanman gerekecek bc.
Bir spaghetto

1. BEL karakteri Bash için özel değildir, bu yüzden alıntılara ihtiyacınız yoktur. 2. Girişi bir CLA olarak okursanız, ihtiyacınız yoktur read. 3. echo0 koduyla var olduğundan, bu ifadeyi yerine kullanabilirsiniz true.
Dennis

7

JavaScript ES6 (tarayıcı), 43 bayt

Bu kurallara uyuyor olabilir:

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

Bu işleve bir isim verin (örn. F=x=>...) Ve bu sayfadaki tarayıcı konsoluna girin . Ardından fonksiyonu örneğin bps'inizle çağırın ve F(60)sihrin gerçekleşmesini bekleyin. :-)

Bu neden işe yarıyor? Peki, OP'den gelen örnek ses dosyası olan b.htmlbir dosya ile aynı klasördedir 1. Bunun kurallar dahilinde olup olmadığından emin değilim (sanırım kabuk versiyonu gibi; belirli bir ortamda çalıştırılması gerekiyor), ancak çekmeye değerdi.

Daha güvenli sürüm, 57 bayt

Yukarıdaki koda bir nedenden dolayı izin verilmiyorsa, bunun yerine şunu deneyin:

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

Herhangi bir sayfada çalışıyor!


Bu ilginç bir çözümdür. Dosyayı indirip yeniden adlandırdığınızda daha da kısa, değil mi?
PEAR

@PEAR Daha kısa olacaktır, ancak daha sonra çalıştırmak için aynı klasördeki ses dosyasıyla kendi web sayfasına ihtiyaç duyacaktır.
ETHProductions

Oh, bu JavaScript xD ... haklısın
PEAR

@PEAR Orada yaptım. Bu yeni çözüm kurallar dahilinde mi?
ETHProductions

Huh. Bunun belirli bir web sayfasının JS olduğunu belirtebilirsiniz. Bu önceden varolan bir tercüman, bu yüzden geçerli bir dil.
Addison Crump,

6

05AB1E , 31 bayt

Kod:

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

N saniye beklemek için yerleşik bir sistemim olsaydı, bu 11 byte olabilirdi. Ne yazık ki, bu böyle değil. İşte açıklama:

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 kodlamasını kullanır.


Bu, ilk 05AB1E cevapları biri olduğunu görmek çok garip görünüyor o.o olmalı time.sleepve .pop()bunun gibi kod ortasında. ;)
Kevin Cruijssen

6

osascript, 39 bayt

on run a
repeat
beep
delay 60/a
end
end

Kelimenin tam anlamıyla bip denilen bir komut var mı? Sweeeet!

Yalnızca sınırlı lisans nedeniyle Mac OS X'te çalıştırılabilir, ancak çalıştırılması için:

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

6

Python, 68 67 57 bayt

@FlagAsSpam sayesinde 1 bayt kaydedildi

@Adnan sayesinde 9 bayt kaydedildi

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

Ayrıca satır sonlarını UNIX biçimine dönüştürdükten sonra 2 bayt daha az zaman aldı.

Eski sürüm, aslında bpm'yi komut satırı argümanı (66 bayt) olarak alıyor:

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

4
Yapamaz print"\7";mısın Emin değilim, ama işe yaradığından eminim.
Addison Crump,

@Andan Hayır, input () kullanıcıdan girdi ister. Bunun geçerli bir girdi olarak kabul edilip edilmediğini bilmiyorum. Ayrıca yine de sayıya dönüşüm gereklidir.
savaşçısı

1
Nasıl hakkında a=input()ve adeğiştirilmesi int(sys.argv[1])? Her zaman Python 2'nin girişi otomatik olarak değerlendirdiğini ve bu nedenle int dönüşümüne ihtiyaç duymadığını düşündüm, ancak hatalı olabilirim.
Adnan

@Andan input()aslında otomatik değerlendirme yapar. Bu özelliği unuttum. Oldukça unpythonic olsa - muhtemelen eski zamanlardan kalma bir miras.
savaşçısı

Can time.sleep(60./a)ile değiştirilmesi time.sleep(60./input())tamamen kaldırılırken, a=input()?
alkış


4

Vitsy, 14 bayt

a6*r/V1m
<wVO7

Ayrıntılı mod (tercüman yakında):

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;

Temel olarak, woperatörü bpm/60, sonsuz bir döngüye sarılı, belirtildiği gibi belirli sayıda saniye beklemek için kullanırım . Ardından, ASCII karakteri 7 ( BEL) terminal çıkışı ile gürültü yapıyorum .


Güzel görünüyor, ama bunu nasıl test edebilirim? :)
PEAR

@PEAR Tercümanı indirmeniz gerekir (başlığa bağlanmayı unuttum). Bir dosyaya kaydedin ve ile çalıştırın java -jar Vitsy.jar <filename>.
Addison Crump,

4

C #, 118 bayt

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

Temel çözüm


Neden ASCII char 7'yi yazdırmıyorsunuz?
Addison Crump,

@FlagAsSpam Daha uzun: Sistem bip kullanıyor System.Console.Beep();ve karakter kullanıyor yazdırıyor System.Console.Write('<\a character>');.
LegionMammal978

Woah. Bir karakter yazmak için çok fazla.
Addison Crump,

4

Java, 103 82 bayt

@Justin'e 21 byte tıraş için teşekkürler!

Aman Tanrım.

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

Örnek programın metodu ve golf versiyonu.


Neden System.out.print('\7');yerine java.awt.Toolkit.getDefaultToolkit().beep();?
Justin

@Justin \ yalnızca regex karakterlerinden kaçmak içindir.
Addison Crump

1
hayır ters eğik çizgi bir kaçış dizisidir. '\7'basıldığında ses çıkaran çan karakteridir
Justin

@Justin Huh. Ben her zaman bu konuda hatalar attı (çift tırnak kullanırken). Benim hatam. Teşekkürler! : D
Addison Crump,

3

GMC-4 Makine Kodu, 21.5 bayt

GMC-4, basitleştirilmiş bir talimat setinde ve bilgisayarında assembly dilinin ilkelerini öğretmek için Gakken adlı bir şirket tarafından kullanılan 4 bit bir bilgisayardır. Bu rutin veri hafızası adreslerinde girdi alır 0x5Daracılığıyla 0x5Fbüyük endian onlu, (kemirmek başına bir basamak olduğunu) gösterir.

Algoritma temel olarak girdiyi belleğe ekler ve en az 600 olana kadar 0.1 saniye bekler ve ardından 600'ü çıkarır ve sonsuz bir döngüde bip sesi çıkarır. GMC-4 bir grup yazmaç değiştirme fonksiyonuna sahip olduğu halde kayıt kopyalama fonksiyonuna sahip olmadığı için bu zor yoldan yapılır.

Onaltılı (ikinci satır bellekteki konumdur):

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

Montajda:

    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

Yasal Uyarı:

Aslında bir GMC-4'üm yok. Bu programı çevrimiçi olarak belgelerle titizlikle kontrol ettim, ancak bir hata yapmış olabilirim. Ben de endianness bilmiyorum. GMC-4 büyük-endian gibi görünüyor, ama emin değilim. Biri GMC-4’e sahipse ve bunu doğrularsa / bana GMC-4’ün doğruluğunu söylerse çok minnettar olurum.


3

C, 48 bayt

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

Yalnızca Windows çözümü (Sleep () işlevi, belirli olması).

Ayrıca (ab), printf () öğesinin sonsuz döngü koşulu olarak kullanmak için yazdırılan karakter sayısını döndürdüğü gerçeğini kullandım.

Printf () çağrısında çift tırnak arasında bir karakter var, ancak bazı nedenlerden dolayı burada görüntülenmiyor. Şüphe durumunda, kopyalayıp Sublime Text 2 veya Notepad ++ içine yapıştırın, karakter olarak görüntülenecektir BEL.

Bu bir C ++ çözümü olarak başladı, ancak C ++ 'ın C-alt kümesine düştü (çünkü bildiğinizden Sleep()biraz daha kısadır std::this_thread::sleep_for(std::chrono::milliseconds())) ve printf()bundan daha kısadır std::cout<<.


3

AppleScript 94 bayt

Biliyorum çok geç kaldım ve burası benim ilk görevim, ama her neyse.

"" varsayılan cevap "" iletişim kutusunu görüntüle
x 60000 / sonuç metnine döndürüldü
tekrar et
bip
gecikme x
son

Ungolfed:

"" varsayılan cevap "" iletişim kutusunu görüntüle
x'i 60000 olarak ayarla / (sonucun metni döndürüldü)
tekrar et
    bip
    gecikme x
tekrarı bitir

Hey, yeni cevaplar :) Maalesef, Mac'im yoksa yazınızı deneyemiyorum;) - ama çok teşekkürler
PEAR

@PEAR Bir şey değil. :)
Siz

Programming Puzzles ve Code Golf'a hoş geldiniz. Bu iyi bir cevap, +1. Lütfen cevap vermeye devam edin!
wizzwizz4

2

VBScript, 113 66 bayt

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

Bu program yeterince basit; girdi alır, BEL karakterini tekrarlar ve bekler. Programın neredeyse yarısını tamamladığı için Niel'e teşekkürler!


Neyin var WScript.Echo CHR(7)? Ayrıca demek istedin 60000mi?
Neil

@Neil Ah, evet. Bunları unuttum .;
Conor O'Brien

2

Ruby, 37 33 bayt

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

Oldukça basit.

Bu bir lambda işlevidir. 60 bpm istiyorsan tek yaparım: m[60].


Teorik $><<?\aolarak bip sesi için de çalışılmalıdır. Ve gerek senin yordam için bir isim vermek, çok anonim diyebilirsiniz (yağ ok fonksiyonu ile tüm JavaScript çözümleri de atanmamış bırakın): ->b{loop{$><<?\a;sleep 6e1/b}}[60].
Manatwork

@ manatwork Sadece Ruby 2.x'e sahibim, bu yüzden test edemedim ?\a; Ruby 1.x'in var mı? Eğer öyleyse, bunun çalıştığını test edebilir misiniz?
Justin

Pekala, bir Ruby 1.9.3'üm var ve kodda hata yok. Ancak testlerde başka bir sorunum var: makinemde bip sesi yok. Ne Ruby, ne de başka bir şey. Bir kere bir şey ayarla, ne olduğu hakkında hiçbir fikrim yok.
Manatwork

2

Japt, 30 bayt

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

Bu ?değişmez bayt olmalıdır 9A. Çevrimiçi test edin! (İlk birkaç atışı geciktiren pop-up için üzgünüm; bu kısa süre sonra kaldırılacak.)

Nasıl çalışır

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

Kabakulak, 18 bayt

R I F  H 60/I W *7

BPM değişkenini I değişkenine okuyunuz, ardından F {} 'den sonra iki boşluklu bir sonsuz döngüdür. 60 saniye boyunca durdurun / BPM, daha sonra standart çıkışa $ CHR (7) {Ascii: BEL} yazın, gereken ses çıkışını verin, sonra sonsuz döngüde yeniden başlatın.


2

Java, 321 karakter

Çok iyi geliyor. Yalnızca MIDI destekli sistemlerde çalışır.

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);}}}

.


Güzel görünüyor, ama bu benim için işe yaramıyor: pastebin.com/0CbGYkU0
PEAR

@PEAR düzeltildi. Bir oyuncu almayı unuttum.
username.ak

@PEAR ve bir ithalat
username.ak

@PEAR, ses olmadığı için bazı işlemlerim vardı
username.ak

2

ChucK , 90 bayt

Her iki kenenin açılıp kapandığı beyaz gürültü.

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

açıklama

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

Bu, bir vuruşta sesi açmak için, ardından da vuruşta açmak için yapılır.

98 93 bayt sürümü (meraklısı)

Beyaz ses, kene başına 10 milisaniye boyunca oynanır.

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

Bu, sürekli gürültünün açılıp kapatılması yerine bir tıklamayla yapılır.


2

Perl 5, 36 bayt

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

Bir alt rutin; olarak kullan

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

sleepsaniye cinsinden olduğundan, 60 dakikadan fazla bip sesi alamazsınız, bunun bir gereklilik olduğundan emin değilsiniz. Ayrıca, muhtemelen aynı bayt sayısını koruyabilirsiniz, ancak aşağıdaki gibi bir şey yaparak tam bir programa sahip $|=<>;{print"\a";sleep 60/$|;redo}olabilirsiniz (şu anda test edemezsiniz).
ChatterOne'da

@ChatterOne, belgelerine göre haklısın sleep. Ama benim için çalıştı.
msh210,

1

Jolf, 7 bayt, rekabetçi olmayan

Bu çok güzel bir meydan okuma yapıldıktan sonra sesler ekledim.

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)

Bu sesi silmek istiyorsanız, çıkışı not alın. Diyelim ki bu sayı x. Başka bir Jolf komutu yürütün ~CP"x", aralık silinir.


1

Zsh , 32 bayt

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

Baştaki bash cevabını temel alır, ancak sources yerine execs. TIO bağlantısı $0:a, orijinal dosyanın nasıl yürütüldüğünden kaynaklanıyor, ancak onsuz çalışacak.

Çevrimiçi deneyin!


Partiye geç kaldın ama bu gerçekten iyi bir çözüm gibi görünüyor!
PEAR

Biliyorum geç kaldım ama bugün golf oynamak gibi hissettim. Eğlence için müzik etiketini kontrol etmeye karar verdi ve bu zorluğu buldu. Aferin, btw!
GammaFunction

0

Bash + bc + > <> , 44 bayt

> <> Yorumlayıcısının bir tiklenme süresi tanımlamanıza izin verdiği gerçeğiyle oynamak:

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

> <> Kodu, bir sistem bip sesi çıkartarak karakterin 7oçıktısını alır ve vermelidir BEL. Kesilene kadar döngülenecek. Değeri (2 / RPM) saniyede / 60 yani bütün kod oynanır RPM * 60 defa ayarlanır.
-t


Yayınladıktan bir süre sonra yeni bir cevap için çok teşekkür ederim. Benim için işe yaramıyor :( Sistemimin bir sorunu ya da başka bir sorun olup olmadığından emin değilim. Git.ub'dan fish.py dosyasını indirdim ve commad'inizi (openSUSE) yürüttüm Bu hatayı aldım: .py [-h] (<script dosyası> | -c <code>) [<options>] fish.py: hata: argüman -t / - tick: beklenen bir argüman
PEAR

Eğer var mı bcyüklü? $(bc -l<<<"2/$1/60")Herhangi bir çıktı vermedi gibi görünüyor . Bunu cevabın dil listesine ekleyeceğim. Henüz cevabımı tam olarak test edemedim, bu yüzden de bir tür hata olabilir.
Aaron

0

SmileBASIC, 26 bayt

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

Herhangi bir genel midi enstrümanını çalabilir, ancak 9'un üzerindeki herhangi bir şey daha fazla byte kullanır.


0

Stax, 17 bayt

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

veya paketten çıkarılmış:

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

Program, komut satırı aracı üzerinden varsayılan ayarlara uyulduğunda beslendiğinde metronom gürültüsü meydana getiren baytları verir. Giriş bpm olarak kullanılır

örnek:

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

İstenilen bpm'de korkunç bir bip sesi duymalısınız

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.