শব্দ শব্দ


11

লোকেরা অনেক কিছুই লিখেছেন যাতে একটি জিনিসটিকে অন্যটির মতো রূপ দেওয়া যায়। এখন আমি গানে চিঠি অনুবাদ করতে সক্ষম হচ্ছি! এমন একটি প্রোগ্রাম লিখতে আপনার কাজ যা একটি পাঠ্য ফাইল নেয় এবং প্রতিটি চিঠির একটি নির্দিষ্ট নোট থেকে রূপান্তরিত করে একটি শব্দ ফাইল আউটপুট দেয় C3-C8

দাবি অস্বীকার - আমি আসলে সঙ্গীতটি কোনও ভাল লাগার আশা করি না তবে আমি অবাক হওয়ার আশা করি।

বিশেষ উল্লেখ

  • আপনি কোনও ফাইলের নাম স্ট্রিং এবং বিপিএম (প্রতি মিনিটে বীট) হিসাবে নেন
  • আপনি Aনোট হতে বড় হাতের তৈরিC3
  • এবং এই ক্রমের পরে প্রতিটি চরিত্রের জন্য একটি অর্ধ-পদক্ষেপে যান: ABCDEFGHIJKLMNOPQRSTUVWXYZ ()-,;.'"abcdefghijklmnopqrstuvwxyz
  • হ্যাঁ, প্রতিটি চরিত্রটি ব্যবহার করা হবে না কারণ এটি অনেকগুলি অক্টেভ স্প্যান করে।
  • আপনি ফাইলের প্রতিটি চরিত্রকে এভাবে অনুবাদ করেন
  • প্রদত্ত বিপিএম-এ কোয়ার্টার নোট হিসাবে নোটগুলি একসাথে রাখুন
  • হয় সাউন্ড ফাইল হিসাবে সংরক্ষণ করুন (আমি অনুমান করছি মিডি সবচেয়ে সহজ হবে, তবে কিছু ঠিক আছে) বা এটি প্লে করুন
  • যে কোনও বুদ্ধিমান ইনপুট ফর্ম্যাট ভাল
  • কোনও মানক ফাঁক নেই
  • এটি কোড-গল্ফ, তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড !

বোনাসেস

  • আউটপুট স্থানান্তর করার অনুমতি দিন - 50 বাইট
  • একাধিক ফাইল - 75 বাইট গ্রহণ করে একাধিক ট্র্যাককে একে অপরের উপর সুপারিম্পস করার অনুমতি দিন
  • একের পর এক নোটে একটানা অক্ষরে যোগ দিন - 50 বাইট

সম্পাদনা: বাহ, আমাদের নেতিবাচক স্কোর আছে। আমি শনিবার বিজয়ীর নাম ঘোষণা করব।


আপনি কখন বিজয়ী সিদ্ধান্ত নেবেন?
LegionMammal978

আমরা কি ধরে নিতে পারি ইনপুটটিতে কোনও তালিকাভুক্ত অক্ষর থাকবে না? বা, যখন আমরা তালিকাভুক্ত অক্ষরগুলির মুখোমুখি হই তখন আমাদের কী করা উচিত?
অ্যাপসিলাররা

স্ন্যাপে @ এপ্লিসাররা ! উত্তর, তিনি বলেছিলেন যে তিনি অনির্ধারিত আচরণের অনুমতি দেবেন।
LegionMammal978

আমি একটি নমুনা আপলোড করেছি; আপনি বেশ সঠিক ছিলেন, সত্যই এটি কোনও ভাল
শোনায়

উত্তর:


6

ম্যাটল্যাব, 159-50-50-75 = -16

নমুনা ইনপুট

নমুনা আউটপুট

খাঁটি সাইন সাউন্ড ওয়েভ উত্পন্ন করে, খুব মজাদার (আরও ভাল স্কোর সহ সাতোথও সম্ভব, তবে এটি কিছুটা ... খুব মজার) শোনাচ্ছে । একটি ফাংশন হিসাবে কাজ করে, সুতরাং এটি ['abc';'def']'ট্র্যাক' প্রতি এক সারি সহ একটি অক্ষর অ্যারে ( ) প্রত্যাশা করে । আমি মনে করি এটি 'কোনও বুদ্ধিমান ইনপুট ফর্ম্যাট' এর আওতায় আছে তবে সাধারণ sensকমত্য যদি আমার কোনও ফাইল পড়ার দরকার হয় তবে আমি মনে করি আমি এটি পরিবর্তন করতে পারি। ইনপুট iহ'ল পাঠ্য ট্র্যাক (সমান দৈর্ঘ্যের), bপ্রতি মিনিটে tপ্রহার এবং ট্রান্সপোজ (স্থানান্তরিত না হওয়ার জন্য সরবরাহ 0)। এটি সাইন ইনপুট অফসেট করে একটিতে দুটি সাইন মিশ্রিত করে, তাই আমাকে তিনটি বোনাস পেয়েছে, আমাকে নেতিবাচক স্কোর দিয়ে।

