সাদা আওয়াজ উত্পন্ন


15

চ্যালেঞ্জটি হ'ল: সাদা শব্দে তৈরি একটি অডিও ফাইল তৈরি করুন।
প্রয়োজনীয়তা এবং নির্দেশাবলী:

  • আপনার প্রোগ্রামকে অবশ্যই একটি শ্বেত শব্দ সহ একটি অডিও ফাইল তৈরি করতে হবে যার অর্থ এর তীব্রতা সমস্ত (যুক্তিসঙ্গত) ফ্রিকোয়েন্সি এবং ননজারো [উদাহরণস্বরূপ প্লট দেখুন ] এর জন্য একই;
  • একজনকে অবশ্যই ভিএলসির সর্বশেষ সংস্করণে [আপনার উত্তর লেখার সময়] অডিও ফাইলটি খেলতে সক্ষম হতে হবে;
  • প্রোগ্রামটির ক্রিপ্টোগ্রাফিকভাবে শক্তিশালী এলোমেলো প্রয়োজন নেই, randফাংশন বা পড়া /dev/randঠিক আছে;
  • প্রোগ্রামটি অবশ্যই কমপক্ষে তত্ত্বের ক্ষেত্রে কমপক্ষে 1 ঘন্টা অডিও তৈরি করতে সক্ষম হবে (যার অর্থ সিস্টেমের সীমাবদ্ধতা সর্বাধিক ফাইলাইজের মতো হয় না);
  • আপনার স্কোরটি আপনার উত্স কোডে বাইট সংখ্যা, এবং প্রযোজ্য সমস্ত বোনাস;
  • কোনও তৃতীয় পক্ষ ব্যবহার করে , বাহ্যিক গ্রন্থাগার ঠিক আছে;
  • প্রোগ্রামটি অবশ্যই ইন্টারনেট অ্যাক্সেস ছাড়াই কাজ করবে।

বোনাসগুলি হ'ল:

  • -15%: অডিও ফাইলের ফর্ম্যাট নির্দিষ্ট করার অনুমতি দিন (কমপক্ষে দুটি পছন্দ; সম্ভাব্য পছন্দগুলির সংখ্যা স্কোর পরিবর্তন করে না);
  • -10%: অডিও ফাইলের সময়কাল নির্দিষ্ট করার অনুমতি দিন;
  • -5%: অডিও ফাইলের বিটরেট নির্দিষ্ট করার অনুমতি দিন।

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


সমস্যাটি অনুমান করে একটি কোড কলফিং চ্যালেঞ্জ বর্ণনা করছে বলে মনে হচ্ছে, তবে ট্যাগগুলি অন্যথায় বলে।
আন্ডারগ্রাউন্ডোমোনাইল

উপস! আমি এটা ঠিক করব।
জিউলিও মাসকারেলো

সম্ভবত "যে কোনও লাইব্রেরি" পরিবর্তে "বিদ্যমান তৃতীয় পক্ষের লাইব্রেরিগুলিকে" অনুমতি দেওয়ার জন্য চ্যালেঞ্জটি সংশোধন করা উচিত।
jpmc26

আপনি কি গোলমাল সাদা হওয়ার বিষয়ে এক স্টিকার হয়ে যাচ্ছেন? আপনি যদি সত্যিই যাচাই করতে চান: এর স্বতঃআরোগ্রোগ্রামের শূন্যের চারপাশে একটি স্পষ্ট স্পাইক থাকা উচিত এবং অন্য কোনও বিলম্বের মধ্যে প্রায় কিছুই নেই। আপনি যদি স্টিকারর না হয়ে থাকেন তবে আমি বলি যে এটি সাদা আওয়াজ বলে নির্দিষ্ট করা অর্থহীন। শুধু শোরগোল বলুন।
টিম সেগুইন

WebAudioAPI সম্পর্কে কি? আমি জেএস প্রোগ্রামটি কোড করেছিলাম, এটি সাদা
শোনায়

উত্তর:


4

ম্যাটল্যাব, ২৫

wavwrite(rand(8e3,1),'a')

ডেস্ক নামে একটি নতুন ডাব্লুএভিভি ফাইল লিখেছে a। এটিতে স্বাক্ষরিত পূর্ণসংখ্যার বিন্যাসে 8 কেএইচজেডের নমুনা হার এবং প্রতি স্যাম্পল প্রতি 16 বিট রয়েছে। উত্স ডেটাটি একইভাবে বিরতিতে বিতরণ করা হয় [0,1], যা [0,32767]সংখ্যার বিন্যাসে রূপান্তরিত হওয়ার পরে অন্তরটিতে ম্যাপ করা হয় ।

ম্যাটল্যাব, 28 - 4 (10% + 5%) = 24

