MIDI2ABC(1) General Commands Manual MIDI2ABC(1)

midi2abc - برنامه تبدیل فایلهای با فرمت MIDI به نشانهگذاری موسیقی abc

midi2abc -f infile [-xa] [-ga] [-a acbeats] [-m time signature] [-ppu parts per unit] [-aul denominator of unit length] [-gu] [-b bars] [-Q tempo] [-u pulses] [-k key] [-c channel] [-obpl] [-bpl bars] [-bps bars] [-o filename] [-s] [-sr units] [-sum] [-nb] [-nt] [-splitvoices] [-midigram] [-mftext] [-mftextpulses] [-nogr] [-title string] [-origin string] [-midinotes]

برنامه midi2abc یک فایل با فرمت MIDI را دریافت کرده و آن را به قالبی تا حد امکان نزدیک به فرمت متنی abc تبدیل می‌کند. سپس کاربر باید فیلدهای متنی که در هدر MIDI موجود نیستند را اضافه کند و در صورت نیاز، نت‌های خروجی abc را مرتب نماید.

خروجی midi2abc روی صفحه نمایش چاپ می‌شود. برای ذخیره آن در یک فایل، از عملگر تغییر مسیر استفاده کنید (مانند midi2abc -f file.mid > file.abc) یا با استفاده از گزینه -o فایل خروجی را مشخص کنید.

تنها از یکی از گزینه‌های -u، -gu، -b و -Q یا هیچ‌کدام استفاده کنید. برنامه midi2abc به‌طور معمول واحدهای زمانی MIDI را به واحدهای کوانتومی (quantum units) تبدیل می‌کند که معمولاً متناظر با نت 1/16 یا 1/32 در abc است. اگر هیچ‌یک از این گزینه‌ها مشخص نشوند، برنامه از اطلاعات PPQN در هدر MIDI برای محاسبه ضریب تبدیل مناسب استفاده خواهد کرد. برای بیشتر فایل‌های MIDI در وب، توصیه می‌شود به اطلاعات هدر MIDI تکیه کنید و از هیچ گزینه‌ای به جز گزینه‌های قالب‌بندی استفاده نکنید.

برنامه اطلاعات time signature را در صورت وجود از فایل MIDI استخراج خواهد کرد. در غیر این صورت 4/4 فرض می‌شود یا می‌توانید آن را با گزینه -m مشخص کنید.

اگر قطعه دارای anacrusis باشد، می‌توانید از گزینه -ga یا -xa برای تخمین طول آن استفاده کنید. همچنین می‌توانید مقدار آن را با استفاده از گزینه -a مشخص کنید. مقدار anacrusis بر حسب نصف طول واحد (half unit lengths) مشخص می‌شود، که در آن طول واحد توسط فیلد L: تعریف می‌شود. به عنوان مثال اگر L: 1/8 باشد، یک quarter note با مقدار 4 مشخص می‌شود (۴ واحد 1/16).