function v(i,b,t)
s=0;for r=1:size(i)
o=[];for k=i(r,:)
o=cat(2,o,sin(55*pi*2^((k-28+t)/12)*(numel(o)/2^13+(0:1/2^13:60/b))));end
s=s+o;end
sound(s/max(s))
end

ইনপুট ফাইল ব্যবহার করে সংস্করণ: 211-175 = 36

ইনপুট আর্গুমেন্ট iএখন ফাইলের নাম উপস্থাপন করে, অন্য পরামিতি অপরিবর্তিত রয়েছে। নতুন প্রকাশে কাজ নাও করতে পারে কারণ আমি একটি সতর্কতা পাচ্ছি যা textreadশীঘ্রই হ্রাস করা হতে পারে। সম্পাদনা করুন: টেক্সট্রেড স্পষ্টতই হোয়াইট স্পেসে আলাদা হয়ে যায়, তাই আমি এটি স্থির করেছিলাম। এছাড়াও, আমি মনে করি পরীক্ষার সময় আমি কিছু এলিয়েনকে দুর্ঘটনাক্রমে যোগাযোগ করেছি the

function v(i,b,t)
i=textread(i,'%s','whitespace','','delimiter','\n');s=0;for r=1:size(i)
o=[];for k=i{r,:}
o=cat(2,o,sin(55*pi*2^((k-28+t)/12)*(numel(o)/2^13+(0:1/2^13:60/b))));end
s=s+o;end
sound(s/max(s))
end

আপনি কোন সংস্করণ পছন্দ করেন? :)


ওয়েল, বৈশিষ্ট স্পষ্টভাবে বলছেন একটি ফাইল থেকে ইনপুট নিতে ...
LegionMammal978

@ LegionMammal978 আপনি যদি জেদ করেন: .matফাইলগুলি বুদ্ধিমান ইনপুট ফর্ম্যাট। আপনার পাঠ্য থাকা একটি 'i' ভেরিয়েবলের সাহায্যে একটি .mat ফাইল তৈরি করুন। তারপরে, load(i);শীর্ষ সংস্করণটির লাইন 2 এর শুরুতে যুক্ত করুন । স্কোর: -16 + 8 = -8। যখন আপনার মন্তব্যটি আমার চেয়ে বেশি উত্সাহ পাবে, বা যখন ওপেনের মতামত রয়েছে তখন আমি এটি করব :)
সানাইচাইজস

4

স্ন্যাপ ! - 401 - 75 = 326

এটি এখানে অনলাইনে চেষ্টা করুন।

আমি প্রোগ্রামটির জন্য বাইট গণনা করার এই পদ্ধতিটি ব্যবহার করছি ।

এখানে চিত্র বর্ণনা লিখুন

আমি একবারে একাধিক শব্দ বাজানো করেছি।

মূল কাঠামোটি মূল হিসাবে একই (নীচে দেখুন), তবে সংযোজন সহ launch{}launch{}একত্রে প্রবেশের অনুমতি দিয়ে কোডটির ভিতরে দিয়ে একটি নতুন থ্রেড শুরু করে।

পাঠ্য হিসাবে কোডটি হ'ল:

