ঝিকিমিকি ঝিকিমিকি ছোট তারা


27

জনপ্রিয় ইংরেজি নার্সারি ছড়া খেলতে একটি প্রোগ্রাম লিখুন।

শিট সংগীত (এই ফাইলটি ক্রিয়েটিভ কমন্স অধীনে লাইসেন্স করা হয় অ্যাট্রিবিউশন-শেয়ার অ্যালাইক 3.0 আনপোর্টেড লাইসেন্স অ্যাট্রিবিউশন। Helix84ইংরেজি ভাষা উইকিপিডিয়া ; Blahedoইংরেজি ভাষা উইকিপিডিয়া ।)

কিছু উইকিপিডিয়া নিবন্ধ যা কার্যকর হতে পারে:

আপনার জমা দেওয়ার জন্য কিছু গাইডলাইন:

  • আপনার প্রোগ্রামটি অবশ্যই কম্পিউটারের সাউন্ড কার্ড ব্যবহার করবে। যদি আপনার প্রোগ্রামিং ভাষার অডিও হার্ডওয়্যারে সুবিধাজনক অ্যাক্সেস না থাকে তবে আপনার প্রোগ্রামটি অবশ্যই WAV বা MIDI এর মতো কিছু স্ট্যান্ডার্ড ফর্ম্যাটে একটি আউটপুট ফাইল তৈরি করতে হবে।

  • আপনার প্রোগ্রামটি অবশ্যই এর আউটপুট উত্পন্ন করতে হবে। উদাহরণস্বরূপ, উইকিপিডিয়া থেকে ওগ ভারবিস ফাইল এম্বেড করার অনুমতি দেওয়া হবে না।

  • অডিও গুণ অবশ্যই গ্রহণযোগ্য হবে। খুব কমপক্ষে, গানটি সহজেই স্বীকৃতিযোগ্য হওয়া উচিত। সাধারণত, এটিও ভাল শোনা উচিত।

  • কোডের আকার, শব্দ মানের বা উভয়কেই কেন্দ্র করে ফোকাস করা উচিত (আপনি কোনটি সিদ্ধান্ত নিয়েছেন তা ব্যাখ্যা করুন)। মার্জিত সমাধানও দুর্দান্ত হবে। আনন্দ কর!

  • এটি একটি , তাই সংক্ষিপ্ততম কোড জিততে পারে


আমি প্রায় নোট ফ্রিকোয়েন্সি করতে পারি?
মিং-টাং

1
কেন এটি বন্ধ?
প্রোগ্রামার

@ প্রোগ্রামার
৫০০০০

2
এমনকি এটি কোড গল্ফ তৈরি করার পরেও আমি বলব এটি এখনও বিষয় ছাড়াই। অডিও গুণ অবশ্যই গ্রহণযোগ্য হবে। একটি উদ্দেশ্য বৈধতা মাপদণ্ড নয়।
ডেনিস

3
@ ডেনিস আমি বলব এটি "অফ-টপিক" না দিয়ে "অস্পষ্ট" এর মতো।
এরিক দি আউটগল্ফার

উত্তর:


30

কিউব্যাসিক (56)

A$="CCGGAAG2FFEEDDC2"
B$="GGFFEED2"
PLAY "L4"+A$+B$+B$+A$

ফোকাস স্মরণ করিয়ে দেওয়া হয় :)

(যদিও এটি পরীক্ষা করার জন্য কিউব্যাসিক নেই)


1
আমার ডসবক্স ইনস্টলেশনটিতে কমপক্ষে কাজ করে তবে আপনি কি পুরো গানটি বাজানোর জন্য এটি পরিবর্তন করতে পারবেন?
প্লিজ স্ট্যান্ড

সম্পন্ন. আমি আমার পড়ার দক্ষতা নিয়ে কাজ করব: /
এভেলেক্স

হুম এই পৃষ্ঠাটি কি ভুল? en.wikibooks.org/wiki/QBasic/ Appendix#PLAY -> একটি অষ্টভরটি সি দিয়ে শুরু হবে এবং বি দিয়ে শেষ হবে। আমি অর্ধেক আশা করেছি যে কিউবিসিকটি মাঝারি সি ভিত্তিক হবে, তবে সেই স্বরলিপিটি ঠিক এটির ভিত্তিতে এ 2২০ ভিত্তিক প্রস্তাব দিবে :)
মটিনেটর

