ASCIIピアノの音楽クイン


22

標準のピアノには88個のキーがあり、印刷可能なASCII文字は95 個あります(16進コード20〜7E):

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

(「文字」とは、これから印刷可能なASCII文字を指します)

、このJSFiddle Iというの利点を取られ、使用したピアノ曲を生成する単純な構文行ったAudioSynthを(リンク可能な本物のピアノの音のセットに誰かが私を導くことができれば、私は感謝します。)

入力文字列の各文字は、() 01+-ピアノキーに対応しています。

 CHARACTER:  !   "   #   $   %   &   '   *   ,   .   /   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~
KEY NUMBER:  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88
      NOTE:  A  A#   B   C  C#   D  D#   E   F  F#   G  G#   A  A#   B   C  C#   D  D#   E   F  F#   G  G#   A  A#   B   C  C#   D  D#   E   F  F#   G  G#   A  A#   B   C  C#   D  D#   E   F  F#   G  G#   A  A#   B   C  C#   D  D#   E   F  F#   G  G#   A  A#   B   C  C#   D  D#   E   F  F#   G  G#   A  A#   B   C  C#   D  D#   E   F  F#   G  G#   A  A#   B   C
    OCTAVE:  0   0   0   1   1   1   1   1   1   1   1   1   1   1   1   2   2   2   2   2   2   2   2   2   2   2   2   3   3   3   3   3   3   3   3   3   3   3   3   4   4   4   4   4   4   4   4   4   4   4   4   5   5   5   5   5   5   5   5   5   5   5   5   6   6   6   6   6   6   6   6   6   6   6   6   7   7   7   7   7   7   7   7   7   7   7   7   8

したがって、JSFiddleで確認できるプリセットのタイミングパラメーターを使用して、Mary Had a Little LambRPNPRRRの最初の7つのノートを再生します。

スペース()は、1つの音程の間続く休憩を表します。したがってRPNPRRR PPP RUU、メアリーの最初の13音を適切な場所に休符を付けて再生します。

以外の文字の()01前に0'と1'の[01]+シーケンス(regex )が付いている場合、そのシーケンスは2進数bとして読み取られ、文字はそれ自体のb個のコピーに置き換えられます。そう101A11 10+1-0B01CなるAAAAA ++-Cため101= 5、11= 3、等(のシーケンス0「Sはと1」文字列の末尾のSは効果がありません。)

一致した括弧(())は2つの目的を果たします。

  1. その内容は、場合しないの順序で終わる0のと1の、すべてのノートが(それ以外のノートよりも違いはありません)和音と同時に再生されます。だから、(NQU)あるCのマイナー弦オクターブ4には、
    重複したノートは彼らのサウンドにも重複して存在している場合。だから(NN)(NNN)異なる音。
  2. コンテンツ0 'と1'のシーケンスで終了する場合、そのシーケンスは2進数bとして読み取られ、括弧とそのコンテンツはコンテンツのbコピーに置き換えられます。したがって、(NQU11)9つの個別のノートになりますNQUNQUNQU

括弧の詳細:

  • ネスト複製括弧(目的2)は大丈夫です:(N(QU10)11)(NQUQU11)NQUQUNQUQUNQUQU
  • 非複製括弧のネスト(目的1)は問題ありませんが、効果はありません。これ(A((+)C))はと同じ(A+C)です。
  • 両方を組み合わせることもできます:((N(QU10))11)(NQUQU)(NQUQU)(NQUQU)
  • 複製しない括弧の前の ' 01'のシーケンスは、個々の文字が繰り返されるのと同じ方法でそれらを繰り返します。そう10(NQU)なる(NQU)(NQU)
  • 括弧を複製する前0ののシーケンスとのシーケンスは1効果がありません。
  • (常に一致する必要がありますが、)その逆ではありませんN)。たとえば、有効です。

プラス(+)およびマイナス(-)は、それぞれ、コンテキストに応じて、音符の持続時間または音符間の時間間隔を増減します。

  • ときに内部の非複製括弧、彼らはすぐにミリ秒単位のいくつかのプリセット番号(参照により、音符の長さ変数を増減JSFiddleを)。そのため、通常よりも長い時間(++)N再生さNれます。
  • 場合外部非複製括弧、それらはミリ秒のいくつかのプリセット数で次の音符の開始ノートそれの後(及び後続の各間隔)間隔を増加または減少させます。だから、中++NP間の間隔NP通常よりも長くなっています。