set[c v]to[ABCDEFGHIJKLMNOPQRSTUVWXYZ ()-,;.'"abcdefghijklmnopqrstuvwxyz
set[l v]to(list>
ask[BPM]and wait
set tempo to(answer)bpm
repeat until<(answer)=[
ask[notes]and wait
add(answer)to(l
end
delete(last v)of(l
for each(i)of(l
launch{
repeat(length of(i))(#
play note(i(c)(letter(#)of(i)))for(0.25)beats

(i(h)(n))
report(call(JavaScript function ([h][n]) {[return h.indexOf(n)+48]})with inputs(h)(n

আসল কোড, 308।

এখানে চিত্র বর্ণনা লিখুন

ভাগ্যবান স্ন্যাপ! এমআইডিআই প্লে অন্তর্নির্মিত আছে।;)

দুর্ভাগ্যক্রমে, এটির কোনও indexOfফাংশন নেই, সুতরাং আমাকে একটি বহিরাগত জাভাস্ক্রিপ্ট কল করতে হবে, যা বেশ ব্যয়বহুল।

repeat () (#)ব্লক পুনরাবৃত্তির লাইব্রেরি থেকে আসে।

কোডটি এই জাতীয় পাঠ্য হিসাবে লেখা যেতে পারে, যা আমি 308 বাইট পেতে পারি:

set[c v]to[ABCDEFGHIJKLMNOPQRSTUVWXYZ ()-,;.'"abcdefghijklmnopqrstuvwxyz
ask[BPM]and wait
set tempo to(answer)bpm
ask[notes]and wait
repeat(length of(answer))(#)
play note(i(c)(letter(#)of(answer)))for(0.25)beats

(i(h)(n))
report(call(JavaScript function ([h][n]) {[return h.indexOf(n)+48]})with inputs(h)(n

এসএনএপি-এর কোনও সংগ্রহ / শোকেস রয়েছে যা আপনি এগুলি স্ক্র্যাচের মতো যুক্ত করতে পারেন? একটি চলমান সংস্করণে সরাসরি লিঙ্ক করা হ্যান্ডি আইএমও হবে।
জিওবিটস

হ্যাঁ. আমি আমার প্রকল্পের সাথে একটি লিঙ্ক যুক্ত করেছি। ভাল ধারণা. :)
Scimonster

এটি -1থেকে উপেক্ষা করা হয় না indexOf? এই মুহুর্তে মনে হচ্ছে এটি স্ট্রিংয়ে না থাকলেও এটি মিডি নম্বরটি 47 করেন
মাল্টেসেন

@ মাল্টেসেন প্রশ্নটি কখনই বলে না যে সঠিক সীমার বাইরে ইনপুট দিয়ে কী করবে।
স্কিমোনস্টার

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

4

গণিত, 219 - 50 - 75 - 50 = 44

c=CharacterRange;d=Import;EmitSound[Function[b,Sound[Split@Characters@d@b/.a:{__String}:>SoundNote[StringPosition[c["A","Z"]<>" ()-,;.'\""<>c["a","z"],a[[1]]][[1,1]]+#3-12,60Length@a/#2],{0,60StringLength@d@b/#2}]]/@#]&

ইনপুট হিসাবে স্থানান্তর করতে ইনপুট ফাইল, বিপিএম, এবং অর্ধ-পদক্ষেপের সংখ্যার তালিকা নেয় এবং শব্দটি চালায় (পিয়ানো থেকে, অন্য কোনও উপকরণ আরও বাইট নিতে পারে)) এটি খারাপ লাগে না!


1

জাভাস্ক্রিপ্ট (ES6) 377 - 50 - 50 - 75 = 202

প্রথমত, এখানে একটি চলমান স্নিপেট রয়েছে যা <input>ফাইল-পঠনের পরিবর্তে ক্ষেত্রগুলি ব্যবহার করে:

<b>BMP:</b> <input id="bpm" size=3 placeholder="BMP" value="120"> <b>Transpose:</b> <input size=3 id="transpose" placeholder="Transpose" value="0"><br/><br/><div id="tracks" style="float:left;padding-right:5px;"><input placeholder="Track" class="track"></div><button id="add">Add Additional Track</button><div style="clear:both; padding-top:5px;"></div><button id="play"><b>Play</b></button><script>f=function(s,b,z){C=new (window.AudioContext||window.webkitAudioContext);b=6e4/b;s.map(function(p){var o=C.createOscillator(t=setTimeout);o.connect(C.destination);o.start();p.split("").map(function(c,i){t(function(){o.frequency.value=440*Math.pow(2, ("ABCDEFGHIJKLMNOPQRSTUVWXYZ ()-,;.'\"abcdefghijklmnopqrstuvwxyz".indexOf(c)-21+z)/12)},b*i)});t(function(){o.stop()},p.length*b)})};document.getElementById("play").onclick=function(){f([].map.call(document.getElementsByClassName("track"),function(e){return e.value;}),+document.getElementById("bpm").value,+document.getElementById("transpose").value);};document.getElementById("add").onclick=function(){var i=document.createElement("input");i.placeholder="Track";i.className="track";document.getElementById("tracks").appendChild(document.createElement("br"));document.getElementById("tracks").appendChild(i);};</script>

এবং এখন, আসল প্রবেশ:

f=(n,b,z)=>{C=new AudioContext;b=6e4/b;s=n.map(m=>(x=new XMLHttpRequest,x.open("GET",m,0),x.send(),x.responseText));s.map(p=>{var o=C.createOscillator(t=setTimeout);o.connect(C.destination);o.start();[...p].map((c,i)=>t(_=>o.frequency.value=440*Math.pow(2,("ABCDEFGHIJKLMNOPQRSTUVWXYZ ()-,;.'\"abcdefghijklmnopqrstuvwxyz".indexOf(c)-21+z)/12),b*i)),t(_=>o.stop(),p.length*b)})}

তিনটি আর্গুমেন্ট হ'ল ফাইলপথ স্ট্রিংগুলির একই সাথে খেলতে হবে, প্রতি মিনিটে নোট এবং সমস্ত ইনপুট স্থানান্তর করার জন্য অর্ধ-পদক্ষেপের সংখ্যা।

সাদা স্থান এবং মন্তব্য সহ:

f=(n,b,z)=>{
    C=new AudioContext;
    b=6e4/b;

    // fill s with the contents of each file
    s = n.map(m=>(x=new XMLHttpRequest,x.open("GET",m,0),x.send(),x.responseText));

    // play each track
    s.map(p=>{
        var o=C.createOscillator(t=setTimeout);
        o.connect(C.destination);
        o.start();

        // queue up each note with setTimeout
        [...p].map((c,i)=>
            t(_=>
                o.frequency.value=440*
                    Math.pow(2,
                            ("ABCDEFGHIJKLMNOPQRSTUVWXYZ ()-,;.'\"abcdefghijklmnopqrstuvwxyz".indexOf(c)-21+z)/12
                    ),
             b*i)
        );
        // queue up termination of those track
        t(_=>o.stop(),p.length*b)})
}

f(["file:///home/users/apsillers/notes.txt",
   "file:///home/users/apsillers/notes2.txt"],
  240, 5)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.