6
বাহ, এটি কিউ বেসিকের সাথে আমার প্রথম প্রোগ্রামিং অভিজ্ঞতার স্মৃতি ফিরিয়ে এনেছে ... যা অন্যান্য বিষয়গুলির মধ্যে চিৎসিত সংগীত রচনা জড়িত!
ড্যানিয়েল স্ট্যান্ডেজ

3
+1 মেমরি লেন ট্রিপ জন্য! এখন আমার কেবলমাত্র একটি ড্রা কমান্ডের নমুনা দরকার :)
সিস্টেমটি

16

জাভাস্ক্রিপ্ট ( 214 212 211 টি অক্ষর)

জাভাস্ক্রিপ্ট শেলটিতে সাফারি, অপেরা বা গুগল ক্রোম খুলুন , তারপরে নীচের কোডটি প্রবেশ করুন:

for(s="",y=192e3;x=--y/4e3|0;)s+="~ "[(y%4e3>800|x%8==1)&Math.pow(2,"024579702457245702457970"[x>>1]/12)*y/31%2];open("data:audio/wav;base64,UklGRiXuAgBXQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQHuAgCA"+btoa(s))

পাঠযোগ্যতার জন্য অবিচ্ছিন্ন (তবুও এটি বুঝতে অসুবিধা হতে পারে):

for(s = "", y = 192E3; x = --y / 4E3 | 0;) {
  s += "~ "[(y % 4E3 > 800 | x % 8 == 1) & Math.pow(2, "024579702457245702457970"[x >> 1] / 12) * y / 31 % 2];
}
open("data:audio/wav;base64,UklGRiXuAgBXQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQHuAgCA" + btoa(s));

আরও বেশ কয়েকটি চরিত্রের সাহায্যে এটি ফায়ারফক্সেও কাজ করতে পারে তবে আপনি audio/wavঅংশটি কমপক্ষে WAV ফাইল সংরক্ষণ করতে পারেন ।


1
ক্রোমে ঠিক কাজ করে।
চালক

@ মোটিনেটর: আমার জন্যও কাজ করে। আমি এটি ক্রোমে চেক করার কথা ভাবি নি - এটি মোটামুটি কিছুকাল পর্যন্ত WAV ফাইল সমর্থন অর্জন করতে পারেনি। কোড.google.com/p/chromium/issues/detail?id=23916
দয়া করে

কি দারুন! এটা চমৎকার.
ফিলিপ সেন

"আরও বেশ কয়েকটি চরিত্র সহ" বলতে কী বোঝ? এই চরিত্রগুলি কি হবে?
ফিলিপ সেন

@ সিএফ_ফিলিপসেন: আমি যখন ফায়ারফক্সে কোডটি চালিয়েছিলাম তখন আমি একটি অ-কার্যক্ষম কুইকটাইম প্লেয়ার পেয়েছি। আমি কোডটি পরিবর্তন করতে হয়েছিল open(...)করার Audio(...).play()এটা ফায়ারফক্সের কাজ বিল্ট-ইন অডিও প্লেয়ার ব্যবহার করতে পেতে (8 আরো অক্ষর)।
প্লিজ স্ট্যান্ড

11

সি # (দৈর্ঘ্য: এলএল)

সুতরাং, আমি এখানে যা করেছি তা হ'ল সি # (একক অষ্টক, কোনও দুর্ঘটনা ঘটেনি) এর কিউবাসিক সমাধানের জন্য ব্যবহৃত স্ট্রিং থেকে .wav ফাইল তৈরির জন্য সমর্থন প্রয়োগ করা হয়েছিল। জোর চালু ছিল:

  1. unsafeকোড ব্লক এড়ানো
  2. এটি করাতে আমার খুব বেশি সময় নষ্ট হয় না
  3. প্রসারিত করার জন্য এটি তুলনামূলকভাবে সহজ করা

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text.RegularExpressions;
using System.IO;

