AUTOSP(1) AUTOSP(1)

autosp - پیش‌پردازنده‌ای برای تولید دستورهای فاصله‌گذاری نت در پارتیتورهای MusiXTeX

autosp [-v | --version | -h | --help]

autosp [-d | --dotted] [-l | --log] infile[.aspc] [outfile[.tex]]

این برنامه با تبدیل دستورهای (غیر استاندارد) به شکل notes ... \n (یا n ... \n) به یک یا چند دستور متداول فاصله‌گذاری نت (0tes es es ...)، که بر پایه دیرند واقعی نت‌ها تعیین می‌شوند و در صورت نیاز دستورهای فاصله‌گذاری در آن‌ها درج می‌گردد، ایجاد پارتیتورهای MusiXTeX را آسان‌تر می‌کند. کدنویسی یک میزان کامل را می‌توان به صورت بخش‌به‌بخش وارد کرد، بدون آنکه نیازی به نگرانی در مورد تغییرات فاصله‌گذاری نت درون آن بخش یا الزامات فاصله‌گذاری سایر بخش‌ها باشد.

برای مثال، اگر بر روی

notesqa Jqa K&a lqa ma n\n 
اعمال شود، autosp این خروجی را تولید می‌کند:
esqa Jqa K&a lqa ma n\n

به طور معمول، یک دستور notes چندین دستور متداول فاصله‌گذاری نت را تولید می‌کند.

اگر آرگومان infile پسوند .aspc نداشته باشد، در صورت وجود فایل، ورودی از infile.aspc خوانده می‌شود.

اگر آرگومان outfile پسوند .tex نداشته باشد، خروجی به outfile.tex فرستاده می‌شود. اگر هیچ آرگومان outfile مشخص نشده باشد، خروجی به infile.tex (یا در صورت برخورد با اعلان ocumentclass به infile.ltx ) هدایت خواهد شد.

برای دستورهای notes، شکست خطوط و فاصله‌ها می‌توانند پیش از بخش‌های نت قرار گیرند که قالب‌بندی انعطاف‌پذیرتری را برای متن مبدأ فراهم می‌کند؛ این شکست خطوط و فاصله‌ها در خروجی حذف خواهند شد.

برای نمونه،

n
  ibl0K0qb0K0bl0qb0{.K}bbbl0bbl0ql0L&
  ibbl1m{-2}qb1{.m}bbbl1bbl1qb1lql1k\n
قابل قبول است و چنین تولید می‌کند:
0tespibl0K0qb0K&ibbl1m{-2}qb1{.m}\n
0otes&bbbl1bbl1qb1l\n
0tesp0bl0qb0{.K}&ql1k\n
0otesbbbl0bbl0ql0L&\n

اگر گزینهٔ -l ( --log ) به کار رود، یک گزارش بسیار مفصل در infile.alog تولید می‌شود.

اگر گزینهٔ -d ( --dotted ) به کار رود، به نت‌های خط‌اتصال‌دار (beam) نقطه‌دار به شکل qb{n}{.p} فضای اضافی داده نمی‌شود؛ فرض بر این است که نت پسین با دستوری مشابه off یا یک دستور فاصله‌گذاری مانند qsk یا دستورهایی به شکل qlp{p}، qlpp{p}، ...، qpb{n}{p} و qppb{n}{p} همیشه همان‌طور که مشخص شده است فاصله‌گذاری می‌شوند.

اگر تنها یک خط حامل (staff) وجود داشته باشد، میزان‌های سکوت کامل متوالی در یک سکوت چندمیزانی ادغام می‌شوند. سکوت‌های وسط‌چین در میزان را می‌توان با استفاده از نماد استاندارد eftnextbar کدنویسی کرد، اما دستور غیراستاندارد pause (یا p) در یک قطعه نت نیز سکوت وسط‌چین تولید می‌کند.

