นี่คือคำสั่ง midge ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
midge - สร้างไฟล์ midi จากคำอธิบายข้อความของเพลง
เรื่องย่อ
สัตว์เล็ก ๆ [ตัวเลือก] [ชื่อไฟล์]
DESCRIPTION
สัตว์เล็ก ๆ สร้างไฟล์ midi ประเภท 1 จากคำอธิบายข้อความของเพลง สัตว์เล็ก ๆ เอามัน
อินพุตจาก stdin เว้นแต่ ชื่อไฟล์ ระบุไว้
OPTIONS
-h or --ช่วยด้วย
แสดงข้อความช่วยเหลือ
--รุ่น or --รับประกัน หรือ --เกี่ยวกับ
แสดงข้อมูลเวอร์ชันและใบอนุญาต
-v or --รายละเอียด
พิมพ์เอาต์พุตแบบละเอียดไปที่ stdout
-d or --debug
พิมพ์เอาต์พุตการดีบักไปที่ stdout (ตั้งค่าโหมด verbose โดยอัตโนมัติ)
-q or --เงียบ
เงียบ. ไม่มี stdout
-o ไฟล์ or --outfile ไฟล์
Midi ส่งออกไปยัง ไฟล์. มิฉะนั้นให้ a.out.mid
-c or --ตรวจสอบ
ตรวจสอบอินพุตเท่านั้น ไม่มีเอาต์พุต midi
-u or --unroll-ลูป
คลายบล็อคการทำซ้ำทั้งหมดก่อนที่จะแยกวิเคราะห์และบันทึกซอร์สโค้ดที่คลายแล้วไปที่a
ไฟล์ใหม่ (*.long.mg) ควรตั้งค่าให้อัตโนมัติหากจำเป็น
-U or --no-unroll-บันทึก
อย่าบันทึกแหล่งที่มาที่คลี่คลายลงในไฟล์
-R or --no-รีเซ็ต
อย่าแทรกเหตุการณ์ `รีเซ็ตตัวควบคุมทั้งหมด' ที่จุดเริ่มต้นของแทร็ก
-t ครั้งต่อนาที or --จังหวะ ครั้งต่อนาที
ตั้งจังหวะเป็น ครั้งต่อนาที บีตต่อนาที แทนที่ค่าที่ตั้งไว้ในไฟล์อินพุต
-b ทำตามขั้นตอน or --โค้งขั้นตอน ทำตามขั้นตอน
กำหนดจำนวนขั้นตอนต่อโน้ตไตรมาสสำหรับไวยากรณ์การโค้งงออย่างง่าย
--ไม่ปลอดภัย
อย่าใช้ Safe.pm เพื่อเรียกใช้รหัส Perl จาก % เท่ากัน บล็อก
-s จำนวน or --เมล็ด จำนวน
ใช้ จำนวน เป็นเมล็ดพันธุ์สำหรับเครื่องกำเนิดตัวเลขสุ่ม
-S [มาตราส่วน [ราก]] or --show-ขนาด [มาตราส่วน [ราก]]
รายการบันทึกใน ขนาด เริ่มจาก ราก. ถ้า ราก ละไว้ใช้ c4 ถ้า ขนาด is
ละเว้น รายการเครื่องชั่งที่รองรับจะปรากฏขึ้น
-I เส้นทาง or --รวม เส้นทาง
เพิ่ม เส้นทาง เพื่อรวมเส้นทาง สามารถระบุได้หลายครั้งหรือ เส้นทาง สามารถเป็นรายการ
คั่นด้วยเครื่องหมายทวิภาคหรือจุลภาค
INPUT ภาษา
ตัวอย่างไฟล์ต้นฉบับเพื่อเล่นสเกล E.
================ เริ่มไฟล์======================
#ไลน์นี้คือคอมเม้น
@ศีรษะ { # ต้องมี @head ส่วน 1 ตัว
# ตั้งเวลาลายเซ็น
$time_sig 4/4
# ตั้งจังหวะใน BPM
$จังหวะ 120
} # สิ้นสุด @ ส่วนหัว
@ร่างกาย { # ต้องมี @body ส่วนเดียว
#เปิดเพลงทางช่อง1
#หลายแทร็กใช้ช่องเดียวกันได้
@ช่อง 1 {
#ตั้งแพตช์เป็นเบสไฟฟ้า
$แพทช์ 34
#หมายเหตุ. ดูด้านล่างสำหรับคำอธิบาย
/l4/e3 # โน้ตไตรมาส e ในอ็อกเทฟที่สาม
f+ #f คม อ็อกเทฟ เท่ากัน ยาวเท่ากัน
# ใช้ `-' สำหรับแฟลต
g+ ab # บันทึกที่เหลือ
c+4 d+ e # อ็อกเทฟเปลี่ยนแปลงที่ c
} # สิ้นสุดแทร็ก
} # สิ้นสุด @body ส่วน
======================== จบไฟล์====================
ตัวอย่างเพิ่มเติมรวมอยู่ในไดเร็กทอรีตัวอย่าง/ ของไฟล์เก็บถาวร
ดังต่อไปนี้ เป็นพารามิเตอร์ที่จำเป็น และ [name] เป็นพารามิเตอร์ทางเลือก
หมายเหตุ
รูปแบบของบันทึกย่อคือ: [/ตัวเลือก/]<ชื่อ>[+|-][ระดับแปดเสียง]
พื้นที่ /ตัวเลือก/ ส่วนสามารถมีดังต่อไปนี้:
l[เศษ:]
กำหนดความยาวของโน้ตเป็น (เศษ หรือหนึ่ง) หารด้วย ตัวหาร. เช่น. l4 = ไตรมาส
โน้ต l1 = โน้ตทั้งหมด l3:4 = 3/4 โน้ต (ผูกโน้ต 3 ไตรมาส) ตัวพิมพ์ใหญ่ `L' อาจจะ
ใช้แทนเพื่อแยกความแตกต่างจาก `1'
r
กำหนดจำนวนครั้งที่จะเล่นโน้ตซ้ำ ตัวอย่างเช่น
/l8r16 /
ทำให้บันทึกระยะเวลา 1/8 และบันทึกซ้ำ 16 ครั้ง
a
ตั้งค่าบันทึกย่อเกี่ยวกับความเร็ว (โจมตี)
d
ตั้งค่าความเร็วของโน้ตให้ปิด (สลายตัว)
z[+|-] [%]
ชดเชยโน้ตโดย จำนวน มิดี้คลิก ค่าบวกเล่นโน้ตช้าและลบ
ค่าเล่นในช่วงต้น ถ้า จำนวน ตามด้วย `%´ อักขระมันถูกนำมาเป็นเปอร์เซ็นต์
ของความยาวของบันทึกย่อปัจจุบัน ค่าออฟเซ็ตคือ ไม่ สืบทอดมาโดยบันทึกต่อมา
Z[+|-] [%]
ตามที่กล่าวข้างต้น `z´ แต่ใช้ค่าสุ่ม ถ้า จำนวน เป็นลบหรือบวก
(เครื่องหมายบวก จำเป็นต้องใช้) ค่าระหว่างศูนย์และ จำนวน ถูกนำมาใช้. หากไม่มีเครื่องหมาย a
ค่าระหว่างบวกและลบ จำนวน ถูกนำมาใช้.
ตัวเลือกออฟเซ็ตจะไม่ทำงานกับ rตัวเลือกบันทึก epeat แต่เอฟเฟกต์เหมือนกันได้
ทำได้โดยใช้ a %ทำซ้ำ กลุ่ม
โน้ตไม่สามารถหักล้างย้อนหลังได้ (เช่น เล่นก่อนกำหนด) เว้นแต่จะมีการพักนำหน้า ถึง
แก้ไขปัญหานี้ฉันได้เพิ่ม $ย่อ คีย์เวิร์ดที่อธิบายไว้ด้านล่าง ดูสิ่งนี้ด้วย $unquantize.
ชื่อ เป็นชื่อของบันทึกเช่น [เอจี] จำเป็นต้องใช้.
+ คม
- แบน.
ระดับแปดเสียง คือ midi อ็อกเทฟเช่น [1-11]. แม้ว่าซอฟต์แวร์ midi ส่วนใหญ่จะใช้ 0 สำหรับค่าต่ำสุด
อ็อกเทฟฉันใช้ 1 เพื่อให้สอดคล้องกับช่อง midi และชื่อเครื่องดนตรีซึ่ง
ทั้งสองนับจาก 1
หากไม่ระบุ ความยาว อ็อกเทฟ โจมตี และสลาย จะสืบทอดมาจากตัวที่แล้ว
บันทึก.
ในแทร็กกลอง แทนที่จะใช้ชื่อโน้ต สามารถใช้นามแฝงได้ ตัวอย่างเช่น เพื่อให้ได้ an
เปิด hi hat แทน `ฉ+3' คุณสามารถใช้ `เฮ้_o'. ดู README.drums สำหรับรายการทั้งหมดของ
นามแฝง
พักผ่อน
ส่วนที่เหลือเขียนเป็นโน้ต `r', กับ /ตัวเลือก/ เช่นเดียวกับบันทึก แต่มีเพียง
ใช้ตัวเลือกความยาวและทำซ้ำ ค่าความยาวจะสืบทอดจากบันทึกไปยังส่วนที่เหลือและรอง
ในทางกลับกัน
บาร์
สัญลักษณ์ไปป์ (`|') สามารถใช้เพื่อแสดงแถบได้ ไม่ได้ตรวจสอบความยาวของแท่ง --
นี่เป็นเพียงเพื่อให้ไฟล์ต้นฉบับอ่านง่ายขึ้นเท่านั้น ขีดเลขได้ด้วยการเติม a
หมายเลขสัญลักษณ์ท่อ อาจคั่นด้วยขีดล่างแต่อย่าเว้นวรรค
ตัวอย่างแถบอย่างง่าย: | cdef | gabc
ตัวอย่างแถบตัวเลข: |1 cdef |2 gabc
|_1 cdef |_2 gabc
สามารถตรวจสอบความสอดคล้องของแท่งโดยใช้ปุ่ม $bar_เข้มงวด คำสำคัญใน @ศีรษะ
ส่วน. สิ่งนี้ทำให้เกิดข้อผิดพลาดหรือคำเตือนเว้นแต่แทร็กทั้งหมดมีจำนวนบาร์และ .เท่ากัน
แถบตัวเลขปรากฏขึ้นพร้อมกันในแต่ละแทร็ก:
$bar_เข้มงวด เตือน # พิมพ์ข้อความเตือนสำหรับแถบที่ไม่สอดคล้องกัน
$bar_เข้มงวด ความผิดพลาด # ออกพร้อมข้อความแสดงข้อผิดพลาดสำหรับแถบที่ไม่สอดคล้องกัน
คำหลักระดับบนสุด
@ศีรษะ { เนื้อหา }
ต้องมีอย่างใดอย่างหนึ่ง @ศีรษะ ส่วน. ดูด้านล่างสำหรับคำอธิบายของ เนื้อหา.
@ร่างกาย { เนื้อหา }
ต้องมีอย่างใดอย่างหนึ่ง @ร่างกาย ส่วน. ดูด้านล่างสำหรับคำอธิบายของ เนื้อหา.
คำสำคัญใน @ศีรษะ มาตรา.
$time_sig
พื้นที่ b ค่าต้องเป็นหนึ่งใน 4, 8, 16, 32, 64
$จังหวะ
t คือจังหวะใน BPM
ทั้งสอง $time_sig และ $จังหวะ ได้รับอนุญาตภายในบล็อก @channel (อธิบายด้านล่าง)
$ชื่อ
ตั้งชื่อเพลงเป็น ชื่อเรื่อง. ถ้า ชื่อเรื่อง มีช่องว่างจะต้องอยู่ภายใน double
คำพูด
$ความละเอียด
ตั้งค่าจำนวนคลิก midi ต่อโน้ตไตรมาสเป็น n. ค่าเริ่มต้นคือ 96
คำสำคัญใน @ร่างกาย มาตรา.
%กำหนด { หมายเหตุ }
กำหนดลำดับของ บันทึก, กำหนดให้ ชื่อ ที่จะนำมาเล่าสู่กันฟังในบทเพลง กำหนด
ลำดับถูกใช้โดยรวมถึง:
~[/ย้าย/]
ภายในแทร็กเพื่อรวมซีเควนซ์ ชื่อ, ย้ายโดย ไขว้ ครึ่งเสียง ก่อนหน้านี้
ลำดับที่กำหนดไว้สามารถใช้ในลำดับต่อไปได้ %กำหนด บล็อก ตัวอย่างเช่น:
%กำหนด a_riff { a3 ถึง c4 d }
%กำหนด d_riff { d4 dfg }
%กำหนด main_riff { ~อะ_ริฟฟ์ ~d_riff }
แม้ว่าเราจะสามารถบรรลุผลเช่นเดียวกันโดยการแปลง riff แรกเพื่อสร้าง
วินาที:
%กำหนด a_riff { a3 ถึง c4 d }
%กำหนด main_riff { ~อะ_ริฟฟ์ ~อะ_ริฟฟ์/ 5 / }
กำหนด บล็อกอาจมีบล็อกซ้ำ บล็อกโค้ง และ $volume/patch/reverb เป็นต้น
@ช่อง [ชื่อ] { เนื้อหา }
เริ่มเพลง midi บน channel จำนวน, เลือกตั้งชื่อเครื่องมือเป็น ชื่อ. ถ้า
ชื่อ มีช่องว่างจะต้องอยู่ภายในเครื่องหมายคำพูดคู่
เนื้อหา สามารถรวมบันทึก พัก ลำดับที่กำหนดไว้ก่อนหน้านี้ และต่อไปนี้
คำสำคัญ:
$time_sig
เปลี่ยนลายเซ็นเวลาสำหรับเพลง (มีผลกับแทร็กทั้งหมด) NS b ค่าต้องเป็นหนึ่งใน
4, 8, 16, 32, 64
$จังหวะ
เปลี่ยนจังหวะเพลง (มีผลกับแทร็กทั้งหมด) t อยู่ใน BPM
$แพทช์ [[bank_LSB,]bank_MSB,]
ตั้งค่าหมายเลขแพตช์สำหรับช่องนี้เป็น จำนวน or ชื่อ. ที่ไหน จำนวน คือตั้งแต่ 1 ถึง 128 และ
ชื่อ เป็นนามแฝงตามที่กำหนดไว้ใน README.patches เลือกหมายเลขธนาคารได้ bank_MSB.
เลือกหมายเลข LSB ของธนาคาร bank_LSB (ใช้สำหรับคีย์บอร์ด midi ภายนอก) แต่ละค่า
ต้องอยู่ในช่วง 1-128
$ธนาคาร [แอลเอสบี,]
เลือกหมายเลขธนาคาร MSB. เลือกตั้งค่า LSB (ใช้สำหรับ midi . ภายนอก
แป้นพิมพ์) ถึง LSB. ค่าทั้งสองต้องอยู่ในช่วง 1-128
$ความยาว [NS:]
ตั้งค่าความยาวบันทึกเริ่มต้น ค่าถูกระบุในรูปแบบเดียวกับในตัวเลือกบันทึกย่อ
$ย่อ
ย่อแต่ละโน้ตโดย จำนวน คลิก midi เพื่อให้มีพื้นที่สำหรับบันทึกย่อเพื่อชดเชยย้อนหลัง
$unquantize [+|-] [%]
ใช้ออฟเซ็ตแบบสุ่มกับโน้ตแต่ละตัว จำนวน มีความหมายเดียวกับ Z บันทึกตัวเลือก
ข้างบน.
$อ็อกเทฟ
ตั้งค่าอ็อกเทฟเริ่มต้นเป็น จำนวน
$ปริมาณ
ตั้งค่าระดับเสียงของแทร็กเป็น จำนวน
$ โจมตี
ตั้งค่าการโจมตีของโน้ตเป็น จำนวน
$การสลายตัว
ตั้งค่าการสลายตัวของโน้ตเป็น จำนวน
$พัดโบก
ตั้งค่าความลึกของเสียงก้องไปที่ จำนวน ในช่องปัจจุบัน
$คอรัส
ตั้งค่าความลึกคอรัสเป็น จำนวน ในช่องปัจจุบัน
$กระทะ
ตั้งค่ากระทะเป็น จำนวน. 0 คือซ้าย 127 คือขวา
ค่าระดับเสียง โจมตี สลาย เสียงก้อง คอรัส และแพนต้องเป็นจำนวนเต็มตั้งแต่ 0 ถึง 127
นอกจากนี้ยังสามารถระบุเป็นช่วง (เช่น `8-64') ซึ่งในกรณีนี้ค่าสุ่มภายใน
ใช้ช่วง
%pan_all { ค่าโน้ต ... }
ตั้งค่าการแพนสำหรับแต่ละอินสแตนซ์ที่ตามมาของ หมายเหตุ ในแทร็กปัจจุบัน นี่คือ
มีวัตถุประสงค์หลักสำหรับการแพนกล้องกลองชุด แต่สามารถใช้กับแทร็กอื่นได้ ความคุ้มค่า เป็นไปได้
จำนวนเต็มหรือช่วง (เช่น `8-64') หลายรายการ หมายเหตุ ความคุ้มค่า อนุญาตให้มีคู่ ถ้าสองบันทึก
ด้วยค่า pan_all ที่แตกต่างกันจะเล่นพร้อมกัน อะไรก็เกิดขึ้นได้
หากต้องการส่งผลกระทบทุกโน้ตในช่องที่มีช่วง ให้ใช้ `*' หรือ `ใด' สำหรับ หมายเหตุ.
/r4/วิธีการบันทึกซ้ำจะใช้ไม่ได้กับตัวเลือกนี้ แต่จะมีผลเหมือนกัน
สามารถทำได้โดยใช้บล็อกซ้ำ
เครื่องหมาย $
เพิ่มเหตุการณ์เครื่องหมายด้วย ข้อความ ตามที่มันเป็นเนื้อหา ถ้า ข้อความ มีช่องว่างที่ต้องยกมา
โดยใช้อักขระอัญประกาศ
%ทำซ้ำ { หมายเหตุ }
ทำซ้ำ บันทึก จำนวน ครั้ง บันทึก สามารถรวมบันทึก, ส่วนที่เหลือ, ลำดับที่กำหนดไว้ล่วงหน้าและอื่น ๆ
%ทำซ้ำ บล็อก
%โค้งงอ { เหตุการณ์ ... }
เล่น หมายเหตุ และเลื่อนล้อเลื่อนในลักษณะที่อธิบายโดยหลาย ๆ เหตุการณ์ที่มี
รูปแบบต่อไปนี้:
[NS:] <<|->
ที่ไหน n และ d ระบุเวลาตั้งแต่เริ่มต้นบันทึกหรือจากเหตุการณ์ก่อนหน้าใน
รูปแบบเดียวกับความยาวของโน้ตและ ความคุ้มค่า คือจำนวนเงินที่จะงอโน้ตโดย (บวก
หรือเครื่องหมายลบ) ด้วยช่วงระยะพิทช์เริ่มต้นที่ +/- 2 เซมิโทน ค่า
ของ 32 เท่ากับหนึ่งเซมิโทน โปรดทราบว่าจำนวนโค้งจะสัมพันธ์กัน สูงสุด
สะสม จำนวนโค้งเป็นบวกหรือลบ 64
ตัวอย่างเช่นต่อไปนี้:
% โค้ง a3 { 4+32 4-32 2+0 }
เล่นโน้ต a3 สำหรับโน้ต 1/4, ปรับโทนเสียงทั้งหมดเป็น 1/4 แล้วลดกลับเป็น a3 และ
ถือบันทึก 1/2
$bend_range
เปลี่ยนระยะพิทช์ล้อเป็น +/- จำนวน. ซึ่งจะตั้งค่าการโค้งงอสูงสุดขึ้นและลง ดังนั้นถ้า
ตั้งค่าเป็น 4 ค่าโค้ง 64 จะงอขึ้น 4 ครึ่งเสียง และ -64 จะงอลง 4
ครึ่งเสียง ช่วงเริ่มต้นสำหรับอุปกรณ์ midi ส่วนใหญ่คือ 2 เซมิโทน
$ pitch
ตั้งค่า pitch wheel เป็น คลื่น. สามารถใช้ร่วมกับหมายเหตุแยกต่างหากใน
และจดบันทึกเหตุการณ์ (ดูด้านล่างภายใต้ `บันทึกพร้อมกัน') เพื่อสร้างการดัดโค้งที่ซับซ้อน
ผลกระทบ ไม่เหมือนกับ %โค้งงอ ไวยากรณ์ด้านบนนี้ไม่ ไม่ รีเซ็ต pitch wheel เป็นค่ากลาง
ตำแหน่ง (64)
สามารถสร้าง Pitch Bend ที่ง่ายกว่าด้วยไวยากรณ์นี้:
/l8/e4=>g4=>e4
สิ่งนี้จะโค้งจาก e4 ถึง g4 และย้อนกลับเป็น e4 ในขั้นตอนเชิงเส้นตลอดระยะเวลาของ an
บันทึกที่แปด โดยค่าเริ่มต้นมี 16 ขั้นตอนต่อระยะเวลาบันทึกย่อของไตรมาส (8 ขั้นตอนในนี้
ตัวอย่าง) แต่สามารถตั้งค่าอื่นได้โดยใช้สวิตช์บรรทัดคำสั่ง `-b' หมายเลขใดก็ได้
ของโน้ตใช้ได้ แต่อันแรกต้องมีค่าความยาวและแต่ละอันต้อง
มีค่าอ็อกเทฟ
%เลือก [เวลา] { รายการถ่วงน้ำหนัก ... }
โดยที่เวลาเป็นค่าความยาวในรูปแบบ [n:] เช่นเดียวกับที่ใช้ในตัวเลือกความยาว
โดยละเว้น `l'
If เวลา ไม่ได้ระบุ:
เลือกหนี่งอย่าง ชิ้น จากรายการโดยที่แต่ละ ชิ้น อาจเป็นโน้ต ส่วนที่เหลือ หรือ riff ที่กำหนดไว้ล่วงหน้า และ
แต่ละรายการมี การถ่วงน้ำหนัก ซึ่งกำหนดแนวโน้มที่จะเลือก ตัวอย่างเช่น:
% เลือก { 2 a3 4 c5 3 e4 1 g3 }
ให้ a3 มีโอกาส 20%, c5 - 40% ; e4 - 30% และ g3 - 10% แต่ละรายการ ต้อง มีน้ำหนัก
ดูมาตราส่วนด้านล่างด้วย
if เวลา ระบุไว้:
เลือกหลายรายการ ชิ้นจากรายการถึงความยาวของ เวลา. ถ้าทั้งหมด ชิ้นยาวเกินไป
ที่จะจบ riff ตรงที่ เวลา, ส่วนที่เหลือเต็มไปด้วยส่วนที่เหลือ เมื่อใช้ตัวเลือก
ด้วยวิธีนี้โน้ตหรือส่วนที่เหลือจะต้องมีค่าความยาวและต้องใช้ riffs ที่กำหนดไว้ล่วงหน้า
มีความยาวคงที่ (เช่น โน้ตตัวแรกต้องมีค่าความยาว) และความยาวของ
ต้องระบุทั้ง riff ในบล็อกการเลือกในรูปแบบเดียวกับบันทึก สำหรับ
ตัวอย่าง:
%define riff_1 { /l2/a3 /l4/b c4 } # riff ยาว 1 บาร์
%เลือก 4:1 { # เลือก 4 ก้อน
1 /l8/d4 3 /l8/e4 2 /l4/g4 1 /l1/~riff_1
}
If เวลา is 0 or - จากนั้นมิดจ์จะมองหาบล็อกของแบบฟอร์ม:
จังหวะ { NS] ... }
ซึ่งนำมาเป็นชุดค่าความยาวโน้ตซึ่งเลือกระดับเสียงจาก
รายการ. โทเค็นอื่น ๆ จะถูกส่งผ่าน ดังนั้นคุณสามารถแทรกบันทึกเฉพาะ riffs ที่กำหนดไว้ล่วงหน้า
หรือพักผ่อน โทเค็นใด ๆ ในบล็อกที่ขึ้นต้นด้วยขีดล่างจะถูกส่งผ่านด้วย
ขีดล่างออก ดูตัวอย่าง/tutorial/choose_scale.mg สำหรับตัวอย่าง
อีกวิธีในการระบุรายการบันทึกย่อ/การถ่วงน้ำหนักคือ ขนาด คำสำคัญ:
ขนาด ผู้เยาว์ /l8/g4-6 [ น้ำหนัก ... ]
สิ่งนี้จะเลือกมาตราส่วน G Minor จากอ็อกเทฟที่ 4 ถึง 6 (เช่น g4 ถึง g6) ค่าความยาว
ไม่จำเป็นหากคุณใช้บล็อกจังหวะ ถ้า -6 ถูกละเว้นเป็นคู่เดียวคือ
มือสอง
บล็อกน้ำหนักระบุน้ำหนักบันทึกตามลำดับ หากละเว้นการถ่วงน้ำหนักทั้งหมดเป็น
เท่ากับ. หากต้องการเข้าโน้ตให้ใช้การถ่วงน้ำหนักเป็น 0 แต่มี ต้อง เป็นตัวถ่วงน้ำหนักแต่ละโน้ต
หากมีบล็อกอยู่เลย
พื้นที่ -S สวิตช์สามารถใช้เพื่อแสดงบันทึกย่อในมาตราส่วนหรือรายการเครื่องชั่งที่รองรับ
%โซ่ {
เริ่ม
note1 [ บันทึกน้ำหนัก ... ]
...
จังหวะ [ น้ำหนัก ความยาว ... ] or จังหวะ { ความยาว ... } }
กำหนดโครงสร้าง `chain' ซึ่งสำหรับแต่ละโน้ตจะมีรายการบันทึกย่อที่อาจ
ตามมันไป. จุดเริ่มต้นจะสุ่มเลือกจากโน้ตทั้งหมดที่ใช้หรือระบุด้วย
เริ่มต้น คำสำคัญ แล้วบันทึกย่อที่ตามมาจะถูกเลือกจากรายการที่เหมาะสมจนถึง a
ยาวทั้งหมดของ เวลา.
พื้นที่ จังหวะ คำหลักมีสองรูปแบบ: การใช้วงเล็บเหลี่ยม `[]' ซึ่งเป็นรายการหมายเหตุแบบถ่วงน้ำหนัก
สามารถกำหนดความยาวได้ซึ่งจะเลือกจากการสุ่ม การใช้วงเล็บปีกกา `{}' รายการของ
สามารถกำหนดค่าความยาวได้ซึ่งจะใช้ในลำดับ (ทำซ้ำตามความจำเป็น) ถึง
เล่นผ่านบล็อกจังหวะเพียงครั้งเดียว ตั้งค่า เวลา ไปยัง 0 or -. ในกรณีนี้จังหวะ
บล็อกถูกแยกวิเคราะห์ในลักษณะเดียวกับที่อธิบายไว้ข้างต้นสำหรับ %เลือก โดยตั้งเวลาเป็นศูนย์ NS
คีย์เวิร์ด ครั้ง สามารถใช้เป็นคำพ้องความหมายสำหรับ จังหวะ.
พื้นที่ เริ่มต้น คีย์เวิร์ดระบุโน้ตที่จะเริ่มต้นเมื่อใช้เชน ถ้า เริ่มต้น is
ละเว้นบันทึกเริ่มต้นจะถูกเลือกแบบสุ่ม
อีกวิธีหนึ่งกำหนดบันทึกย่อใน a โซ่ บล็อกคือการใช้เครื่องชั่งในตัว แล้ว
การถ่วงน้ำหนักถูกระบุในรูปแบบของเมทริกซ์ โดยมีแถวสำหรับโน้ต "จาก" แต่ละรายการ (หนึ่ง
สำหรับแต่ละโน้ตของมาตราส่วน) และคอลัมน์สำหรับโน้ต "ถึง" แต่ละรายการ ตัวอย่างของแบบฟอร์มนี้สามารถ
สามารถพบได้ในไฟล์ตัวอย่าง/tutorial/chain_scale.mg
ในการใช้ตัวเลือกหรือบล็อกลูกโซ่ ไฟล์ต้องถูกคอมไพล์ด้วยตัวเลือก unroll-loops
(มันถูกตั้งค่าโดยอัตโนมัติเมื่อพบบล็อกตัวเลือกหรือลูกโซ่) ตัวเลือกนี้จะบันทึก
คลายซอร์สโค้ดในไฟล์ใหม่ ดังนั้นหากมันให้ผลลัพธ์ที่ดีเป็นพิเศษ คุณมี
สำเนาที่แน่นอนซึ่งคุณสามารถทำการเปลี่ยนแปลงอื่น ๆ ได้โดยไม่สูญเสียแทร็กที่สร้างขึ้น
โปรดทราบว่าบล็อกตัวเลือกและลูกโซ่ไม่สามารถอยู่ภายใน %define หรือภายในตัวเลือกอื่นหรือ
บล็อกโซ่
% เท่ากัน { รหัส Perl }
เรียกใช้บล็อกของรหัส Perl และแทนที่บล็อก %eval ด้วยค่าที่ส่งคืนจาก Perl
รหัส.
% เท่ากัน - { รหัส Perl }
เรียกใช้บล็อกของโค้ด Perl โดยไม่อ่านค่าที่ส่งกลับ
รหัส Perl ถูกเรียกใช้โดยใช้ Safe module หากมี :base_core, :base_math และ
:base_mem อนุญาต หาก Safe.pm ไม่พร้อมใช้งานหรือต้องการการอนุญาตเพิ่มเติม --unsafe
ตัวเลือกทำให้มิดจ์เรียกใช้บล็อก %eval ในกระบวนการ Perl ของตัวเอง
คำหลักที่อนุญาต ณ จุดใดก็ได้ในแหล่งที่มา
%รวม
รวมถึงเนื้อหาของ ไฟล์ ราวกับว่าพวกเขาถูกเขียนขึ้น ณ จุดนั้นในแหล่งที่มา
ไฟล์ ต้อง อยู่ในบรรทัดของตัวเองในไฟล์ต้นฉบับ
หมายเหตุพร้อมกัน
วิธีที่ยืดหยุ่นที่สุดในการเล่นโน้ตพร้อมกันคือการใช้แทร็กแยกกัน (คุณสามารถใช้
ช่อง/แพตช์เดียวกัน) หรือโดยแยกบันทึกเหตุการณ์และปิดบันทึก (ดูด้านล่าง)
อย่างไรก็ตาม มีวิธีที่ง่ายกว่าโดยมีข้อจำกัดบางประการ ตัวอย่างเช่น: ( c e g ) จะเล่น
โน้ต c, e และ g พร้อมกันทำให้เป็นคอร์ด C ความยาวของทั้งหมดพร้อมกัน
บันทึกย่อเหมือนกับอันแรก (กำหนดโดยค่าความยาวของตัวเองหรือค่าหนึ่ง
สืบทอดมาจากบันทึกย่อ ส่วนที่เหลือ หรือการประกาศความยาว $length
วิธีหนึ่งในการใช้สิ่งนี้เพื่อสร้างคอร์ดมีดังนี้:
%กำหนด ผู้เยาว์ { ( c e- g ) } #กำหนดผู้เยาว์เป็นc-ผู้เยาว์
%กำหนด สำคัญ { ( c e g ) } # กำหนดวิชาเอกให้เป็น c-major
%กำหนด 7th { ( c e g b- ) } # กำหนดที่ 7 เป็น c-7th
จากนั้นคุณสามารถใช้ the ในแทร็กเพลงของคุณ:
$length 4 $octave 4 # กำหนดความยาวเริ่มต้นและ octave
~เมเจอร์ #เล่นซีเมเจอร์
~ผู้เยาว์/9/ #เล่นเป็นผู้เยาว์
~7/5/ #เล่นf-7th
เพื่อให้คอร์ดมีเสียงดีด ดีด สามารถใช้คีย์เวิร์ด:
$ดีด 5
การตั้งค่านี้จะกำหนดช่วงเวลาระหว่างโน้ตแต่ละตัวในคอร์ดที่ตามมาเป็น 5 การคลิก midi
ในการสร้างรูปแบบที่ซับซ้อนของการจดบันทึกพร้อมกันในแทร็กเดียว ให้แยกบันทึกย่อและบันทึกย่อ
สามารถใช้กิจกรรมนอกเวลาได้ มีการระบุในลักษณะเดียวกับบันทึกทั่วไป แต่ด้วย a +
ไว้ล่วงหน้าสำหรับหมายเหตุและ - ถูกนำหน้าเพื่อปิดบันทึก ความยาวและตัวเลือกการทำซ้ำไม่สามารถ
ถูกนำมาใช้ ความยาวของโน้ตที่ป้อนด้วยวิธีนี้ถูกควบคุมโดยการวางพักหรืออื่น ๆ
บันทึกระหว่างบันทึกและบันทึกเหตุการณ์ เช่น:
+c4/l4/r +เซนต์ +ก. /l2/r -c -e -g
เล่นและถือ c4 หลังจากที่โน้ต 1/4 เล่นและถือ e4 และหลังจากเล่นโน้ตอีก 1/4 ตัว
และถือ g4 ปล่อยทั้งสามหลังจากนั้นอีก 1/2 โน้ต
ทูเล็ต
แม้ว่าจะสามารถสร้าง tuplets ได้โดยการเลือกความยาวของโน้ตที่เหมาะสม แต่ก็สามารถ
ให้เขียนแบบธรรมดามากขึ้นโดยใช้ตัว %ทูเล็ต คำสำคัญ:
%ทูเล็ต n:d { หมายเหตุ... }
เล่น n บันทึกย่อในช่องว่างของ d. บันทึก สามารถมีอะไรก็ได้ที่ได้รับอนุญาตในบล็อก @channel
ค่าบันทึกจะเปลี่ยนแปลงโดยอัตโนมัติเพื่อสร้างทูเล็ต ตัวอย่างเช่น:
% tuplet 5:3 { /l8/e4 fgfe }
เล่นโน้ตตัวที่แปดห้าตัวในช่องว่างสามตัว Tuplets สามารถซ้อนกันได้ในระดับความลึกเท่าใดก็ได้ ดู
ตัวอย่าง/tutorial/tuplet.mg สำหรับตัวอย่าง มิดจ์ทำ ไม่ ตรวจสอบว่าความยาวของเพลง
ภายในบล็อกทูเล็ตนั้นถูกต้อง
คีย์
หากคุณต้องการนำเข้าไฟล์ midi ของคุณไปยังโปรแกรมแก้ไขสัญกรณ์ คุณจะต้องตั้งค่าคีย์
สิ่งนี้ทำได้ด้วย:
$คีย์ [+|-][ม.]
ที่ไหน ชื่อ คือ ag, +|- มีความคมและแบน และ m มีค่าน้อยกว่า ถ้าทั้งชิ้นยังคงอยู่ใน
คีย์เดียวกันกับที่คุณสามารถตั้งค่าได้ในส่วน @head มิฉะนั้น อาจปรากฏที่ใดก็ได้ใน a
@ส่วนช่อง และจะมีผลกับทุกแทร็ก
หากคุณคุ้นเคยกับโน้ตดนตรีทั่วไปและต้องการให้โน้ตนั้นคมชัดหรือแบนราบโดยอัตโนมัติ
ขึ้นอยู่กับคีย์ ใช้ $key_strict คีย์เวิร์ดแทน เพื่อให้ได้โน้ตที่เป็นธรรมชาติใช้ =
ลงชื่อ เช่น ใน G f= เล่นเป็นธรรมชาติ NS $key_strict คีย์เวิร์ดสามารถใช้ได้เฉพาะใน
@ส่วนหัว. กุญแจยังคงสามารถเปลี่ยนได้โดยใช้ปุ่มปกติ $คีย์ คำสำคัญ.
$ctrl
ตั้งหมายเลขควบคุม NUM ไปยัง คลื่น.
$rpn [num-msb,] [,val-lsb]
ตั้งค่าตัวควบคุม rpn NUM ไปยัง คลื่น
$nrpn [num-msb,] [,val-lsb]
ตั้งค่าตัวควบคุม nrpn NUM ไปยัง คลื่น
%คำต่อคำ { ไบต์วาล... }
แทรกสตริงไบต์ลงในไฟล์ midi แต่ละ ไบต์ เป็นทศนิยมก็ได้ (0-255)
หรือเลขฐานสิบหก (0x00-0xFF) คีย์เวิร์ด ไบต์ ใช้แทน . ได้ คำต่อคำ.
$พิมพ์
พิมพ์ ข้อความ เพื่อ stdout ถ้า ข้อความ มีช่องว่างจะต้องยกโดยใช้เครื่องหมายคำพูดคู่ (").
ใช้มิดจ์ออนไลน์โดยใช้บริการ onworks.net