namespace ConsoleApplication1
{
    public static class Extension
    {
        public static byte[] ToByteArray(this object o)
        {
            return o.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance)
                .SelectMany(x =>
                                {
                                    var value = x.GetValue(o, null);
                                    if (value.GetType().Equals(typeof (UInt16)))
                                    {
                                        return BitConverter.GetBytes((UInt16) value);
                                    }
                                    if (value.GetType().Equals(typeof (UInt32)))
                                    {
                                        return BitConverter.GetBytes((UInt32) value);
                                    }
                                    if (value.GetType().Equals(typeof(char[])))
                                    {
                                        return ((char[]) value).Select(y => Convert.ToByte(y));
                                    }
                                    if (value.GetType().Equals(typeof(byte[])))
                                    {
                                        return (byte[]) value;
                                    }
                                    throw new NotImplementedException();
                                }).ToArray();
        }
    }
    public class Wave
    {
        public readonly byte[] WavFile; 

        public Wave(string notes)
        {
            var header = new Header();
            var data = new List<Chunk>();
            var f = new Fmt(8000);
            data.Add(f);
            data.Add(new WavData(notes, f));
            var thefile = data.SelectMany(x => x.ToByteArray()).ToArray();
            header.Size = (uint)thefile.Length + 4;
            WavFile = header.ToByteArray().Concat(thefile).ToArray();
        }
        class WavData: Chunk
        {
            private static IEnumerable<byte> RenderNote(string note, int length, Fmt fmt)
            {
                double frequency;
                switch (note)
                {
                    case "A":
                        frequency = 440;
                        break;
                    case "B":
                        frequency = 493.883;
                        break;
                    case "C":
                        frequency = 261.626;
                        break;
                    case "D":
                        frequency = 293.665;
                        break;
                    case "E":
                        frequency = 329.628;
                        break;
                    case "F":
                        frequency = 349.228;
                        break;
                    case "G":
                        frequency = 391.995;
                        break;
                    default:
                        throw new NotImplementedException("Unsupported Note");
                }
                var result = new byte[fmt.SampleRate / length * 2];  // For 120BPM tempo
                for (int i = 0; i < result.Length; i++)
                {
                    double time = (i % fmt.SampleRate) / (double)fmt.SampleRate;
                    double position = time * frequency;
                    if (result.Length - i <= fmt.SampleRate / 16)
                        result[i] = 127;
                    else
                        result[i] = (byte)Math.Round((Math.Sin(position * 2 * Math.PI) + 1) * 127);
                }
                return result;
            }
            public WavData(string notes, Fmt fmt)
            {
                Samples = new byte[0];
                foreach (var note in Regex.Matches(notes, @"[A-G][1|2|4|8]?").OfType<Match>().Select(x => x.Value))
                {
                    Samples = Samples.Concat(RenderNote(note[0] + "", note.Length > 1 ? note[1] - '0' : 4, fmt)).ToArray();
                }

            }
            public override char[] Id
            {
                get { return "data".ToCharArray(); }
            }
            public override uint DataSize
            {
                get { return (uint)Samples.Length; }
            }
            public byte[] Samples { get; private set; }
        }
        class Fmt : Chunk
        {
            public Fmt(UInt32 sampleRate)
            {
                CompressionCode = 1; // Unknown/PCM
                Channels = 1;
                SampleRate = sampleRate;
                SignificantBits = 8;
            }
            public override char[] Id
            {
                get { return "fmt ".ToCharArray();}
            }
            public override uint DataSize
            {
                get { return 16; }
            }
            public UInt16 CompressionCode { get; private set; }
            public UInt16 Channels { get; private set; }
            public UInt32 SampleRate { get; private set; }
            public UInt32 AvgBytesPerSecond { get { return SampleRate*BlockAlign; } }
            public UInt16 BlockAlign { get { return (UInt16) (SignificantBits/8*Channels); } }
            public UInt16 SignificantBits { get; private set; }
        }
        class Header
        {
            public Header()
            {
                Type = "RIFF".ToCharArray();
                RiffType = "WAVE".ToCharArray();
                Size = 0;
            }

            public char[] Type { get; private set; }
            public UInt32 Size { get; set; }
            public char[] RiffType { get; private set; }
        }
        abstract class Chunk
        {
            public abstract char[] Id { get; }
            public abstract UInt32 DataSize { get; }
        }
    }
    class Program
    {
        public static void Main(string[] args)
        {
            var p1 = "CCGGAAG2";
            var p2 = "FFEEDDC2";
            var p3 = "GGFFEED2";
            var w = new Wave(p1+p2+p3+p3+p1+p2);
            using (var f = new FileStream("testfile.wav", FileMode.Create))
                f.Write(w.WavFile, 0, w.WavFile.Length);
        }
    }
}