音符の持続時間と音符間の時間間隔は0未満にはなりません。

チャレンジ

() 01+-多くのプログラミング言語の多くのコンテキストに無害に配置できるため、私は7つの特殊文字を意図的に選択しました。

あなたの仕事は、コード自体がJSFiddleの入力文字列として使用されたときに最高のサウンドのチューニングを生成する512バイト以下でクインを書くことです。

4つの間隔/期間パラメーターに任意の初期値(非負の整数)を選択できますが、チューニングは10分を超えてはなりません。あなたの曲が特定の楽器で最高に聞こえるかどうかも教えてください。

ルール

  • コードではタブ、改行、および印刷可能なASCIIのみが許可されます。印刷できないASCIIはすべて、曲の作成者によって無視されます。
  • 出力は、ファイルまたはstdoutまたは最も近い代替(たとえば、JSアラート)に送られます。入力はありません。
  • ソースコードの読み取りはありません。それは真の馬でなければなりません。
  • 連続する3つのソース文字を削除すると、プログラムはキインとして機能しなくなります。これは、人々が文字列で良い曲を書かないようにし、それを出力するための小さなクイン部分を確保するためです。
    • あなたのプログラムだったのであればMYCODE、その後MYCMYEMDE、およびODEすべてのquines(彼らは何かをエラーまたは出力可能)であってはなりません。

これは人気のコンテストであり、最も投票数の多い回答が勝ちます。

更新:緩和された最後のルール。


3
あなたも、メアリーは、電話のキーパッド上の子羊を持っていたプレイすることができます:3212333 222 399(それを試して、それが完全に出てきます。)
レベル川セント

ピアノ用の無料のサウンドフォントがたくさんあります。また、素晴らしいJSFiddle!
qwr 14

私は以前、チャレンジで最後のルールを見たことがなく、意図したとおりに効果的だと思います。
ちょうど半分14

@qwr この方法で直接リンクできる88個のキーすべてのセットを知っていますか?少し見えましたが、見つかりませんでした。
カルビンの趣味14

回答:


6

C

私は、ノイズの文字列によって生成ゴロゴロ低気に入って決めた/**/ここだけの興味深いビットを開閉C.ザ・にコメントする方法があることをそれほど偶然である34ため"で置き換えられる35-1(でエンディング1 に意図的に)ひどいコードを避けてください。また、エンディングサウンドをドラマチックにしようとしました。本当にやりました。これを後で編集して、音を少し良くするつもりです。

/**/char*p= "/**/char*p= %c%s%c; int main(){printf(p,34,p,35-1);p++;/**/}/**/";
int main(){printf(p,34,p,35-1);p++;/**/}/**/

ルールを理解するために、コメント化されたセクションは、削除するとクインが失敗するため、最終ルールを引き続き通過します。


3
「これを後で編集して、音を少し良くするつもりです。」ほぼ1年が経ちました。音を良くするために後でこれを編集することはないと思うようになっています。:P
アレックスA.

@AlexA。今から1年以上!
wizzwizz4

5

J

ええ、これがどのように進むか推測できると思います。

かっこなしでJでクールなことをするのは難しく、0と1で終わることはめったにないので、ほとんどのことはキーボードの上下半分に同時に座っているように聞こえます。私はベストを尽くしました、私はあなたに知ってもらうでしょう。

これがピアノのファンキーなベースラインです。作曲に関する最初のことは本当に知りません。ただ馬をつかんで、数字を少しいじりました。