که در آن acbeats مقدار anacrusis را بر حسب نصف طول واحد مشخص می‌کند.
استخراج anacrusis از فایل با یافتن اولین نت قوی.
حدس زدن anacrusis با کمینه‌سازی تعداد ties در عرض bars.
تعیین time signature.
تعداد bars مورد نظر در خروجی.
تعیین tempo بر حسب quarter-notes در دقیقه.
امکان تعیین مستقیم تعداد midi pulses در هر واحد زمانی abc را فراهم می‌کند.
به‌طور معمول، کوچک‌ترین واحد نت که midi2abc می‌تواند استخراج کند نصف طول واحد L: است. به این واحد، quantum unit گفته می‌شود. بنابراین برای L: 1/8، برنامه midi2abc می‌تواند نت‌های 1/16 را استخراج کند اما نت‌های 1/32 را خیر. می‌توانید با تعیین مثلاً -ppu 4 این مقدار را تغییر دهید. تعداد بخش‌ها باید توانی از ۲ باشد.
به‌طور معمول midi2abc بسته به time signature طول واحد 1/8 یا 1/16 را انتخاب می‌کند. برای time signatures کوچک‌تر از 3/4 مقدار L: 1/16 و برای time signatures بزرگ‌تر مقدار L: 1/8 استفاده می‌شود. با استفاده از این پارامتر می‌توانید طول واحد مورد استفاده را تعیین کنید؛ بنابراین -aul 32 باعث می‌شود midi2abc از یک طول واحد معادل نت 1/32 استفاده کند.
به midi2abc می‌گوید که تعداد midi pulses در هر واحد زمانی abc را از روی دیرند نت یا فاصله‌گذاری در فایل MIDI تخمین بزند.
به midi2abc می‌گوید که با کمینه‌سازی تعداد accidentals، سرکلید (key signature) را حدس بزند، حتی اگر key signature از قبل در فایل MIDI مشخص شده باشد. به‌طور پیش‌فرض key signature همان مقدار مشخص‌شده در فایل MIDI است. اگر مشخص نشده باشد، برنامه key signature را با کمینه‌سازی accidentals حدس می‌زند.
تعیین key signature: از 6- تا 6 sharps.
فقط این کانال MIDI را انتخاب می‌کند.
فایل ورودی با فرمت MIDI.
نام فایل خروجی abc را مشخص می‌کند.
نت‌های بسیار کوتاه را دور نمی‌اندازد.
سکوت‌های کوتاهِ کوچک‌تر از اندازه تعیین‌شده را پس از یک نت یادداشت‌گذاری (notate) نمی‌کند. اگر اندازه (بر حسب quantum units) صفر باشد، کاری انجام نمی‌شود. برای مقادیر بزرگ‌تر، سکوت در نت قبلی جذب می‌شود؛ به عبارت دیگر، نت قبلی برای در بر گرفتن آن سکوت طولانی‌تر می‌گردد.
خلاصه‌ای کوتاه از فایل ورودی MIDI را چاپ می‌کند.
به دنبال broken rhythms نمی‌گردد.
به دنبال triplets نمی‌گردد.
تنها یک bar در هر خط به جای ۴ عدد چاپ می‌کند. برای موسیقی‌های پیچیده این کار خوانایی را بهبود بخشیده و از برخی مشکلات با مبدل‌های abc به postscript جلوگیری می‌کند. این گزینه منسوخ شده است.
(بدون گروه‌بندی نت‌ها.) بین تمام نت‌ها یک فاصله قرار می‌دهد. این کار فایل postscript با زیبایی کمتر تولید می‌کند اما ویرایش آن آسان‌تر است.
در هر خط nbars از موسیقی را چاپ کرده و به دنبال آن یک بک‌اسلش قرار می‌دهد.
هنگامی که nbars چاپ شدند (شامل خطوطی که با بک‌اسلش ادامه‌دار شده‌اند)، به یک خط جدید می‌رود (بدون بک‌اسلش).
این پارامتر با تقسیم یک voice کامل به چندین voice، با polyphonic chords برخورد می‌کند. (یک polyphonic chord آکوردی است متشکل از نت‌هایی که در زمان یکسان شروع یا پایان نمی‌یابند.) به‌طور معمول، midi2abc نت‌های طولانی‌تر را با استفاده از ties به نت‌های آکورد بعدی متصل می‌کند. به عنوان مثال: [Bd-]d [Bd-]d|. در حالت ایده‌آل این باید به دو voice یعنی Bz Bz و d2 d2 تفکیک شود. با این حال، تفکیک یکتا نیست و Bz d2 و d2 Bz نیز قابل قبول هستند.
هنگامی که این گزینه مشخص شود، تمام گزینه‌های دیگر نادیده گرفته شده و هیچ فایل abc تولید نمی‌شود. در عوض فهرستی از تمام نت‌های موجود در فایل MIDI با قالبی ثابت چاپ می‌شود. هر خط نشان‌دهنده یک جفت رویداد note on/off در MIDI است. این خط شامل زمان on/off نت، شماره track آن، شماره کانال، midi pitch و midi velocity است. آخرین رکورد نشان‌دهنده دیرند فایل MIDI بر حسب واحدهای پالس MIDI (pulse units) است. این خروجی به گونه‌ای طراحی شده که وارد یک رابط کاربری گرافیکی شود که نمایشی گرافیکی (piano roll) تولید می‌کند.
هنگامی که این گزینه مشخص شود، تمام گزینه‌های دیگر نادیده گرفته شده و هیچ فایل abc تولید نمی‌شود. در عوض فهرستی از تمام دستورات MIDI چاپ می‌شود. خروجی برای انتقال به یک رابط کاربری گرافیکی ارائه‌شده توسط runabc.tcl طراحی شده است.
مشابه -mftext است، به جز اینکه واحدهای زمانی بر حسب midi pulses هستند.
فیلد عنوان پیش‌فرضِ پس از :T را با رشته داده‌شده جایگزین می‌کند.
یک فیلد :O با رشته داده‌شده اضافه می‌کند.
مانند -mftext، این گزینه مقادیر midi pitches موجود در فایل MIDI را خروجی می‌دهد، که در آن نت دوی میانی (middle C) برابر با ۶۰ است، انحراف نت از گام اعتدال مساوی (equal tempered scale) بر حسب واحدهای cents، و مقدار pitch بر حسب cents برای نت نسبت به C است. اگر از pitchbend استفاده شود، مقدار آن درون پرانتز پس از cents می‌آید. در فاصله semitone تعداد ۱۰۰ سنت (cents) وجود دارد؛ بنابراین یک pitch در نیمه راه بین C و #C دارای مقدار سنت ۵۰ خواهد بود. در یک octave مقدار ۱۲۰۰ سنت وجود دارد، بنابراین مقدار pitch نت D بکار برابر ۲۰۰ خواهد بود. مقدار pitch نت B بکار برابر ۱۱۰۰ است. این مقادیر برای اعتبارسنجی مقادیر pitch در یک گام اعتدال مساوی تقسیم‌شده به بیش از ۱۲ پرده (tones) مفید هستند. مقادیر pitch از مقدار pitchbend در فایل MIDI تعیین می‌شوند که معمولاً ۸۱۹۲ است. با این حال، برای برخی پخش‌کننده‌های MIDI مقدار زیروبمی (pitch) می‌تواند با استفاده از پیام‌های sysex (پیام‌های System Exclusive) نیز تغییر کند. به‌ویژه، ابزار abc2svg اثر Jef Moine به جای pitchbends که روی تمام نت‌های یک کانال اثر می‌گذارند، از پیام‌های sysex استفاده می‌کند.