আমি লক্ষ্য করেছি উপরের উত্তরটিতে আউটপুট তরঙ্গের একটি খুব ছোট প্রশস্ততা রয়েছে। 8 বিটের নমুনা কীভাবে কাজ করে সে সম্পর্কে স্পষ্টতই আমি কিছু মিস করছি।
মটিনেটর

আহ, এটা ঠিক। অপারেশন ক্রম গুরুত্বপূর্ণ। এখানে নমুনা আউটপুট: dl.dropbox.com/u/469380/testfile.wav
mootinator

FromDigits["LOL",36]==28101এটি LOL <sub> 36 </sub> বাইটের মতো দেখায় না ...
ক্যালকুলেটরফ্লাইন

6

পাইথন (259)

import pysynth

c=('c',4)
g=('g',4)
a=('a',4)
b=('b',4)
d=('d',4)
e=('e',4)
f=('f',4)
g2=('g',2)
c2=('c',2)
d2=('d',2)

s=(c,c,g,g,a,a,g2,f,f,e,e,d,d,c2,g,g,f,f,e,e,d2,g,g,f,f,e
            ,e,d2,c,c,g,g,a,a,g2,f,f,e,e,d,d,c2)

pysynth.make_wav(s,fn="s.wav")

3
এটি কি সংক্ষিপ্ত করা যাবে না import ttls?
zzzzBov

@Zz: উম, এটা কি রসিকতা?
জন

2
@ জিজেড: -বাংস-হেড-অন-ডেস্ক- আপনি ঠিক কী বলছেন?
জন

1
@ জন এটি অবশ্যই কোয়ান। আপনি হয় তাকে নত করা বা আঘাত করা উচিত।
ixtmixilix

1
(খুব দেরিতে মন্তব্য) রেফারেন্সের জন্য, এখানে একটি সংস্করণ -60 বাইট রয়েছে, কারণ এটি সত্যই গল্ফড।
এরিক আউটগল্ফার

5

সি, 277 টি অক্ষর

#include<math.h>
a[]={0,7,9,7,5,4,2,0,7,5,4,2,7,5,4,2,0,7,9,7,5,4,2,0},i,j,f;main(){unsigned char
b[8000];f=open("/dev/dsp",1);for(i=0;i<24;i++){for(j=0;j<8000;j++){b[j]=(i%4==3
||j/400%20!=9?1+sinf(j*powf(2,a[i]/12.)):1)*127;}for(j=0;j<8000;j+=write(f,b+j,
8000-j));}close(f);}

পার্ল, 203 টি অক্ষর

open F,'>:raw','/dev/dsp';for$a(0,7,9,17,5,4,2,10,7,5,4,12,7,5,4,12,0,7,9,17,5,4
,2,10){$b=pack'C*',map 127*($a>9||$_/400%20!=9?1+sin($_*2**($a%10/12)):1),0..
7999;$b=substr$b,syswrite F,$b while length$b}

সুবিধার্থে, ওএসএস এর /dev/dsp8kHz মনো u8 এর ডিফল্ট; আমি এখানে যা করি তা হ'ল ডিভাইসটি খুলুন এবং গণিত নমুনাগুলি লিখুন।


পার্ল আলাদাভাবে পোস্ট করুন; আপনি কোডগল্ফে রয়েছেন :)
এভেলেক্স

179 -j,f;main(i){char b[8000];f=open("/dev/dsp",1);for(i=24;i--;write(f,b,j))for(j=0;j<8000;j++)b[j]=(i%4&&j/400%20==9?1:1+sinf(j*powf(2,("@BDEGIG@BDEGBDEG@BDEGIG@"[i]-64)/12.)))*127;}
গ্যাস্ট্রোপনার

4

পাওয়ারশেল: 207

গল্ফ কোড:

filter n {switch($_){C{262}D{294}E{330}F{349}G{392}A{440}}}$t="CCGGAAGFFEEDDCGGFFEEDGGFFEEDCCGGAAGFFEEDDC";1..6|%{$t[0..5]|n|%{[console]::beep($_,600)};$t[6]|n|%{[console]::beep($_,1200)};$t=$t.SubString(7)}

মতামত সহ উজ্জ্বল:

# Filter to define note frequencies.
filter n {switch($_){C{262}D{294}E{330}F{349}G{392}A{440}}}