(23 23,~,~i.124+-100){,'(23 23,~,~i.124+-100){,'''

そして、ただ楽しみのために、これをEDMとしてプレイしてください。Japhex Twinと呼んでいます。

".s=:'''".s=:'',''''''''&,@(,&'''''''')@(#~>:@(=&''''''''))s'

あなたはでコードのこれらの細かいスニペットのquineinessを確認することができますtryj.tk


1
これは実際に音楽に通用する可能性があります。すばらしいです!:)
エミル14

4

Pythonを使用したMusique Concrete

今日はあまり時間がありませんが、答えを出したかったのです。このジャンルは、何も聞こえない言い訳です。ビデオゲームの効果音かもしれませんか?

BFIN10=r"print('BFIN10=r\"'+BFIN10+'\"'+'\nexec(BFIN10)')"
exec(BFIN10)

実際に悪い音はしません!
クラウディ14

すべての小野陽子のアルバム
ウィリアムバルボサ14

4

C

int(printf)(char*,...); (main)(){char*b=",*",i=(34),*m=("int(printf)(char*,...); (main)(){char*b="),
*z="%s%c%s%c,i=(34),*m=(%c%s%c)%sz=%c%s%c,*B=%c%s%c,*f=(%c%s%c)%s(/*)*/%s/*(*/);}//(+++fim)",*B="(f,
i,m,z),(i,z,m),(m,i),(f,b),(m,i),(m,i),(f,z,m),(m,i),(f,z,b),(m,i),(b,z),(B,i),(38,i),(29,B),(26,i),
(26,i),(B,f),(42,i),(i,m,f),B",*f=(";(printf)");(printf)(/*)*/(f,i,m,z),(i,z,m),(m,i),(f,b),(m,i),(m
,i),(f,z,m),(m,i),(f,z,b),(m,i),(b,z),(B,i),(38,i),(29,B),(26,i),(26,i),(B,f),(42,i),(i,m,f),B/*(*/)
;}//(+++fim)

プレゼンテーションのみを目的とした改行で分割されています。改行が削除された場合、これは単なるクインです(長さの要件のみを満たします)。

コンパイルするにはprintf宣言が必要でした(printf)/*(*/そして/*)*/括弧のミックスとコンマ演算子はからコードを形成するために使用されたが、コードに括弧を一致させるために使用されたprintfパラメータを。

編集:サイズ要件に合わせて短縮し、作品を少し速くします。

これはピアノで最もよく聞こえます。


2
私はそれが好きです!それはある種の遅いことから始まりますが、トークン130以降はすべて強力に忘れられません。あなたはあなたの利点に金切り声を使いました。
カルビンの趣味14

これはFantasy for Orchestraに合格できます!:P
Soham Chowdhury 14

2
古いバージョンのほうが好きでしたが、これは今でも私のお気に入りの曲です。私はあなたに報奨金を与えようとしていますが、何らかの理由でうまくいきません。メタを参照してください:meta.codegolf.stackexchange.com/questions/2263/…–
カルビンの趣味

3

スキーム

これは特にメロディックではないかもしれません(実際、誰かが死んだ豚を子孫に落としたように聞こえます)が、少なくとも短い音楽です。スキームで空飛ぶ豚のようなものをもっと長くしたり少なくしたりするのは難しいでしょう。

((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))

1
オウ、私の耳....
クラウディウ

2

毛皮Golfscript

":H;GHGHCFDA;[34]H+2*{-};":H;GHGHCFDA;[34]H+2*{-};

これは、意図ではありませんが、3連続文字除去規則の文字を満たします。


1

コブラ/バッチ

@number float# 2>nul||@echo off
/# 2>nul
for /f "delims=" %%a in (%0) do echo %%a
#/# 2>nul
class P# 2>nul
    def main# 2>nul
        r="# 2>nul"# 2>nul
        s="@number float{3}||@echo off{2}/{3}{2}for /f {1}delims={1} %%a in (%0) do echo %%a{2}#/{3}{2}class P{3}{2}    def main{3}{2}      r={1}{3}{1}{3}{2}       s={1}{0}{1}{3}{2}       Console.write(s,s,34to char,10to char){3}"# 2>nul
        Console.write(s,s,34to char,10to char,r)# 2>nul

技術的には、バッチではありません(独自のソースを読み取ります)。しかし、コブラの馬です。

スーパーマリオワールド時代のビデオゲームのゴーストレベルの音楽のように、ピアノモードが最適です。


1

パイス

J"+K+N+J+N+\K+N+K+NJ"K"J"+K+N+J+N+\K+N+K+NJ

約20の4番目の設定(量+と-の変更間隔)で最適に再生され、デフォルトで残ります。ピアノで最高の音。


0

ハスケル

(変数名が最後のルールに違反しているかどうかはわかりません。)

main=putStr$  jjlmjiebab ++ {--} show jjlmjiebab;jjlmjiebab = "main=putStr$  jjlmjiebab ++ {--} show jjlmjiebab;jjlmjiebab = "

1000ミリ秒のノート持続時間と250ミリ秒のノート間隔で、標準の+と-の値でピアノで演奏するのが最適です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.