सबसे सुंदर बाइटबीट रचना लिखें


24

बाइटबीट संगीत की एक शैली है जिसे एक साधारण सी प्रोग्राम लिखकर तैयार किया जा सकता है जो आउटपुट को पाइप किया जाता है aplayया /dev/dsp

main(t){for(;;t++)putchar(((t<<1)^((t<<1)+(t>>7)&t>>12))|t>>(4-(1^7&(t>>19)))|t>>7);}

बाइटबीट साइट पर एक अच्छी जानकारी है , एक जावास्क्रिप्ट कार्यान्वयन , और इस धागे में अधिक डेमो और उदाहरण रचनाएं हैं ।

बहुत सरल नियम: एक सुंदर लगने वाली रचना लिखने की कोशिश करें। अधिकांश वोट वोट से जीतते हैं क्योंकि यह स्पष्ट रूप से व्यक्तिपरक है, हालांकि सामान्य परिणामों को देखते हुए यह व्यक्तिपरक नहीं है।



क्या आप इसे सख्त बाइटबीट (यानी बफ़र्स नहीं) के लिए पकड़ रहे हैं?
पीटर टेलर

4
यह सी तक ही सीमित क्यों है?
उपयोगकर्ता अनजान

बफ़र या अन्य भाषाओं के उपयोग को प्रतिबंधित करने के लिए कोई आंतरिक कारण नहीं है, लेकिन आमतौर पर बाइटबीट का अर्थ है कि विशेष सी लूप एक सूत्र द्वारा परिभाषित आउटपुट के साथ। मुझे लगा कि जॉय एडम्स का जवाब भी rand()गैर-मानक है।
जेफ बर्देस 15

जबकि मुझे यह विचार पसंद है, अक्सर पूछे जाने वाले प्रश्न ऑब्जेक्टिव विनिंग मानदंड के लिए कहते हैं (यह गणना या ASCII कला में फंसना बहुत आसान है)। क्या हम "सुंदर" से बेहतर कुछ परिभाषित कर सकते हैं?
dmckee

जवाबों:


16

(16-बिट थोड़ा एंडियन, 8000 हर्ट्ज मोनो ( --format=S16_LE) पर हस्ताक्षर किए )

संगीत

पहले से बहुत बेहतर! (हालांकि यह काफी लंबा है)

main(t){for(;;t++)putchar(((7&(((t>>17)+1)>>2)+((t>>10)&1+2*(t>>18&1))*(("23468643"[7&t>>12]-48)+(3&t>>11))+((3&t>>17)>0)*(3&t>>9)*!(1&t>>10)*(((2+t>>10&3)^(2+t>>11&3))))*t*"@06+"[3&t>>15]/32));}

(आप इसे यहां सुन सकते हैं )

मैंने यह लिखा है, लेकिन यहां तक ​​कि मुझे नहीं पता कि कुछ हिस्सा कैसे काम करता है, जैसे >0और (विशेष रूप से) पहले 7&

लूप के लिए बदलें for(;!(t>>22);t++)... इसे 'एक बार' सुनने के लिए। मैं नहीं जानता कि यह "लूप्स" ठीक उसी तरह है, हालांकि।

मेलोडी (उपरोक्त संगीत का आधार)

मैं इस राग से प्यार करता हूं जिसे मैंने बनाया (CGAF ftw), लेकिन यह बहुत 'सादा' है ...

main(t){for(;;t++)putchar(((t>>10)&1)*(t*("23468643"[7&t>>12]-48)+t*(3&t>>11))*"@06+"[3&t>>15]/32);}

सरल संगीत (जो मैंने पहले बनाया था)

main(t){for(;;t++)putchar(t*(3&t>>11)+(t&t>>11)*4*!((t>>11)%3));}


यदि आप उपरोक्त बाइटबीट लिंक पर क्लिक करते हैं, तो आपको एक .wav फ़ाइल, और एक विषम कंप्रेसर लाइन पर परिवर्तित करने के लिए एक sox कमांड लाइन दिखाई देगी।
जेफ बर्देज 15

3
+1 अद्भुत! कुछ बिट्स (जैसे 1:30 - 1:40) ध्वनि "हकलाने" की तरह है, लेकिन फिर बाइटबीट का बहुत आकर्षण इन विषम और अपरंपरागत लय और धुनों में है, और समग्र प्रभाव उत्कृष्ट है। (पीएस। मैंने गलती से इसे 8 बिट प्रति नमूने पर खेला था, और मुझे आश्चर्यजनक रूप से अच्छा लगता है। इस तरह से 33.3 आरपीएम पर 45 आरपीएम विनाइल बजाना पसंद है।)
इल्मरी करोनन