دستورهای فاصله‌گذاری و k، sk، یا پرش‌های کوچک «به عقب» علاوه بر این، دستورهای غیراستاندارد QQsk، sk و Qsk در مبدأ پرش‌های «سراسری» تولید می‌کنند؛ یعنی به ترتیب اثر qqsk، sk یا qsk در تمام خطوط حامل. این کار تضمین می‌کند که در صورت نیاز به فضای اضافی در هر خط حامل، خطوط حامل همگام باقی بمانند.

پرش‌های سراسری را می‌توان در دنباله‌های کدنویسی گروهی (collective-coding) نیز با استفاده از حداکثر چهار کامای متوالی برای اعمال اثرات QQsk، sk یا Qsk به دست آورد. پرش‌های سراسری qsk (یا برای دوبل‌بمل، qsk) به طور خودکار پیش از علائم عَرَضی ('^'، '_'، '='، '<'، '>') در نت‌های کدنویسی گروهی درج می‌شوند (مگر زمانی که نت پیشین «مجازی» باشد؛ یعنی یک پرش). اگر این فاصله‌گذاری اضافی خودکار در زمینه‌ای خاص مورد نظر نباشد، می‌توان با جایگزین کردن علامت عرضی در دنباله کدنویسی گروهی با هر یک از دستورهای صریح علائم عرضی مانند ، ، 0، allsh، اگر فاصله‌گذاری خودکار کافی نباشد، می‌توان با افزودن کاماهای بیشتر یا استفاده از یک دستور مرسوم نت‌ها به جای n، فاصله را افزایش داد.

یک قطعه نت می‌تواند کاملاً خالی باشد، اما اگر قرار است یک قطعه نت با یک «فاصله» آغاز شود یا حاوی آن باشد، ارزش زمانی آن فاصله باید با دستوری به شکل {.*}، qa{*}، a{*} و غیره صریحاً مشخص شود.

از نسخه 2017-06-14، اثرات فراخوانی‌های TransformNotes توسط پیش‌پردازندهٔ autosp پیاده‌سازی شده است. این قابلیت استفاده از musixlyr را در پارتیتورهای autosp ممکن می‌سازد؛ فایل musixlyr.tex با پیاده‌سازی TransformNotes در musixtnt.tex ناسازگار است.

تمام دستورهای مرسوم دیگر MusiXTeX دقیقاً همان‌گونه که در ورودی داده شده‌اند به خروجی ارسال می‌شوند.

دستور autosp فاصله‌گذاری برای نت‌های معمولی را از روی خود دستورهای نت مشخص می‌کند؛ برای نمونه:

+
دستورهای qa، qu، ql و qp منجر به es می‌شوند؛
+
دستورهای a، u، l و s منجر به es می‌شوند؛

و غیره.

فاصله‌گذاری برای نت‌های خط‌اتصال‌دار(beamed) بر اساس چندگانگی خط اتصال تعیین می‌شود، به طوری که ib... منجر به es، و ibb... منجر به 0tes و غیره می‌گردد.

کدنویسی گروهی دنباله‌های نت (شامل علائم عرضی و نقطه‌ها) با بسط دادن دنباله به دنباله‌ای از دستورهای انفرادی نت مدیریت می‌شود.

دستور autosp نت‌ها را متناسب با اندازهٔ ساز مربوطه مقیاس‌بندی می‌کند.

دستور autosp فرض می‌کند که & و | (به جای 0xtinstrument و 0xtstaff) برای جداسازی سازها و خطوط حامل به کار رفته‌اند.

آپوجیاتوراها و نت‌های تزئینی (grace notes) با استفاده از inynotesize شناسایی می‌شوند؛ فاصله‌گذاری نت برابر با 1.45\lemskip استفاده می‌شود. اگر این مقدار مناسب نباشد و با یک پرش کوچک قابل اصلاح نباشد، می‌توان از یک دستور