# Notes for Twinkle, Twinkle, Little Star.
$t="CCGGAAGFFEEDDCGGFFEEDGGFFEEDCCGGAAGFFEEDDC"

# Run through each phrase in the song.
1..6|%{
    # Play first six notes as quarter notes.
    $t[0..5]|n|%{[console]::beep($_,600)}
    # Play seventh note as half note.
    $t[6]|n|%{[console]::beep($_,1200)}
    # Left-shift $t by 7 notes.
    $t=$t.SubString(7)
}

গানের সর্বকালের সেরা সাউন্ডের উপস্থাপনা নয়, তবে এটি কার্যকর।


1
(দেরিতে মন্তব্য) আপনি কি n{পরিবর্তে করতে পারেন n {?
এরিক দি আউটগলফার

4

সি - 520

আচমকা।

#include <linux/fd.h>
#include <time.h>
struct timespec t,p;char*q="AAHHJJH  FFEECCA  HHFFEEC  HHFFEEC  AAHHJJH  FFEECCA";x,y,z,v,w;main(){x=open("/dev/fd0",3);for(y;q[y];y++){clock_gettime(CLOCK_MONOTONIC,&p);if(q[y]>' ')for(w=z=0;z<4e8;z+=t.tv_nsec,w++){struct floppy_raw_cmd s={0};s.flags=FD_RAW_NEED_SEEK;v=!v;s.track=v;ioctl(x,FDRAWCMD,&s);clock_gettime(CLOCK_MONOTONIC,&t);t.tv_nsec=(w+1)*5e8/pow(2.,q[y]/12.)-(t.tv_sec-p.tv_sec)*1e9-t.tv_nsec+p.tv_nsec;t.tv_sec=0;nanosleep(&t,0);}t.tv_nsec=2e8;nanosleep(&t,0);}}

স্পিকার এবং হেডফোনগুলির মতো গত শতাব্দীর হার্ডওয়্যারটি কেন ব্যবহার করবেন? এই দুর্দান্ত টুকরো কোডটি আপনাকে একটি আধুনিক হার্ডওয়্যারের হার্ডওয়ারে গানটি বাজাতে দেয়: একটি ফ্লপি ড্রাইভ!
কোন বিশেষ প্রয়োজনীয়তা নেই:

  • একটি আইডিই ফ্লপি ড্রাইভ
  • লিনাক্স কার্নেল
  • সঙ্গে সংকলন -lm
  • প্রোগ্রামটি অ্যাক্সেস করতে পারে তা নিশ্চিত করুন /dev/fd0, তাই হয় ডিভাইসটি ডুবিয়ে রাখুন বা সুপারসুজার হিসাবে চালিত করুন

নিয়মগুলি কিছুটা বেঁকে যায়, তবে আসুন এক সেকেন্ডের জন্য ফ্লপি ড্রাইভকে একটি সাউন্ড ডিভাইস এবং IDE নিয়ামক একটি সংহত সাউন্ড কার্ড বিবেচনা করুন।


আমি বলতে চাই এই যুক্তিযুক্ত, ফ্লপি ড্রাইভ এই কাজের জন্য এটি আশ্চর্যজনক সক্ষম youtu.be/LkqYLOa76E0
হট

3

হাইপারকার্ড 2.2 - 113

play harpsichord "c c g g a a gh fq f e e d d ch gq g f f e e dh gq g f f e e dh cq c g g a a gh fq f e e d d ch"

ব্যবহার: হাইপারকার্ড শুরু করুন, বার্তা বাক্স খুলতে ⌘M টাইপ করুন, উপরের কোডটি পেস্ট করুন এবং এন্টার টিপুন।

harpsichordবিভিন্ন শব্দ পেতে fluteবা প্রতিস্থাপন করা যেতে পারে boing


(খুব দেরিতে মন্তব্য) harpsichord-> flute-6 উপকরণ এবং উদ্ধৃতিগুলির মধ্যে স্থান সরিয়ে ফেলুন -১ মোট -১
এরিক দি আউটগল্ফার

3

সি, 96 টি অক্ষর

main(t){for(;++t>>16<3;)putchar(t*!!(t>>9&7|!(-t>>12&7))*(96+"#d|dOE3#dOE3dOE3"[t>>13&15])>>5);}

ক্লাসিক বাইটবিট শৈলীতে কাঁচা 8-বিট স্বাক্ষরযুক্ত মনো অডিও ডেটা উত্পাদন করে । প্লেব্যাকের জন্য প্রস্তাবিত নমুনার হারগুলি 8 থেকে 16 কেজি হার্জের মধ্যে; নমুনার হার পরিবর্তন করার ফলে টেম্পো এবং পিচ পরিবর্তন হয়।

লিনাক্সের অধীনে সংকলন ও খেলতে উপরের কোডটি সংরক্ষণ করুন twinkle.cএবং নিম্নলিখিত কমান্ডগুলি চালান:

gcc twinkle.c -o twinkle
./twinkle | aplay

কোডটি কীভাবে কাজ করে সে সম্পর্কে কয়েকটি নোট:

  • এই জাতীয় বাইটবিট রচনাগুলির জন্য ব্যবহৃত সাধারণ কৌশলটি এটি putchar()একটি পূর্ণসংখ্যার মান নেয় তবে এটির কম আট বিট প্রিন্ট করে। সুতরাং, putchar(t)যেখানে tএকটি বর্ধমান পাল্টা রয়েছে, একটি তৃতীয় তরঙ্গ উত্পন্ন করে এবং তরঙ্গের ফ্রিকোয়েন্সি tউপযুক্ত মান দিয়ে গুণিত করে পরিবর্তন করা যেতে পারে ।

  • !!(t>>9&7|!(-t>>12&7))পুনরাবৃত্তি 6 + 1 নোট প্যাটার্ন উত্পাদন করে। বিশেষ করে, !!(t>>9&7)মূল্যায়ন করে 0যখনই t>>9 & 7 == 0করুন এবং 1অন্যথায়। সুতরাং, এটি প্রতি 4096 নমুনায় তরঙ্গরূপে 512-নমুনা ফাঁক তৈরি করে, যখন !(-t>>12&7)প্রতি অষ্টম এই ফাঁকটি সরিয়ে দেয়।

  • 96+"#d|dOE3#dOE3dOE3"[t>>13&15]সুর ​​তৈরি করে: স্ট্রিং প্লাস 96 এর প্রতিটি অক্ষরের ASCII কোডটি সংশ্লিষ্ট নোটের আপেক্ষিক ফ্রিকোয়েন্সি দেয়। প্রকৃতপক্ষে, মানগুলি তৃতীয় / ছোট অষ্টভরে কনসার্ট পিচ নোটগুলির আনুমানিক ফ্রিকোয়েন্সিগুলি হয়, যেমন 220 এর সাথে একই। , বা 32 হার্জেড যখন 8 কেএজেডজেডে খেলে), >>5ফ্রিকোয়েন্সিটিকে যুক্তিসঙ্গত পরিসরে ফিরিয়ে আনতে আমাদের পাঁচটি অক্টেভ দিয়ে ফলাফলটি স্কেল করতে হবে।

গীত। আপনি যদি জাভাস্ক্রিপ্ট-ভিত্তিক বাইটবিট প্লেয়ারটিতে এই কোডটি চেষ্টা করতে চান তবে এর [t>>13&15]সাথে প্রতিস্থাপন করুন .charCodeAt(t>>13&15)


2

পাইথন 317 305 301

কেবলমাত্র পাইথন লাইব্রেরি ব্যবহার করে এটি আমার সমাধান:

import math,wave,struct;d=24000;r=1100.;t=wave.open("t.wav","w");t.setparams((1,2,int(r),d,"NONE",""));a=[0,7,9,7];b=[5,4,2,0];c=[7,5,4,2]
for h in[math.sin(6*[240*2**(j/12.)for j in a+b+c+c+a+b][x/1000]*(x/r))*(x%500>9 or x/1000%4>2)for x in range(d)]:t.writeframes(struct.pack('h', int(h*64000/2)))

এবং এখানে এটি পাঠযোগ্যতার জন্য আরও কিছু সাদা জায়গার সাথে রয়েছে:

import math,wave,struct;d=24000;r=1100.
a=[0,7,9,7];b=[5,4,2,0];c=[7,5,4,2];s=[240*2**(j/12.) for j in a+b+c+c+a+b]
z=[math.sin(6*s[int(x/1000)]*(x/r))*(x%500>10 or int(x/1000)%4>2) for x in range(d)]
t=wave.open("t.wav","w");t.setparams((1,2,int(r),d,"NONE",""))
for h in z:t.writeframes(struct.pack('h', int(h*64000./2)))

2

গণিত, 86 টি চর

s=SoundNote;If[#>9,s[#-10,2],{s@#,s@#}]&/@Join[a={0,7,9,17,5,4,2,10},b={7,5,4,12},b,a]

2

আরডুইনো, 688

int length=15;char notes[]="ccggaag ffeeddc ggffeed ggffeed ccggaag ffeeddc";int beats[]={1,1,1,1,1,1,2,1,1,1,1,1,1,2,4};int tempo=300;void playTone(int tone,int duration){for(long i=0;i<duration*1000L;i+=tone*2){digitalWrite(11,HIGH);delayMicroseconds(tone);digitalWrite(11, LOW);delayMicroseconds(tone);}}void playNote(char note, int duration){char names[]={'c','d','e','f','g','a','b','C'};int tones[]={1915,1700,1519,1432,1275,1136,1014,956};for(int i=0;i<8;i++){if(names[i]==note){playTone(tones[i], duration);}}}void setup(){pinMode(11, OUTPUT);}void loop(){for(int i=0;i<length;i++){if(notes[i]==' '){delay(beats[i]*tempo);}else{playNote(notes[i],beats[i]*tempo);}delay(tempo/2);}}

আউটপুট 11. আমি হর্ণ প্লাগ ইন প্রধানত মনোনিবেশ মানের , কিন্তু কোড দৈর্ঘ্যের উপর।


(দেরিতে মন্তব্য) "ccggaag ffeeddc ggffeed ggffeed ccggaag ffeeddc "স্থান সরাবেন? int beats[] =জায়গা সরাবেন? for (longজায়গা সরাবেন? 11, LOWজায়গা সরাবেন? note, intজায়গা সরাবেন? i], durationজায়গা সরাবেন? 11, OUTPUTজায়গা সরাবেন?
এরিক আউটগল্ফার

আপনি কি আসলে কিছু জায়গা ভুলে গেছেন? যতদূর আমি বুঝতে পারি, স্থানটি ffeeddc "কিছুটা বিলম্বের জন্য যা আপনার শেষদিকে দরকার beats[] =নেই এবং কোনও স্থান থাকার কোনও কারণ নেই। এছাড়াও, আপনার কোডের দৈর্ঘ্যের উপর মনোনিবেশ করে এমন একটি সংস্করণ তৈরি করা উচিত, কেবল এটির হেকের জন্য!
এরিক দি আউটগলফার

আমি মনে করি ভেরিয়েবলগুলি সমস্তই একটি অক্ষর হতে পারে তবে আমি মনে করি না যে এত পুরানো উত্তরের জন্য এটি সময়ের উপযুক্ত। এই টিপস জন্য ধন্যবাদ।
টিমটেক

ঠিক আছে, যদি আপনি চান তবে একটি পৃথক উত্তর হিসাবে নির্দ্বিধায় পোস্ট করুন।
টিমটেক

@ টিমটেক প্রশ্নটি বন্ধ
থাকায়

2

বাশ + বলুন + গানজিপ, 136 বাইট

sayঅবশ্যই, ওএস এক্স টেক্সট-টু-স্পিচ কমান্ড। এটি ... অন্ধকার হ্যাঁ, ডার্কির সাথে চলুন।

printf '<117 bytes>'|gunzip|sh

117 বাইট অবশ্যই একটি জিজিপ স্ট্রিম যা অরক্ষিত অক্ষরযুক্ত। এই অক্ষরগুলি সহ এখানে স্ক্রিপ্টের একটি এক্সএক্সডি ডাম্প রয়েছে:

00000000: 7072 696e 7466 2027 1f8b 085c 305c 305c  printf '...\0\0\
00000010: 305c 305c 3002 032b 4eac 54d0 2d0b c9c8  0\0\0..+N.T.-...
00000020: cf4d 2c56 c8e7 c2ca 75cc cb4b c4ce 71cb  .M,V....u..K..q.
00000030: ccc7 c90b 4b4d 85f0 7252 530b 14f4 4ca0  ....KM..rRS...L.
00000040: c2de 8945 a979 4061 6cbc e0c4 dcc4 bc92  ...E.y@al.......
00000050: 8c44 dc02 2e89 7999 a939 685c 5c74 7723  .D....y..9h\\tw#
00000060: ec44 755c 6e2a 8f8a ee19 581b 8767 1402  .Du\n*....X..g..
00000070: 5c30 fa36 7e25 2599 025c 305c 3027 7c67  \0.6~%%..\0\0'|g
00000080: 756e 7a69 707c 7368                      unzip|sh

ব্যাখ্যা

117 বাইট নিম্নলিখিত স্ক্রিপ্ট gzip:

say -vThomas o
say -vThomas o
say -vAnna o
say -vAnna o
say -vFiona o
say -vFiona o
say -vVeena o
sleep .4
say -vKaren o
say -vKaren o
say -vSamantha o
say -vSamantha o
say -vDaniel o
say -vDaniel o
say -vThomas o
sleep .4
say -vVeena o
say -vVeena o
say -vKaren o
say -vKaren o
say -vSamantha o
say -vSamantha o
say -vDaniel o
sleep .4
say -vVeena o
say -vVeena o
say -vKaren o
say -vKaren o
say -vSamantha o
say -vSamantha o
say -vDaniel o
sleep .4
say -vThomas o
say -vThomas o
say -vAnna o
say -vAnna o
say -vFiona o
say -vFiona o
say -vVeena o
sleep .4
say -vKaren o
say -vKaren o
say -vSamantha o
say -vSamantha o
say -vDaniel o
say -vDaniel o
say -vThomas o

এটা ঠিক, আমি say"ও" বলার জন্য বিভিন্ন কণ্ঠের একগুচ্ছ তৈরি করেছি । কোনটি খুঁজে বের করার জন্য, আমি প্রতিটি ভয়েসের পিচের দ্রুত এবং নোংরা অনুমানের জন্য অবিওনোটগুলি ব্যবহার করে একটি স্ক্রিপ্ট লিখেছিলাম , তারপরে বেশিরভাগ পরীক্ষা এবং ত্রুটি করে যা বেশিরভাগই সঠিক বলে মনে হয়।

আমি নিজে নিজে এটি গল্ফ করার চেষ্টা বিবেচনা করেছি, কিন্তু এত পুনরাবৃত্তি আছে যা আমি বুঝতে পেরেছিলাম যে জোফফ্লি এর কাজটি আরও ছোট করে তুলবে, তাই আমি সহজেই বেরিয়ে আসলাম।


1

স্মাইলব্যাসিক, 45 বাইট

BGMPLAY"{M=CCGGAAG2FFEEDDC2}{M}[GGFFEED2]2{M}

0

পাওয়ারশেল, 120 117 বাইট

[Console]::beep, ইসিজির দ্বারা অনুপ্রাণিত লেবেল এবং ফ্রিকোয়েন্সি নোট করুন

 ($a='ccggaaGffeeddC')+'ggffeeD'*2+$a|% t*y|%{[console]::beep((0,110,0,65,73,82,87,98)[$_-band7]*4,600+600*($_-lt97))}

মূল ধারণা :

  • সুরটি একটি স্ট্রিং এ এনকোড করা হয়েছে।
  • নোট অক্ষর দ্বারা তা এনকোডেড থাকে A, C, D, E, F, G
  • বড় হাতের অর্থ ক double duration
  • 3 নিম্ন বিট ( $_-band7) ফ্রিকোয়েন্সি অ্যারের মধ্যে সূচক প্রতিটি নোট ব্যবহার সম্পর্কে ( A->1, C->3, D->4...)
  • এই স্ক্রিপ্টটি ফ্রিকোয়েন্সিগুলির জন্য হ্রাস করা নমুনা হার ব্যবহার করে: (0,110,0,65,73,82,87,98)[$_-band7]*4পরিবর্তে ইসজি'র (0,440,0,262,294,330,349,392)[$_-band7][console]::Beepসর্বাধিক নির্ভুল বাদ্যযন্ত্র নয়, তাই এটি সামান্য নকল :)

ব্যাখ্যা : মেলোডি স্ট্রিং থেকে প্রতিটি চর জন্য ccggaaGffeeddCggffeeDggffeeDccggaaGffeeddC, স্ক্রিপ্ট:

  • সূচি হিসাবে নিম্ন বিট ব্যবহার করে অ্যারে থেকে frequensies সন্ধান করে
  • চর বড় / ছোট হাতের উপর ভিত্তি করে একটি সময়কাল গণনা করে
  • [console]::beepনোট খেলতে কল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.