আমি নিশ্চিত না যে ওপি কীভাবে সেটিংসে ভেরিয়েবলগুলিতে সংরক্ষণ করা যেতে পারে তার অর্থ কী, তবে আমি এটিকে এমনভাবে ব্যাখ্যা করেছি যা এই ক্ষেত্রে অনুকূল। ধরে নিচ্ছি যে:

  • পছন্দসই বিট হার (বিট / সেকেন্ডে) ব্যবহারকারী ভেরিয়েবলের মাধ্যমে সরবরাহ করে b। নমুনা প্রতি বিট 16 এ হার্ড কোডিং হয়।

  • ফাইলের পছন্দসই সময়কাল (নমুনাগুলিতে) ভেরিয়েবলটিতে দেওয়া হয় d

ফলাফল হলো:

wavwrite(rand(d,1),b/16,'a')

ম্যাটল্যাব, 16 - 4 (15% + 10%) = 12

বোনাসের অনুসরণে স্লাজের আরেকটি স্তর যুক্ত করে, আমি আরও একটি অনুমান করি: ফাইলটি আউটপুট ব্যবহার করতে পছন্দসই ফাংশনটি ভেরিয়েবলের মধ্যে নির্দিষ্ট করা উচিত f। তারপরে কোডটি সরল করে:

f(rand(d,1),'a')

ফাংশনের জন্য অনুমোদিত মানগুলি হ'ল:

f = @wavwrite

অথবা

f = @auwrite

প্রতিটি ফাংশন উপরের স্নিপেটকে .auনির্দিষ্ট সময়ের সাথে 8 কেএইচজেডের নমুনা হারে উপযুক্ত বিন্যাসের (ডাব্লুএভি বা ) একটি ফাইল লিখবে । আমি বিটরেট এখান থেকে স্পেসিফিকেশন জন্য বোনাস খুলে নিয়ে, কারণ auwriteঅক্ষমতা পরিবর্তে 16 মত নমুনা অনুসারে 8 টি বিট wavwriteআছে। আমি আরও চরিত্র ব্যবহার না করেই দু'জনের সুরেলা করার কোনও উপায় দেখতে পাচ্ছি না।


10

বাশ, 34

dd if=/dev/sda of=file.wav count=1

আপনি যদি হার্ড ড্রাইভ 'এলোমেলো' না চান, (অনেক ধীর)

dd if=/dev/random of=file.wav count=9

স্পিন, ২৮

word x=0
repeat
 word[?x]=?x

4
কোনওভাবেই আমি মনে করি না যে ফাইলের শিরোনামটি সম্পূর্ণরূপে এলোমেলো / হার্ড ডিস্ক ড্রাইভের প্রথম সেক্টরের সমান হতে পারে
জন ডিভোরাক

1
হের ডক্টর সঠিক হতে পারে, যদি পরীক্ষার জোতাটি ভিএলসি হয়। ভিএলসি বেশ ক্ষমাশীল।
জোনাথন ভান মাত্রে

1
আপনি শব্দ তৈরি করেছেন, তবে এটি কি সাদা আওয়াজ?
স্টিফেন মেলভিন

1
/ dev / এলোমেলোভাবে ম্যাক্স এও আছে, হ্যাঁ! দুর্ভাগ্যক্রমে আইটিউনস ফলাফল wav ফাইল খেলতে পারে না। আমি যে অভিযোগ করতে পারি তা নয় - আমি ক্ষমা ও দেশি কোডেকের বহু সংখ্যার কারণে আমি ভিএলসি পছন্দ করেছিলাম।
জিউলিও মাসকারেলো

1
ওয়ার্কিং ডিরেক্টরি চলাকালীন আপনি কমান্ডটি প্রয়োগ করে পাঁচটি অক্ষর সংরক্ষণ করতে পারেন /dev
ডেভিড রিচার্বি

4

গণিত 52 - 5 = 47

gsসেকেন্ড এবং 8000 বিপিএসের একটি সাদা শব্দ। wav ফাইল রফতানি করে ।

g@s_:=Export["p.wav",RandomReal@{-1,1}~Play~{t,0,s}]

উদাহরণ: একটি 6 সেকেন্ডের সাদা শব্দ ফাইলটি রফতানি করা হয়েছে।

g[6]

p.wav


4

সুপারকোলাইডার, 89 - 10% = 80.1 বাইট

দুঃখের বিষয়, ইচ্ছাকৃতভাবে শব্দ / অডিও তৈরির জন্য তৈরি করা সত্ত্বেও, এই ভাষাটি এখানে জিততে পারে না। তবে কোড গল্ফে এটি সুপারকোলাইডারের প্রথম উপস্থিতি, তাই দুর্দান্ত!

এই জমাটি মূলত হেরে যায় কারণ এই ভাষার ক্লায়েন্ট / সার্ভার ডিজাইনের কারণে রেকর্ডিং সেটআপ করা এবং এটি ঘটানো একটি ভার্জিক প্রক্রিয়া। তবুও, আপনি যখন কেবল সাদা শব্দের চেয়ে আরও জটিল কিছু করতে বলছেন তখন খুব অল্প কোডে প্রচুর পাওয়ার সহ এটি দুর্দান্ত ভাষা