دستور autosp از فواصل چندتایی (x-tuplets) معرفی‌شده با {x} یا :y} و تریوله‌ها (triplets) معرفی‌شده با هر یک از دستورهای زیر (صرف نظر از هرگونه تعریف دوبارهٔ xt یا uplettxt) پشتیبانی می‌کند:

riolet
ptrio
owntrio
ptuplet
owntuplet
دستور autosp فرض می‌کند که یک x-tuplet قرار است در مدت‌زمان (x-1)/x دیرند ظاهری آن x-tuplet اجرا شود. بنابراین، برای نمونه، فرض می‌شود یک تریوله با نت‌های چنگ در زمانِ یک نت سیاه اجرا می‌شود. اگر این فرض درست نباشد، x-tuplet باید با استفاده از یک دستور مناسب t2.aspc را ببینید: یک ۵-تایی از نت‌های شصت‌وچهارم (چهارلاچنگ) با دیرند مورد نظرِ شش نت شصت‌وچهارم.

در برخی پارتیتورهای پلی‌ریتمیک، ممکن است عدد xt جابه‌جا شود، حتی اگر خود نت‌ها به درستی فاصله‌گذاری شده باشند. در این موارد، می‌توان با استفاده از دستورهای غیر استاندارد Triolet (بدون آرگومان) یا {k} خروجی معمول xt را حذف کرد و با استفاده از n (یعنی harnote) عدد را در جایگاه مناسب قرار داد.

دستور autosp می‌تواند x-tupletهای هم‌زمان را در چندین خط حامل مدیریت کند، به شرطی که مقادیر x و کل دیرند نت‌ها یکسان باشند.

در برخی پارتیتورهای دوره باروک، به‌ویژه آثار یوهان سباستیان باخ (J.S. Bach)، یک نت دولاچنگ با خط اتصال به صورت عمودی با نت سوم یک تریوله با نت‌های چنگ در خط حامل دیگر تراز می‌شود (به این معنی که باید به صورت هم‌زمان به صدا درآیند)؛ برای نمونه:

ibl0L0qb0{.L}qql0L
به گونه‌ای اجرا خواهد شد که گویی چنین نت‌نویسی شده است:
ptrio{b}10ql L
کدنویسی زیر نت دولاچنگ با خط اتصال را با نت سوم تریوله در یک خط حامل دیگر تراز می‌کند:
ibl0L0qb0{.L}
و به طور مشابه، برای تریوله‌های نت‌های دولاچنگ:
ibbu0J0qb0{.J}0{.J}
به طور کلی، ماکروهای تعریف‌شده توسط کاربر پردازش یا بسط داده نمی‌شوند؛ با این حال، تعاریفی به شکل
eftnextbar{otes ... \n}
تعاریفی ایجاد می‌کنند که TransformNotes را در نظر می‌گیرند.

فرض می‌شود تمام خطوط حامل کسر میزان یکسانی دارند؛ برای نمونه‌ای از نحوه دور زدن این محدودیت به فایل kinder2.aspc نگاه کنید.

دستور autosp ممکن است برای قطعات موسیقی با بیش از یک پارت (صدا) روی یک خط حامل منفرد مؤثر نباشد. شاید بهتر باشد برای هر پارت از یک خط حامل جداگانه استفاده کنید، در صورت نیاز از notes اجتناب ورزید، یا در ابتدا برخی پارت‌ها را حذف کرده و بعداً به فایل TeX حاصل اضافه کنید.

برای دیدن پارتیتورهای مناسب جهت ورودی به autosp، فایل‌های quod2.aspc، kinder2.aspc، geminiani.aspc و barsant2.aspc را مشاهده کنید. برنامهٔ tex2aspc می‌تواند برای تبدیل پارتیتورهای قدیمی MusiXTeX به قالب .aspc به کار رود.

msxlint(1) tex2aspc(1)

musixdoc.pdf

این برنامه و صفحه راهنما توسط Bob Tennent <rdtennent@gmail.com> نوشته شده است.

2025-10-26