3

शासक समारोह सी माइनर में:

#include <math.h>
#include <stdio.h>

#define PI 3.14159265358979323846

#define step(freq, n) ((freq) * pow(2, (n) / 12.0))
#define note(n)       step(440, n)
#define MIDDLE_C      note(-9)

int count_zeros(unsigned int n)
{
    int count = 0;
    for (; (n & 1) == 0; n >>= 1)
        count++;
    return count;
}

int minor_note(int note)
{
    int octave = note / 7;
    int scale[] = {0, 2, 3, 5, 7, 8, 10};

    note %= 7;
    if (note < 0) {
        note += 7;
        octave--;
    }

    return scale[note] + octave*12;
}

int main(void) {
    double t = 0.0;
    double freq = MIDDLE_C * 2;
    double step = PI * 2 / 8192;
    int n = 0;
    int i = 0;

    for (i = 1;; t += step, i++) {
        if (i == 1024) {
            i = 0;
            n++;
            freq = step(MIDDLE_C, minor_note(count_zeros(n)));
        }

        putchar(sin(t * freq) * 50.0 + 128.0);
    }

    return 0;
}

अच्छा मेलोडी, लेकिन "रचना" होने के लिए इस IMO को कुछ और चाहिए ...
इल्मरी करोनें

3
main(t){for(;;t+=(t%6)?1:2)putchar((((t<<t^(t>>8))|(t<<7))*((t<<t&(t>>12))|(t<<10))));}

बहुत क्लासिक बाइटबीट, अगर वह ऑक्सीमोरोन नहीं है। मुझ से +1।
इल्मरी करोनन

3

"बाइट" पर "हरा" पर जोर देना:

#include<math.h>

double s(double,double);double r(double,double);double d(double);double f(double);

char bytebeat(int t){return (d(f(t/4000.)/3) + 1) * 63;}
double f(double t){
  double sn=s(1./2,t-1); sn*=(sn*sn);
  return 3*s(1./4,1/s(1,t))+3*s(4,1/sn)/2+s(4,1/(sn*sn*sn*sn*sn))/4
       +2*s(55+18.3*r(1./2,t),t)+s(110+s(5,t)/4000,t)*s(1,t)+s(220+110*r(1,t)+55*r(3,t),t)/5
       +s(880+440*r(1./2,t)-220*r(1,t)+110*r(2,t)+s(5,t)/4000,t)
       *(2+s(1760+438*r(3./2,t)-1234*r(2,t)+423*r(5,t),t))/9
       +s(s(1,t)+s(1./2,t)+s(1./4,t)+s(1./8,t),t)*s(s(1,t)+s(1./2,t)+s(1./4,t)+s(1./8,t)+1,t)
       +r(264+11*r(1./20,t),t)*s(1./20,t);
}
double s(double f,double t){return d(sin(f*3.14159265*(t+999)));}
double r(double f,double t){return s(f,t)<0;}
double d(double a){return tanh(a+a*a/4);}

main(t){for(;;++t)putchar(bytebeat(t));}

8 kHz, uint8 मोनो में उपयोग किया जाना है। शालीनतापूर्वक बास-सक्षम लाउडस्पीकर पर सबसे अच्छा लगता है।


2
main(){for(;;)putchar(rand());}

समुद्र की तरह लगता है ;-)


1
मेरे लिए एक बहुत व्यस्त रेलवे क्रॉसिंग की तरह। :)
इल्मरी करोनें

5
प्रोटिप: यदि यह एक निरंतर स्वर की तरह लगता है, तो आपका आरएनजी टूट गया है।
श्री लामा

3
आसान तरीका:$ cat /dev/urandom | aplay
ब्रैडन बेस्ट

2
@ B1KMusic बहुत अधिक सरल:aplay /dev/urandom
minmaxavg

0

संयुक्त मेलोडी और सद्भाव:

r=3,
r=3,
m=(t*(t>>12|t>>13|t>>14|t>>15|t>>16|t>>17|t>>18))&63,

h= ((t&t>>7&t>>6)|t*5&t>>8-c^t*6&t>>9-c|t*7&t>>12-c^t*9&t>>11-c^t*11&t>>22^t*19&t>>20^t*14&t>>20|t*23&t>>15-c|t*12&t>>9|t*30&t>>30|t>>5|t>>4)-31, m|h
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.