ফাইলের সময়কাল অপেক্ষা () মান পরিবর্তন করে সেট করা আছে। আমি এটিকে একটি চলকতে রাখতে পারি, তবে সুপারকোলাইডারের কথা বলার মতো কোনও স্টিডিও নেই বলে এর আসলে কোনও অর্থ নেই। ইন্টারঅ্যাক্টিভিটি সার্ভারটি চলমান থাকাকালীন কোড লাইভ ম্যানিপুলেটেডে রয়েছে। মূলত, আইডিই হ'ল আই / ও (যদি না আপনি নিজের তৈরির জন্য ইউআই তৈরি করেন)।

এখানে গল্ফ করা সংস্করণ:

{WhiteNoise.ar(1)}.play;s.prepareForRecord;Routine.run{s.record;wait(99);s.stopRecording}

এইফ বা ওয়াভ রেকর্ড করার বিকল্পের সাথে এখানে একটি গল্ফযুক্ত সংস্করণ রয়েছে এবং একটি নমুনা ফর্ম্যাট নির্দিষ্ট করে (ইনট 16, ইনট 8 এবং ফ্লোট সমস্ত বিকল্প)। দুর্ভাগ্যক্রমে, এমনকি সমস্ত বোনাসের সাথে, উপরের সংস্করণটি আরও ভাল ভাড়া। এটি 139 - 30% = 97.3 বাইট হবে।

s.recSampleFormat='int16';s.recHeaderFormat='wav';{WhiteNoise.ar(1)}.play;s.prepareForRecord;Routine.run{s.record;wait(99);s.stopRecording}

এবং এখানে পরবর্তীগুলির একটি নিরবচ্ছিন্ন সংস্করণ, যাতে আপনি কী দেখতে পাচ্ছেন তা দেখতে পাবেন।

s.recSampleFormat='int16';
s.recHeaderFormat='wav';

{WhiteNoise.ar(1)}.play;
s.prepareForRecord;

Routine.run{
    s.record;
    wait(99);
    s.stopRecording
}

সুপারকোলাইডার ব্যবহারের জন্য একটি ভোট। এটির জন্য আরও অনেক ধাঁধা রয়েছে for সংগীত এবং অডিও
চার্লস

4

বাশ + আলএসএ, স্কোর: 44 (52 টি চর - (10% + 5%) বোনাস)

অন্যান্য bashউত্তরের চেয়ে দীর্ঘ , তবে সময়কাল এবং বিটরেট গ্রহণ করে। ফাইলটিতে যুক্তিসঙ্গতভাবে সঠিক শিরোনাম যুক্ত করে, সুতরাং যুক্তিসঙ্গতভাবে বহনযোগ্য হওয়া উচিত:

arecord -r$2|head -c44;head -c$[$2*$1] /dev/urandom

স্ক্রিপ্ট হিসাবে chmod +xএটি সংরক্ষণ করুন এবং এটি চালান:

$ ./wav.sh 1 44100 > c.wav
Recording WAVE 'stdin' : Unsigned 8 bit, Rate 44100 Hz, Mono
$ 

দ্রষ্টব্য, .wav আউটপুটটি stdout করতে হয়, সুতরাং এটি অবশ্যই একটি ফাইলে পুনঃনির্দেশ করা উচিত।


গতি প্রয়োজন হয় না, আপনি / dev / urandom এর পরিবর্তে / dev / এলোমেলো পড়ে প্রায় 1,20 টি অক্ষর সংরক্ষণ করতে পারেন।
জিউলিও মাসকারেলো

1
আউটপুট হয় stdin ?
ব্যবহারকারী 253751

0

সি 127 115 বাইট

#define H htonl
main(c){for(write(1,(int[]){H(779316836),H(24),-1,H(2),H(8000),H(1)},24);;write(1,&c,1))c=rand();}

কোডের সিংহভাগ একটি * .উ ফাইলের জন্য শিরোনাম লিখে। এটি স্টুডোর্যান্ডম সাউন্ড ফাইলটিকে স্ট্যান্ডার্ড আউট প্রিন্ট করে।

নমুনা হার পরিবর্তন করে সামঞ্জস্য করা যেতে পারে 8000

ctrl-cযখনই আপনি থামাতে চান: সময়টি হিট করে সামঞ্জস্য করা যায় :-)


0

জাভাস্ক্রিপ্ট, 167 বাইট

সতর্কতা: রান করার আগে ভলিউম হ্রাস করুন। সাদা গোলমাল কদর্য

ফাইল উত্পন্ন করবেন না, সম্ভবত যা প্রত্যাশা করা হয়েছিল তা নয়।

-4 বাইট হ্যাক প্লে শব্দটি কেবল বাম চ্যানেলে

c=new AudioContext()
n=c.createScriptProcessor(s=512)
n.connect(c.destination)
n.onaudioprocess=e=>{a=s;while(a--){e.outputBuffer.getChannelData(0)[a]=Math.random()}}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.