* کلید (key) طوری انتخاب می‌شود که تعداد accidentals به حداقل برسد. همچنین، کاربر می‌تواند کلید را به صورت عددی مشخص کند (یک عدد مثبت نشان‌دهنده تعداد sharps و یک عدد منفی برابر با قرینه تعداد flats است).

* طول نت می‌تواند با مشخص کردن تعداد کل bars یا tempo قطعه تنظیم شود. همچنین طول نت می‌تواند از فایل خوانده شود. با این حال، به‌طور پیش‌فرض به روشی اکتشافی (heuristic) از فواصل بین نت‌ها استنباط می‌شود. این بدان معناست که هنگام نواختن یک قطعه از کیبورد، نیازی به استفاده از ساعت MIDI به عنوان مترونوم ندارید.

* خطوط میزان (Barlines) به‌طور خودکار درج می‌شوند. کاربر تعداد میزان‌ها را در anacrusis قبل از اولین barline و time signature مشخص می‌کند.

* برنامه می‌تواند طول anacrusis را حدس بزند، چه با جستجو برای اولین نت قوی یا با کمینه‌سازی تعداد نت‌های تقسیم‌شده توسط tie در عرض یک barline.

* در جایی که یک نت فراتر از یک barline امتداد یابد، به دو نت متصل به هم (tied) تقسیم می‌شود.

* خروجی دارای ۴ عدد bar در هر خط است.

* نشانه‌های عرضی (accidental signs) کافی در قطعه قرار داده می‌شود تا اطمینان حاصل شود در صورت افزودن یا حذف یک barline، هیچ خطای زیروبمی رخ ندهد.

* برنامه تلاش می‌کند نت‌ها را به شکلی معقول در هر bar گروه‌بندی کند.

* از Triplets و broken rhythms (a>b) پشتیبانی می‌شود.

* آکوردها (Chords) شناسایی می‌شوند.

* اطلاعات متنی فایل MIDI اصلی به صورت کامنت گنجانده می‌شود.

* گزینه -c می‌تواند برای انتخاب تنها ۱ کانال MIDI استفاده شود. رویدادهای سایر کانال‌ها نادیده گرفته می‌شوند.

برنامه midi2abc کارهای زیر را انجام نمی‌دهد:

* عنوان قطعه، آهنگساز یا هر فیلد دیگری به جز X: ، K: ، Q: ، M: و L: را ارائه نمی‌دهد - این موارد باید بعداً به صورت دستی اضافه شوند، هرچند ممکن است در متن فایل MIDI گنجانده شده باشند.

* از duplets، quadruplets و سایر ویژگی‌های نامتعارف پشتیبانی نمی‌کند.

* از تغییرات key یا time signature در میانه قطعه پشتیبانی نمی‌کند.

* تکرارها را استنباط نمی‌کند. خروجی فقط نت‌های موجود در فایل ورودی است.

* قطعه abc را دقیقاً همان‌طور که به abc2midi داده شده بود بازیابی نمی‌کند. با این حال، اگر می‌خواهید این کار را انجام دهید، دستور midi2abc -xa -f file.mid به آن نزدیک است.

abc2ps(1)، abc2midi(1)، abc2abc(1)

James Allwright <J.R.Allwright@westminster.ac.uk>

Seymour Shlien <fy733@ncf.ca>

این صفحه راهنما نسخه 2.91 برنامه midi2abc از تاریخ 09 March 2008 را توصیف می‌کند.

حق نشر 1999 James Allwright

اگر متن ترانه (lyrics) در همان track نت‌ها جاسازی شده باشد، midi2abc به درستی کار نمی‌کند. اگر فایل MIDI را با استفاده از abc2midi تولید می‌کنید، از گزینه -STFW استفاده کنید تا مطمئن شوید که lyrics در یک track جداگانه قرار می‌گیرد.

برنامه midi2abc «همان‌طور که هست» و بدون هرگونه ضمانتی ارائه می‌شود. این برنامه یک نرم‌افزار آزاد است و می‌تواند تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License) بدون پرداخت هزینه استفاده، کپی، اصلاح و توزیع شود.

20 January 2025