Я боролся с какой-то код PostScript, и я немного достичь своей цели по малу (язык PostScript это действительно круто!)Как перебирать массив массивов в PostScript? Как использовать шрифт с музыкальными знаками?
То, что я до сих пор:
%!PS-Adobe-2.0
/Times-Roman findfont 20 scalefont setfont
/r 360 12/def
/triades [
(C Dm Em F G Am Bmb5)
(F Gm Am Bb C Dm Emb5)
(Bb Cm Dm Eb F Gm Amb5)
(Eb Fm Gm Ab Bb Cm Dmb5)
(Ab Bbm Cm Db Eb Fm Gmb5)
(Db Ebm Fm Gb Ab Bbm Cmb5)
(F# G#m A#m B C# D#m E#mb5)
(B C#m D#m E F# G#m A#mb5)
(E F#m G#m A B C#m D#mb5)
(A Bm C#m D E F#m G#mb5)
(D Em F#m G A Bm C#mb5)
(G Am Bm C D Em F#b5)
] def
336 396 translate
triades { 50 0 moveto show 30 rotate } forall
showpage
Это дает мне страница с 12 последовательностями аккордов, распространяющимися по кругу. Но есть проблема с этим подходом: он делает автоматический интервал, поэтому линия, в которой у многих хорд есть #
, линия становится больше, а аккорды более удалены друг от друга. Я попытался сделать вложенный цикл, печатая chors один за другим, но это действительно не сработало. Вот что я пробовал:
%!PS-Adobe-2.0
/Times-Roman findfont 20 scalefont setfont
/r 360 12/def
/triadesArr [
[(C Dm Em F G Am Bmb5)]
[(F Gm Am Bb C Dm Emb5)]
[(Bb Cm Dm Eb F Gm Amb5)]
[(Eb Fm Gm Ab Bb Cm Dmb5)]
[(Ab Bbm Cm Db Eb Fm Gmb5)]
[(Db Ebm Fm Gb Ab Bbm Cmb5)]
[(F# G#m A#m B C# D#m E#mb5)]
[(B C#m D#m E F# G#m A#mb5)]
[(E F#m G#m A B C#m D#mb5)]
[(A Bm C#m D E F#m G#mb5)]
[(D Em F#m G A Bm C#mb5)]
[(G Am Bm C D Em F#b5)]
] def
336 396 translate
triadesArr { 50 0 moveto { 50 0 moveto show } forall 30 rotate } forall
showpage
По какой-то причине оба выхода одинаковы. Как я могу это исправить?
Есть еще одна тема: как использовать шрифт с музыкальными знаками с ним? Я хотел, чтобы аккорды, такие как Bbm
, имели фактический плоский знак, а не b
. Я попытался загрузить и использовать шрифты, такие как Feta, Bravura или Gonville (или даже шрифт, используемый в songs
package)
Любые направления здесь будут оценены.
спасибо.
Обвод: массив массивов наиболее подходящей структуры данных для работы? Он сочлен для меня, как самый простой и разборчивый. Если бы вы делали эту программу, вы бы использовали другую структуру данных?