@@ -1,134 +1,140 @@ | |||
/* XPM */ | |||
static char * comment_xpm[] = { | |||
"32 25 106 2", | |||
"30 30 107 2", | |||
" c None", | |||
". c #313131", | |||
"+ c #404040", | |||
"@ c #474747", | |||
"# c #484848", | |||
"$ c #3F3F3F", | |||
"% c #202020", | |||
"& c #747474", | |||
"* c #A6A6A6", | |||
"= c #C6C6C6", | |||
"- c #D4D4D4", | |||
"; c #DCDCDC", | |||
"> c #D3D3D3", | |||
", c #C4C4C4", | |||
"' c #A2A2A2", | |||
") c #6C6C6C", | |||
"! c #1A1A1A", | |||
"~ c #3B3B3B", | |||
"{ c #9D9D9D", | |||
"] c #EFEFEF", | |||
"^ c #FFFFFF", | |||
"/ c #EAEAEA", | |||
"( c #939393", | |||
"_ c #373737", | |||
": c #6A6A6A", | |||
"< c #FEFEFE", | |||
"[ c #CCCCCC", | |||
"} c #5D5D5D", | |||
"| c #7B7B7B", | |||
"1 c #FDFDFD", | |||
"2 c #FBFBFB", | |||
"3 c #6B6B6B", | |||
"4 c #686868", | |||
"5 c #EEEEEE", | |||
"6 c #E7E7E7", | |||
"7 c #595959", | |||
"8 c #242424", | |||
"9 c #EBEBEB", | |||
"0 c #DEDEDE", | |||
"a c #181818", | |||
"b c #7F7F7F", | |||
"c c #BBBBBB", | |||
"d c #AEAEAE", | |||
"e c #3E3E3E", | |||
"f c #CFCFCF", | |||
"g c #343434", | |||
"h c #414141", | |||
"i c #C7C7C7", | |||
"j c #323232", | |||
"k c #C3C3C3", | |||
"l c #B7B7B7", | |||
"m c #9A9A9A", | |||
"n c #888888", | |||
"o c #434343", | |||
"p c #F7F7F7", | |||
"q c #F2F2F2", | |||
"r c #303030", | |||
"s c #9B9B9B", | |||
"t c #FCFCFC", | |||
"u c #F9F9F9", | |||
"v c #2D2D2D", | |||
"w c #ABABAB", | |||
"x c #9E9E9E", | |||
"y c #272727", | |||
"z c #858585", | |||
"A c #828282", | |||
"B c #515151", | |||
"C c #262626", | |||
"D c #ACACAC", | |||
"E c #F6F6F6", | |||
"F c #A0A0A0", | |||
"G c #1E1E1E", | |||
"H c #909090", | |||
"I c #F3F3F3", | |||
"J c #F1F1F1", | |||
"K c #7A7A7A", | |||
"L c #676767", | |||
"M c #F4F4F4", | |||
"N c #CECECE", | |||
"O c #5C5C5C", | |||
"P c #464646", | |||
"Q c #E0E0E0", | |||
"R c #333333", | |||
"S c #B5B5B5", | |||
"T c #E6E6E6", | |||
"U c #AFAFAF", | |||
"V c #626262", | |||
"W c #2C2C2C", | |||
"X c #BABABA", | |||
"Y c #2E2E2E", | |||
"Z c #1D1D1D", | |||
"` c #424242", | |||
" . c #606060", | |||
".. c #707070", | |||
"+. c #1C1C1C", | |||
"@. c #565656", | |||
"#. c #DBDBDB", | |||
"$. c #151515", | |||
"%. c #2A2A2A", | |||
"&. c #131313", | |||
"*. c #808080", | |||
"=. c #4F4F4F", | |||
"-. c #B1B1B1", | |||
";. c #2B2B2B", | |||
">. c #575757", | |||
",. c #3D3D3D", | |||
" . + @ # $ ", | |||
" % & * = - ; ; > , ' ) ! ", | |||
" ~ { ] ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ( _ ", | |||
" : - ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ < [ } ", | |||
" | 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 2 3 ", | |||
" 4 5 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 6 7 ", | |||
" 8 9 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 0 a ", | |||
" b ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 3 ", | |||
" c ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ d ", | |||
" e f ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ , g ", | |||
" h > ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ i _ ", | |||
" j k ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ l ", | |||
" m ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ n ", | |||
" o p ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ q r ", | |||
" s t ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ u n ", | |||
" v w < ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ t x y ", | |||
" } z A B C D u ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ E F G ", | |||
" H I t t J K L - E ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ M N O ", | |||
" P Q ^ ^ ^ ^ f ~ R 4 S 9 ^ ^ ^ ^ ^ ^ T U V W ", | |||
" ~ N ^ ^ ^ ^ X Y Z ` .....} e +. ", | |||
" @.#.< t f P ", | |||
" $.Y %.&. ", | |||
"j *.=. ", | |||
"b p -.;. ", | |||
";.>.,. "}; | |||
". c #606060", | |||
"+ c #6F6F6F", | |||
"@ c #767676", | |||
"# c #747474", | |||
"$ c #787878", | |||
"% c #717171", | |||
"& c #A1A1A1", | |||
"* c #C5C5C5", | |||
"= c #DCDCDC", | |||
"- c #E5E5E5", | |||
"; c #E9E9E9", | |||
"> c #E8E8E8", | |||
", c #E1E1E1", | |||
"' c #D2D2D2", | |||
") c #B6B6B6", | |||
"! c #868686", | |||
"~ c #7B7B7B", | |||
"{ c #B5B5B5", | |||
"] c #EDEDED", | |||
"^ c #FEFEFE", | |||
"/ c #FFFFFF", | |||
"( c #F9F9F9", | |||
"_ c #D7D7D7", | |||
": c #949494", | |||
"< c #6B6B6B", | |||
"[ c #A6A6A6", | |||
"} c #D9D9D9", | |||
"| c #FAFAFA", | |||
"1 c #EFEFEF", | |||
"2 c #BEBEBE", | |||
"3 c #858585", | |||
"4 c #A2A2A2", | |||
"5 c #C4C4C4", | |||
"6 c #737373", | |||
"7 c #808080", | |||
"8 c #DDDDDD", | |||
"9 c #FDFDFD", | |||
"0 c #F8F8F8", | |||
"a c #BABABA", | |||
"b c #343434", | |||
"c c #AEAEAE", | |||
"d c #FCFCFC", | |||
"e c #F7F7F7", | |||
"f c #666666", | |||
"g c #D6D6D6", | |||
"h c #A9A9A9", | |||
"i c #838383", | |||
"j c #C8C8C8", | |||
"k c #3F3F3F", | |||
"l c #CECECE", | |||
"m c #404040", | |||
"n c #727272", | |||
"o c #E2E2E2", | |||
"p c #C1C1C1", | |||
"q c #CACACA", | |||
"r c #929292", | |||
"s c #9D9D9D", | |||
"t c #F6F6F6", | |||
"u c #EAEAEA", | |||
"v c #494949", | |||
"w c #C0C0C0", | |||
"x c #EEEEEE", | |||
"y c #8B8B8B", | |||
"z c #363636", | |||
"A c #686868", | |||
"B c #C6C6C6", | |||
"C c #ECECEC", | |||
"D c #989898", | |||
"E c #3B3B3B", | |||
"F c #959595", | |||
"G c #818181", | |||
"H c #3C3C3C", | |||
"I c #7A7A7A", | |||
"J c #F5F5F5", | |||
"K c #AFAFAF", | |||
"L c #3E3E3E", | |||
"M c #8F8F8F", | |||
"N c #B9B9B9", | |||
"O c #DFDFDF", | |||
"P c #FBFBFB", | |||
"Q c #CFCFCF", | |||
"R c #A5A5A5", | |||
"S c #5D5D5D", | |||
"T c #757575", | |||
"U c #5E5E5E", | |||
"V c #ABABAB", | |||
"W c #ADADAD", | |||
"X c #B4B4B4", | |||
"Y c #A0A0A0", | |||
"Z c #888888", | |||
"` c #444444", | |||
" . c #565656", | |||
".. c #F2F2F2", | |||
"+. c #F4F4F4", | |||
"@. c #626262", | |||
"#. c #707070", | |||
"$. c #535353", | |||
"%. c #313131", | |||
"&. c #5F5F5F", | |||
"*. c #5C5C5C", | |||
"=. c #373737", | |||
"-. c #4F4F4F", | |||
";. c #6E6E6E", | |||
">. c #848484", | |||
",. c #2B2B2B", | |||
"'. c #575757", | |||
" ", | |||
" ", | |||
" ", | |||
" ", | |||
" . + @ # $ ", | |||
" % & * = - ; > , ' ) ! @ ", | |||
" ~ { ] ^ / / / / / / / / ( _ : < ", | |||
" [ } | / / / / / / / / / / / / 1 2 3 ", | |||
" 4 - / / / / / / / / / / / / / / / ^ 5 6 ", | |||
" 7 8 9 / / / / / / / / / / / / / / / / 0 a b ", | |||
" c d / / / / / / / / / / / / / / / / / / e f ", | |||
" g / / / / / / / / / / / / / / / / / / / / h ", | |||
" i - / / / / / / / / / / / / / / / / / / / / j k ", | |||
" 7 ; / / / / / / / / / / / / / / / / / / / / l m ", | |||
" n o / / / / / / / / / / / / / / / / / / / / p ", | |||
" q / / / / / / / / / / / / / / / / / / / ^ r ", | |||
" s t / / / / / / / / / / / / / / / / / ^ u v ", | |||
" ! w 0 / / / / / / / / / / / / / / / / x y ", | |||
" z A B e / / / / / / / / / / / / / ^ C D E ", | |||
" F h D G H I 5 > | / / / / / / / / / 9 J g K L ", | |||
" w ( 9 | j ~ M N O t / / / / / P ] Q R @ ", | |||
" S o / / / o T U V r W a w 2 X Y D Z ` ", | |||
" .h ..^ +.X . ` @.#.< $.%. ", | |||
" &.T Z $ *. ", | |||
"=.I -. ", | |||
";.q >.,. ", | |||
"` I '. ", | |||
" ", | |||
" ", | |||
" "}; |
@@ -1,242 +1,160 @@ | |||
/* XPM */ | |||
static char * new_xpm[] = { | |||
"48 61 178 2", | |||
"30 30 127 2", | |||
" c None", | |||
". c #000000", | |||
"+ c #161616", | |||
"@ c #9E9E9E", | |||
"# c #ACACAC", | |||
"$ c #B5B5B5", | |||
"% c #AEAEAE", | |||
"& c #ABABAB", | |||
"* c #A7A7A7", | |||
"= c #959595", | |||
"- c #949494", | |||
"; c #919191", | |||
"> c #909090", | |||
", c #808080", | |||
"' c #7D7D7D", | |||
") c #7E7E7E", | |||
"! c #7F7F7F", | |||
"~ c #9A9A9A", | |||
"{ c #A2A2A2", | |||
"] c #B8B8B8", | |||
"^ c #717171", | |||
"/ c #3B3B3B", | |||
"( c #D5D5D5", | |||
"_ c #FFFFFF", | |||
": c #A1A1A1", | |||
"< c #C3C3C3", | |||
"[ c #C7C7C7", | |||
"} c #C8C8C8", | |||
"| c #C9C9C9", | |||
"1 c #CACACA", | |||
"2 c #CBCBCB", | |||
"3 c #CCCCCC", | |||
"4 c #CDCDCD", | |||
"5 c #CECECE", | |||
"6 c #CFCFCF", | |||
"7 c #D0D0D0", | |||
"8 c #D1D1D1", | |||
"9 c #D2D2D2", | |||
"0 c #D3D3D3", | |||
"a c #D4D4D4", | |||
"b c #D6D6D6", | |||
"c c #636363", | |||
"d c #6C6C6C", | |||
"e c #F4F4F4", | |||
"f c #9F9F9F", | |||
"g c #C1C1C1", | |||
"h c #D7D7D7", | |||
"i c #5D5D5D", | |||
"j c #131313", | |||
"k c #A0A0A0", | |||
"l c #FDFDFD", | |||
"m c #FAFAFA", | |||
"n c #989898", | |||
"o c #9D9D9D", | |||
"p c #D8D8D8", | |||
"q c #4B4B4B", | |||
"r c #333333", | |||
"s c #F6F6F6", | |||
"t c #F2F2F2", | |||
"u c #EEEEEE", | |||
"v c #929292", | |||
"w c #C2C2C2", | |||
"x c #454545", | |||
"y c #5C5C5C", | |||
"z c #BBBBBB", | |||
"A c #AFAFAF", | |||
"B c #EAEAEA", | |||
"C c #E6E6E6", | |||
"D c #E2E2E2", | |||
"E c #8B8B8B", | |||
"F c #D9D9D9", | |||
"G c #3D3D3D", | |||
"H c #8C8C8C", | |||
"I c #6D6D6D", | |||
"J c #A3A3A3", | |||
"K c #C4C4C4", | |||
"L c #DADADA", | |||
"M c #2B2B2B", | |||
"N c #888888", | |||
"O c #B6B6B6", | |||
"P c #B3B3B3", | |||
"Q c #AAAAAA", | |||
"R c #939393", | |||
"S c #C0C0C0", | |||
"T c #DBDBDB", | |||
"U c #282828", | |||
"V c #767676", | |||
"W c #C5C5C5", | |||
"X c #C6C6C6", | |||
"Y c #969696", | |||
"Z c #B2B2B2", | |||
"` c #DCDCDC", | |||
" . c #272727", | |||
".. c #6F6F6F", | |||
"+. c #A9A9A9", | |||
"@. c #BDBDBD", | |||
"#. c #DDDDDD", | |||
"$. c #252525", | |||
"%. c #5E5E5E", | |||
"&. c #DEDEDE", | |||
"*. c #202020", | |||
"=. c #606060", | |||
"-. c #B4B4B4", | |||
";. c #DFDFDF", | |||
">. c #B9B9B9", | |||
",. c #BFBFBF", | |||
"'. c #B7B7B7", | |||
"). c #E0E0E0", | |||
"!. c #5B5B5B", | |||
"~. c #E1E1E1", | |||
"{. c #212121", | |||
"]. c #BABABA", | |||
"^. c #E3E3E3", | |||
"/. c #616161", | |||
"(. c #E4E4E4", | |||
"_. c #626262", | |||
":. c #E5E5E5", | |||
"<. c #E7E7E7", | |||
"[. c #676767", | |||
"}. c #E8E8E8", | |||
"|. c #2A2A2A", | |||
"1. c #757575", | |||
"2. c #E9E9E9", | |||
"3. c #2D2D2D", | |||
"4. c #797979", | |||
"5. c #3F3F3F", | |||
"6. c #7C7C7C", | |||
"7. c #BEBEBE", | |||
"8. c #EBEBEB", | |||
"9. c #484848", | |||
"0. c #ECECEC", | |||
"a. c #515151", | |||
"b. c #EDEDED", | |||
"c. c #999999", | |||
"d. c #666666", | |||
"e. c #EFEFEF", | |||
"f. c #F0F0F0", | |||
"g. c #838383", | |||
"h. c #F1F1F1", | |||
"i. c #8F8F8F", | |||
"j. c #F3F3F3", | |||
"k. c #070707", | |||
"l. c #1A1A1A", | |||
"m. c #F5F5F5", | |||
"n. c #1F1F1F", | |||
"o. c #060606", | |||
"p. c #323232", | |||
"q. c #F7F7F7", | |||
"r. c #151515", | |||
"s. c #F8F8F8", | |||
"t. c #313131", | |||
"u. c #464646", | |||
"v. c #F9F9F9", | |||
"w. c #505050", | |||
"x. c #565656", | |||
"y. c #5A5A5A", | |||
"z. c #FBFBFB", | |||
"A. c #979797", | |||
"B. c #686868", | |||
"C. c #FCFCFC", | |||
"D. c #6E6E6E", | |||
"E. c #090909", | |||
"F. c #828282", | |||
"G. c #424242", | |||
"H. c #0F0F0F", | |||
"I. c #0C0C0C", | |||
"J. c #030303", | |||
"K. c #191919", | |||
"L. c #3A3A3A", | |||
"M. c #898989", | |||
"N. c #A8A8A8", | |||
"O. c #595959", | |||
"P. c #363636", | |||
"Q. c #141414", | |||
"R. c #020202", | |||
"S. c #8A8A8A", | |||
"T. c #1B1B1B", | |||
"U. c #010101", | |||
" ", | |||
" ", | |||
" . ", | |||
" + @ # $ % & & * = - = ; > , ' ' ) ! ! ! , , , > ~ { ] ^ ", | |||
" / ( _ : % < [ } } | 1 2 2 3 4 4 5 6 6 7 8 8 9 0 a a ( b c ", | |||
" d e _ _ f { g } | | 1 2 2 3 4 5 5 6 7 7 8 9 9 0 a a ( b h i ", | |||
" j k _ _ l m n o g | 1 1 2 3 3 4 5 6 6 7 8 8 9 0 0 a ( ( b h p q ", | |||
" r 8 l m s t u v o w 1 2 2 3 4 4 5 6 6 7 8 9 9 0 a a ( b b h p p x . ", | |||
" y 4 z A 2 B C D E @ < 2 3 3 4 5 5 6 7 7 8 9 9 0 a ( ( b h h p F F G . . ", | |||
" H o H ! I ' 1 b ) J K 3 4 4 5 6 6 7 8 8 9 0 0 a ( b b h p p F L L M . . ", | |||
" N O $ P Q R ! S ) # [ 4 4 5 6 7 7 8 9 9 0 a a ( b b h p F F L T T U . . ", | |||
" V W X X K z J Y R Z w W X 6 7 7 8 9 0 0 a ( ( b h h p F F L T ` ` .. . ", | |||
" ..} } | 1 | S +.$ S [ @.3 7 8 8 9 0 a a ( b b h p p F L L T ` #.#.$.. . ", | |||
" %.| | 1 2 2 2 z 1 4 6 w S S S W 7 a a ( b h h p F F L T T ` #.#.&.*.. . ", | |||
" =.1 1 2 3 3 4 -.5 6 7 4 < 9 9 5 K w W ( ( 1 1 2 7 L T ` ` #.&.&.;.*.. . ", | |||
" =.2 2 3 4 4 5 ] 6 7 8 6 >.,.2 a ( b 0 < '.4 0 a K T ` #.#.&.;.;.).*.. . ", | |||
" !.3 3 4 5 5 | $ 6 7 8 6 w a } g } b h p 7 K L T X ` #.&.&.;.).).~.{.. . ", | |||
" y 3 4 5 6 6 S ].S g g w w ( ( b 7 < 1 F 9 7 T ` [ [ | 1 L ;.~.~.D {.. . ", | |||
" y 4 5 6 7 7 ,.9 9 0 a a ( b b h p F 8 W W 8 ` #.6 F ;.#.7 2 a D ^.{.. . ", | |||
" /.5 6 7 7 8 g 0 0 a ( ( b h h p F F L T a } a &.F 6 ).).~.D D ^.(.{.. . ", | |||
" _.6 7 S K W @.0 a ( b b h p p F L L T 7 S 1 &.;.#.z 2 2 3 ~.^.(.:.{.. . ", | |||
" c 7 8 S 7 7 O 8 ( b h h p F F L T L X 7 3 ,.T ).).1 D D ^.(.(.:.C U . . ", | |||
" c 8 9 w 0 a 8 O X 0 h p F F L T b K L 8 4 2 ).).~.2 ^.^.(.:.:.C <.U . . ", | |||
" [.9 0 < a ( b w a | W K ] [ z L K #.b 2 ;.1 ~.~.D 5 ^.(.:.C C <.}.|.. . ", | |||
" 1.0 a '.( b h 2 7 F F L S W 1 w ` T [ ).( < &.` T K (.:.C <.<.}.2.3.. . ", | |||
" 4.a ( < ( h p a O X } } z 1 ` X F X ;.).[ 3 ( b h ^.:.C <.<.}.2.B 5.. . ", | |||
" 6.( b 7 g X X [ ,.7 F L | p &.` 7.;.~.2 &.` ^.(.:.C C <.}.}.2.B B x . . ", | |||
" ! b h h p F F p F T ` #.p 3 ;.;.2 ;.( ( ^.(.:.:.C <.<.}.2.2.B 8.8.9.. . ", | |||
" ; h p p F L L T ` ` #.&.&.3 4 4 4 L 4 ^.(.:.:.C <.}.}.2.B B 8.0.0.a.. . ", | |||
" n p F F L T T ` #.#.&.;.;.).~.D ).| ^.(.:.C C <.}.}.2.B 8.8.0.b.b.=.. . ", | |||
" c.F L L T ` ` #.&.&.` #.;.~.D ^.5 ;.:.:.C <.<.}.2.2.B 8.0.0.b.u u d.. . ", | |||
" & L L T ` #.#.5 #.9 3 4 < D ^.T 8 :.C C <.}.}.2.B B 8.0.0.b.u e.e.1.. . ", | |||
" $ T T ` #.#.&.2 #.).~.D F a D 1 :.C C <.}.2.2.B 8.8.0.b.b.u e.e.f.g.. . ", | |||
" '.` ` #.&.&.;.3 &.~.D ^.^.2 1 ^.C <.&.D <.&.B T 2.0 0 ( p D f.f.h.i.. . ", | |||
" . 3 #.#.&.;.;.).4 ;.D ^.(.(.p 6 C <.}.}.2.B B 8.0.b.b.u e.e.f.h.h.t : . . ", | |||
" . a &.&.;.).).~.F a ~.D D ^.(.5 <.}.2.2.B D (.0.:.#.( ( b L h.t t j.Z . . ", | |||
" k.h ;.;.).~.~.D ~.6 6 7 7 8 9 F }.2.B B 8.~.D b.(.C u e.f.h.t j.j.e < . . ", | |||
" l.#.;.).~.D D ^.(.(.:.C C <.}.}.2.B 8.8.0.F a b p 8.f.u e.t j.e e m.&.. . ", | |||
" n.).).~.D ^.^.(.:.:.C <.<.}.2.2.B 8.8.B b.u u e.f.f.h.(.:.j.e e m.s 0.o.. . ", | |||
" p.~.~.D ^.^.(.:.C C <.}.}.2.B B 8.0.0.;.a h u b.F L L e.D ` j.m.s q.q.r.. . ", | |||
" 5.D D ^.(.(.:.C C <.}.2.2.B 8.8.0.b.b.u e.e.f.h.t t h.h.t e e e q.s.s.t.. . ", | |||
" u.^.^.(.:.:.C <.<.}.2.B B 8.0.0.b.<.L e.` h b 2.j.j.` T T 0.^.#.m.v.v.w.. . ", | |||
" x.(.(.:.C C <.}.}.2.B B 8.0.b.b.u u u f.f.h.t j.j.e m.s s q.s.s.v.m m ^ . . ", | |||
" y.(.:.C <.<.}.2.2.B 8.8.0.b.b.u e.f.f.h.t t j.e e m.s s q.s.v.v.m z.z.A.. . ", | |||
" B.:.C <.}.}.2.B B 8.0.0.b.u u e.f.h.h.t j.j.e m.m.s q.q.s.v.v.m z.C.C.K . . ", | |||
" D.C <.}.}.2.B 8.8.0.b.b.u e.e.f.h.h.t j.e e e t B C C ;.;.).~.2.0.s.l e E.. ", | |||
" F.<.}.2.2.B 8.8.0.b.u b.~.X & v 6.[.a.G.3.{.H.I.J.. . . . . . . . I.K.L.H.. ", | |||
" M.}.2.B B B 9 N.' O.P.Q.R.. . . . . . . . . . . . . . . . . . . . . . . . . ", | |||
" f 2.4 S.w.T.U.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", | |||
" %./ J.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", | |||
" . . . . . . . . . . . . . . . . . . ", | |||
" . . . . . . . . ", | |||
" . . ", | |||
" ", | |||
" ", | |||
" ", | |||
" ", | |||
" ", | |||
" ", | |||
" ", | |||
" "}; | |||
". c #676767", | |||
"+ c #707070", | |||
"@ c #909090", | |||
"# c #D5D5D5", | |||
"$ c #A8A8A8", | |||
"% c #C0C0C0", | |||
"& c #C3C3C3", | |||
"* c #C1C1C1", | |||
"= c #C2C2C2", | |||
"- c #C4C4C4", | |||
"; c #C8C8C8", | |||
"> c #CCCCCC", | |||
", c #9E9E9E", | |||
"' c #BEBEBE", | |||
") c #F9F9F9", | |||
"! c #EAEAEA", | |||
"~ c #9D9D9D", | |||
"{ c #CACACA", | |||
"] c #CDCDCD", | |||
"^ c #CECECE", | |||
"/ c #CFCFCF", | |||
"( c #D1D1D1", | |||
"_ c #D2D2D2", | |||
": c #D3D3D3", | |||
"< c #D4D4D4", | |||
"[ c #D6D6D6", | |||
"} c #989898", | |||
"| c #6C6C6C", | |||
"1 c #B3B3B3", | |||
"2 c #DEDEDE", | |||
"3 c #EEEEEE", | |||
"4 c #D9D9D9", | |||
"5 c #979797", | |||
"6 c #C6C6C6", | |||
"7 c #CBCBCB", | |||
"8 c #D0D0D0", | |||
"9 c #D7D7D7", | |||
"0 c #D8D8D8", | |||
"a c #919191", | |||
"b c #090909", | |||
"c c #A0A0A0", | |||
"d c #8F8F8F", | |||
"e c #BDBDBD", | |||
"f c #969696", | |||
"g c #DADADA", | |||
"h c #888888", | |||
"i c #050505", | |||
"j c #929292", | |||
"k c #BFBFBF", | |||
"l c #AAAAAA", | |||
"m c #9F9F9F", | |||
"n c #A4A4A4", | |||
"o c #C5C5C5", | |||
"p c #DBDBDB", | |||
"q c #878787", | |||
"r c #C9C9C9", | |||
"s c #B9B9B9", | |||
"t c #DCDCDC", | |||
"u c #DDDDDD", | |||
"v c #858585", | |||
"w c #040404", | |||
"x c #838383", | |||
"y c #818181", | |||
"z c #DFDFDF", | |||
"A c #E0E0E0", | |||
"B c #828282", | |||
"C c #C7C7C7", | |||
"D c #868686", | |||
"E c #E3E3E3", | |||
"F c #E5E5E5", | |||
"G c #8C8C8C", | |||
"H c #8A8A8A", | |||
"I c #E4E4E4", | |||
"J c #E6E6E6", | |||
"K c #8E8E8E", | |||
"L c #E7E7E7", | |||
"M c #E8E8E8", | |||
"N c #959595", | |||
"O c #060606", | |||
"P c #9A9A9A", | |||
"Q c #E2E2E2", | |||
"R c #080808", | |||
"S c #A5A5A5", | |||
"T c #E9E9E9", | |||
"U c #EBEBEB", | |||
"V c #A3A3A3", | |||
"W c #AEAEAE", | |||
"X c #E1E1E1", | |||
"Y c #ECECEC", | |||
"Z c #EDEDED", | |||
"` c #ACACAC", | |||
" . c #0C0C0C", | |||
".. c #BCBCBC", | |||
"+. c #EFEFEF", | |||
"@. c #B8B8B8", | |||
"#. c #0E0E0E", | |||
"$. c #F0F0F0", | |||
"%. c #111111", | |||
"&. c #F2F2F2", | |||
"*. c #141414", | |||
"=. c #F3F3F3", | |||
"-. c #181818", | |||
";. c #F5F5F5", | |||
">. c #F1F1F1", | |||
",. c #212121", | |||
"'. c #000000", | |||
"). c #F8F8F8", | |||
"!. c #353535", | |||
"~. c #565656", | |||
"{. c #F4F4F4", | |||
"]. c #F6F6F6", | |||
"^. c #FAFAFA", | |||
"/. c #FBFBFB", | |||
"(. c #7C7C7C", | |||
"_. c #020202", | |||
":. c #949494", | |||
"<. c #747474", | |||
"[. c #5D5D5D", | |||
"}. c #484848", | |||
"|. c #363636", | |||
"1. c #252525", | |||
"2. c #171717", | |||
"3. c #0B0B0B", | |||
"4. c #2C2C2C", | |||
"5. c #0D0D0D", | |||
"6. c #010101", | |||
" . + ", | |||
" @ # $ % & * * * % % * = & - ; > , ", | |||
" ' ) ! ~ - { { > ] ^ / ( _ : < # [ } ", | |||
" | 1 2 3 4 5 6 7 > ] / 8 ( _ : < [ 9 0 a b ", | |||
" a c d , e f ; ] ^ / 8 ( : < # [ 0 0 g h i ", | |||
" j * k l m n o { / 8 _ : < # 9 9 4 g p q i ", | |||
" q r { r s - 6 o ; ^ : < [ 9 0 4 p t u v w ", | |||
" x { > ] % / / - ] ] { ] 7 ^ / p t u 2 v w ", | |||
" y > ] > k ] ^ 6 > 7 _ _ r 0 ^ 4 p z A q w ", | |||
" B ] / { C 7 > / [ [ 8 ] ^ p ( < # # z q w ", | |||
" D ^ { ; ^ < # [ 9 4 g [ { 4 0 ( 0 A E h w ", | |||
" q / ; r r < 9 0 4 g < / C t p # z E F G i ", | |||
" H 8 7 # 6 ^ > ; { : < _ ( z u g I J J K i ", | |||
" f ( { 9 / 7 ( & ^ / : g 7 0 0 u J L M N O ", | |||
" P # ] ] > ] 0 8 g 8 g [ u Q I J M M ! ~ R ", | |||
" S 0 0 g g t u 4 _ _ [ t I F L M T ! U V b ", | |||
" W 4 g p t 2 u z X u 4 F J L M T U Y Z ` . ", | |||
" ..g t u < g # _ A 9 I J M T ! U Y Z +.@.#. ", | |||
" * t u 2 < A Q u ( Q F I F L J u A M $.& %. ", | |||
" ..2 z A 0 2 E Q [ L M T J ! I z X 3 &.( *. ", | |||
" & z X Q A 0 4 g 2 T ! ! u Q L +.$.&.=.Q -. ", | |||
" { X Q E F J L M T U ! L L T T ! T =.;.>.,.'. ", | |||
" ^ E I F J L T ! U Y U J ! Z T Y U >.;.).!.'. ", | |||
" _ I F L M T ! Y Z Y M M E +.>.M Y Z &.) ~.'. ", | |||
" # J L M T U Y Z 3 $.$.&.=.{.;.].).) ^./.(.'. ", | |||
" 0 M M ! U Y Y ! F Q z u g [ 8 ^ > / < A 5 _. ", | |||
" t T ! 9 1 :.<.[.}.|.1.2.3.w '.'.'.'.'.b *._. ", | |||
" ~ . 4.5.R w 6.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'. ", | |||
" '.'.'.'.'.'.'.'.'.'. ", | |||
" '. "}; |
@@ -41,7 +41,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Amps/Mixers"; | |||
} | |||
} | |||
@@ -43,7 +43,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Filters/FX"; | |||
} | |||
} | |||
@@ -40,7 +40,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Control"; | |||
} | |||
} | |||
@@ -100,7 +100,7 @@ void CounterPlugin::Execute() | |||
m_Current++; | |||
} | |||
} | |||
if (m_Current>=m_Count) | |||
{ | |||
m_CurrentLevel=-m_CurrentLevel; | |||
@@ -40,7 +40,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Delay/Sampling"; | |||
} | |||
} | |||
@@ -62,7 +62,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "InputOutput"; | |||
} | |||
} | |||
@@ -38,7 +38,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Control"; | |||
} | |||
} | |||
@@ -40,7 +40,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Delay/Sampling"; | |||
} | |||
} | |||
@@ -14,7 +14,7 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#include "EnvFollowerPlugin.h" | |||
#include "EnvFollowerPluginGUI.h" | |||
#include <FL/Fl_Button.h> | |||
@@ -38,7 +38,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Control"; | |||
} | |||
} | |||
@@ -38,7 +38,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Control"; | |||
} | |||
} | |||
@@ -44,16 +44,16 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Filters/FX"; | |||
} | |||
} | |||
/////////////////////////////////////////////////////// | |||
FilterPlugin::FilterPlugin() : | |||
fs(0), // Sampling frequency | |||
fc(100), // Filter cutoff | |||
Q(1), // Resonance | |||
fs(0), // Sampling frequency | |||
fc(100), // Filter cutoff | |||
Q(1), // Resonance | |||
m_LastFC(0), | |||
m_LastQ(1), | |||
k(1.0), // Set overall filter gain | |||
@@ -14,7 +14,7 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#include <math.h> | |||
#include "FormantFilterPlugin.h" | |||
#include "FormantFilterPluginGUI.h" | |||
@@ -77,7 +77,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Filters/FX"; | |||
} | |||
} | |||
@@ -91,7 +91,7 @@ m_Vowel(0) | |||
m_PluginInfo.Height=110; | |||
m_PluginInfo.NumInputs=2; | |||
m_PluginInfo.NumOutputs=1; | |||
m_PluginInfo.PortTips.push_back("Input"); | |||
m_PluginInfo.PortTips.push_back("Input"); | |||
m_PluginInfo.PortTips.push_back("Vowel CV"); | |||
m_PluginInfo.PortTips.push_back("Output"); | |||
@@ -338,7 +338,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "InputOutput"; | |||
} | |||
} | |||
@@ -39,7 +39,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "InputOutput"; | |||
} | |||
} | |||
@@ -50,7 +50,7 @@ m_NoteLevel(0), | |||
m_TriggerLevel(0) | |||
{ | |||
m_Version=0; | |||
m_PluginInfo.Name="Keyboard"; | |||
m_PluginInfo.Width=300; | |||
m_PluginInfo.Height=90; | |||
@@ -45,7 +45,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Filters/FX"; | |||
} | |||
} | |||
@@ -30,7 +30,7 @@ int GetID() { return 124; } | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Oscillators"; | |||
} | |||
} | |||
@@ -14,7 +14,7 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#include <math.h> | |||
#include "MasherPlugin.h" | |||
#include "MasherPluginGUI.h" | |||
@@ -46,7 +46,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Filters/FX"; | |||
} | |||
} | |||
@@ -40,7 +40,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Sequencing"; | |||
} | |||
} | |||
@@ -29,7 +29,7 @@ int GetID() { return 123; } | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Control"; | |||
} | |||
} | |||
@@ -43,7 +43,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "InputOutput"; | |||
} | |||
} | |||
@@ -40,7 +40,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Amps/Mixers"; | |||
} | |||
} | |||
@@ -14,7 +14,7 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#include <math.h> | |||
#include "MoogFilterPlugin.h" | |||
#include "MoogFilterPluginGUI.h" | |||
@@ -43,7 +43,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Filters/FX"; | |||
} | |||
} | |||
@@ -14,7 +14,7 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#include "NoisePlugin.h" | |||
#include "NoisePluginGUI.h" | |||
#include <FL/Fl_Button.h> | |||
@@ -39,7 +39,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Oscillators"; | |||
} | |||
} | |||
@@ -14,7 +14,7 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#include "NoteSnapPlugin.h" | |||
#include "NoteSnapPluginGUI.h" | |||
#include <FL/Fl_Button.h> | |||
@@ -39,7 +39,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Control"; | |||
} | |||
} | |||
@@ -45,7 +45,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Oscillators"; | |||
} | |||
} | |||
@@ -83,7 +83,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "InputOutput"; | |||
} | |||
} | |||
@@ -48,7 +48,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Delay/Sampling"; | |||
} | |||
} | |||
@@ -61,7 +61,7 @@ m_Recording(false) | |||
m_PluginInfo.Width=400; | |||
m_PluginInfo.Height=215; | |||
m_PluginInfo.NumInputs=21; | |||
m_PluginInfo.NumOutputs=9; | |||
m_PluginInfo.NumOutputs=9; | |||
m_PluginInfo.PortTips.push_back("Sample 1 Pitch"); | |||
m_PluginInfo.PortTips.push_back("Sample 1 Trigger"); | |||
m_PluginInfo.PortTips.push_back("Sample 2 Pitch"); | |||
@@ -14,7 +14,7 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#include <math.h> | |||
#include "RingModPlugin.h" | |||
#include "RingModPluginGUI.h" | |||
@@ -39,7 +39,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Filters/FX"; | |||
} | |||
} | |||
@@ -41,7 +41,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Filters/FX"; | |||
} | |||
} | |||
@@ -14,7 +14,7 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#include "SampleHoldPlugin.h" | |||
#include "SampleHoldPluginGUI.h" | |||
#include <FL/Fl_Button.h> | |||
@@ -38,7 +38,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Control"; | |||
} | |||
} | |||
@@ -42,7 +42,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Delay/Sampling"; | |||
} | |||
} | |||
@@ -54,7 +54,7 @@ SamplerPlugin::SamplerPlugin() | |||
m_PluginInfo.Width=245; | |||
m_PluginInfo.Height=420; | |||
m_PluginInfo.NumInputs=18; | |||
m_PluginInfo.NumOutputs=9; | |||
m_PluginInfo.NumOutputs=9; | |||
m_PluginInfo.PortTips.push_back("Sample 1 Pitch"); | |||
m_PluginInfo.PortTips.push_back("Sample 1 Trigger"); | |||
m_PluginInfo.PortTips.push_back("Sample 2 Pitch"); | |||
@@ -39,7 +39,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Control"; | |||
} | |||
} | |||
@@ -14,7 +14,7 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#include "SeqPlugin.h" | |||
#include "SeqPluginGUI.h" | |||
#include <FL/Fl_Button.h> | |||
@@ -43,7 +43,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Sequencing"; | |||
} | |||
} | |||
@@ -14,7 +14,7 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#include "SeqSelectorPlugin.h" | |||
#include "SeqSelectorPluginGUI.h" | |||
#include <FL/Fl_Button.h> | |||
@@ -39,7 +39,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Sequencing"; | |||
} | |||
} | |||
@@ -14,7 +14,7 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#include "SequencerPlugin.h" | |||
#include "SequencerPluginGUI.h" | |||
#include <FL/Fl_Button.h> | |||
@@ -39,23 +39,23 @@ Note::Note(float t=0, float l=0.1f, int n=0, float v=1.0f) | |||
Note::~Note() | |||
{ | |||
} | |||
istream &operator>>(istream &s, Note &o) | |||
{ | |||
int version=1; | |||
string dummy; | |||
s>>version>>dummy>>o.Time>>o.Length>>o.MidiNote>>o.Vol; | |||
return s; | |||
} | |||
ostream &operator<<(ostream &s, Note &o) | |||
{ | |||
{ | |||
int version=1; | |||
s<<version<<" note "<<o.Time<<" "<<o.Length<<" "<<o.MidiNote<<" "<<o.Vol<<" "; | |||
return s; | |||
} | |||
} | |||
///////////////////////////////////////////////////////////////////////// | |||
@@ -70,8 +70,8 @@ Pattern::~Pattern() | |||
void Pattern::Copy(const Pattern *o) | |||
{ | |||
// can't do this as we don't want to preserve the id numbers | |||
//m_NoteMap=o->m_NoteMap; | |||
//m_NoteMap=o->m_NoteMap; | |||
int c=0; | |||
for (map<int,Note>::const_iterator i = o->m_NoteMap.begin(); | |||
i!=o->m_NoteMap.end(); i++) | |||
@@ -89,7 +89,7 @@ void Pattern::AddNote(int ID, float t, float l, int n, float v) | |||
return; | |||
} | |||
Note newnote(t,l,n,v); | |||
m_NoteMap[ID]=newnote; | |||
} | |||
@@ -101,7 +101,7 @@ void Pattern::RemoveNote(int ID) | |||
cerr<<"couldn't find note "<<ID<<" not removed"<<endl; | |||
return; | |||
} | |||
m_NoteMap.erase(i); | |||
} | |||
@@ -113,7 +113,7 @@ Note *Pattern::GetNote(int ID) | |||
cerr<<"couldn't find note "<<ID<<endl; | |||
return NULL; | |||
} | |||
return &i->second; | |||
} | |||
@@ -129,24 +129,24 @@ istream &operator>>(istream &s, Pattern &o) | |||
s>>t; | |||
o.m_NoteMap[id++]=t; | |||
} | |||
return s; | |||
} | |||
ostream &operator<<(ostream &s, Pattern &o) | |||
{ | |||
{ | |||
int version=1; | |||
s<<version<<" pattern "<<o.m_NoteMap.size()<<" "; | |||
for (map<int,Note>::iterator i = o.m_NoteMap.begin(); | |||
i!=o.m_NoteMap.end(); i++) | |||
{ | |||
s<<i->second; | |||
} | |||
s<<endl; | |||
return s; | |||
} | |||
} | |||
////////////////////////////////////////////////////////////////////////// | |||
@@ -229,7 +229,7 @@ void Track::CloneSequence(int ID, int nID) | |||
s->SetYPos(GetSequence(ID)->GetYPos()); | |||
s->SetPatternID(GetSequence(ID)->GetPatternID()); | |||
s->SetStartTime(GetSequence(ID)->GetStartTime()); | |||
s->SetChannel(GetSequence(ID)->GetChannel()); | |||
s->SetChannel(GetSequence(ID)->GetChannel()); | |||
} | |||
// duplicate the sequence, and copy the pattern to it's own version | |||
@@ -435,7 +435,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Sequencing"; | |||
} | |||
} | |||
@@ -14,7 +14,7 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#include "SmoothPlugin.h" | |||
#include "SmoothPluginGUI.h" | |||
#include <FL/Fl_Button.h> | |||
@@ -38,7 +38,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Control"; | |||
} | |||
} | |||
@@ -44,7 +44,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Delay/Sampling"; | |||
} | |||
} | |||
@@ -38,7 +38,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Control"; | |||
} | |||
} | |||
@@ -38,7 +38,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Amps/Mixers"; | |||
} | |||
} | |||
@@ -43,7 +43,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Delay/Sampling"; | |||
} | |||
} | |||
@@ -35,7 +35,7 @@ int GetID() { | |||
} | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Filters/FX"; | |||
} | |||
} | |||
@@ -14,7 +14,7 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#include "WaveTablePlugin.h" | |||
#include "WaveTablePluginGUI.h" | |||
#include <FL/Fl_Button.h> | |||
@@ -45,7 +45,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Oscillators"; | |||
} | |||
} | |||
@@ -41,7 +41,7 @@ int GetID() | |||
string GetGroupName() | |||
{ | |||
return "SpiralSound"; | |||
return "Amps/Mixers"; | |||
} | |||
} | |||
@@ -56,8 +56,6 @@ static int Numbers[512]; | |||
static const int MAIN_WIDTH = 700; | |||
static const int MAIN_HEIGHT = 600; | |||
static const int SLIDER_WIDTH = 15; | |||
static const int TOOLBOX_HEIGHT = MAIN_HEIGHT; | |||
static const int TOOLBOX_WIDTH = 132+SLIDER_WIDTH; | |||
static const int ICON_DEPTH = 3; | |||
static const int COMMENT_ID = -1; | |||
@@ -70,8 +68,8 @@ bool SynthModular::m_BlockingOutputPluginIsReady = false; | |||
////////////////////////////////////////////////////////// | |||
DeviceWin::~DeviceWin() | |||
{ | |||
} | |||
{ | |||
} | |||
////////////////////////////////////////////////////////// | |||
@@ -81,25 +79,25 @@ m_NextPluginButton(1), | |||
m_NextPluginButtonXPos(5), | |||
m_NextPluginButtonYPos(20), | |||
m_PauseAudio(false) | |||
{ | |||
{ | |||
m_Info.BUFSIZE = SpiralInfo::BUFSIZE; | |||
m_Info.FRAGSIZE = SpiralInfo::FRAGSIZE; | |||
m_Info.FRAGCOUNT = SpiralInfo::FRAGCOUNT; | |||
m_Info.FRAGCOUNT = SpiralInfo::FRAGCOUNT; | |||
m_Info.SAMPLERATE = SpiralInfo::SAMPLERATE; | |||
m_Info.OUTPUTFILE = SpiralInfo::OUTPUTFILE; | |||
m_Info.MIDIFILE = SpiralInfo::MIDIFILE; | |||
m_Info.MIDIFILE = SpiralInfo::MIDIFILE; | |||
m_Info.POLY = SpiralInfo::POLY; | |||
//m_Info.GUI_COLOUR = SpiralInfo::GUI_COLOUR; | |||
for (int n=0; n<512; n++) Numbers[n]=n; | |||
for (int n=0; n<512; n++) Numbers[n]=n; | |||
m_CH.Register("PauseAudio",&m_PauseAudio); | |||
} | |||
////////////////////////////////////////////////////////// | |||
SynthModular::~SynthModular() | |||
{ | |||
{ | |||
ClearUp(); | |||
PluginManager::Get()->PackUpAndGoHome(); | |||
} | |||
@@ -109,36 +107,36 @@ SynthModular::~SynthModular() | |||
void SynthModular::ClearUp() | |||
{ | |||
PauseAudio(); | |||
for(map<int,DeviceWin*>::iterator i=m_DeviceWinMap.begin(); | |||
i!=m_DeviceWinMap.end(); i++) | |||
{ | |||
if (i->second->m_DeviceGUI->GetPluginWindow()) | |||
{ | |||
i->second->m_DeviceGUI->GetPluginWindow()->hide(); | |||
//m_MainWindow->remove(i->second->m_DeviceGUI->GetPluginWindow()); | |||
//m_MainWindow->remove(i->second->m_DeviceGUI->GetPluginWindow()); | |||
} | |||
// deleted by Canvas::Remove()? seems to cause random crashes | |||
//delete i->second->m_DeviceGUI; | |||
delete i->second->m_Device; | |||
i->second->m_Device=NULL; | |||
} | |||
m_Canvas->Clear(); | |||
m_DeviceWinMap.clear(); | |||
m_NextID=0; | |||
ResumeAudio(); | |||
} | |||
////////////////////////////////////////////////////////// | |||
void SynthModular::Update() | |||
{ | |||
{ | |||
m_CH.UpdateDataNow(); | |||
if (m_PauseAudio) return; | |||
// for all the plugins | |||
for(map<int,DeviceWin*>::iterator i=m_DeviceWinMap.begin(); | |||
i!=m_DeviceWinMap.end(); i++) | |||
@@ -148,35 +146,35 @@ void SynthModular::Update() | |||
#ifdef DEBUG_PLUGINS | |||
cerr<<"Updating channelhandler of plugin "<<i->second->m_PluginID<<endl; | |||
#endif | |||
// updates the data from the gui thread, if it's not blocking | |||
i->second->m_Device->UpdateChannelHandler(); | |||
#ifdef DEBUG_PLUGINS | |||
#ifdef DEBUG_PLUGINS | |||
cerr<<"Finished updating"<<endl; | |||
#endif | |||
// run any commands we've received from the GUI's | |||
i->second->m_Device->ExecuteCommands(); | |||
} | |||
} | |||
// run the plugins (only ones connected to anything) | |||
list<int> ExecutionOrder = m_Canvas->GetGraph()->GetSortedList(); | |||
for (list<int>::reverse_iterator i=ExecutionOrder.rbegin(); | |||
for (list<int>::reverse_iterator i=ExecutionOrder.rbegin(); | |||
i!=ExecutionOrder.rend(); i++) | |||
{ | |||
// use the graphsort order to remove internal latency | |||
map<int,DeviceWin*>::iterator di=m_DeviceWinMap.find(*i); | |||
if (di!=m_DeviceWinMap.end() && di->second->m_Device) | |||
{ | |||
if (di!=m_DeviceWinMap.end() && di->second->m_Device) | |||
{ | |||
#ifdef DEBUG_PLUGINS | |||
cerr<<"Executing plugin "<<di->second->m_PluginID<<endl; | |||
#endif | |||
di->second->m_Device->Execute(); | |||
#ifdef DEBUG_PLUGINS | |||
#ifdef DEBUG_PLUGINS | |||
cerr<<"Finished executing"<<endl; | |||
#endif | |||
} | |||
@@ -187,42 +185,42 @@ void SynthModular::Update() | |||
void SynthModular::UpdatePluginGUIs() | |||
{ | |||
// see if any need deleting | |||
for (map<int,DeviceWin*>::iterator i=m_DeviceWinMap.begin(); | |||
// see if any need deleting | |||
for (map<int,DeviceWin*>::iterator i=m_DeviceWinMap.begin(); | |||
i!=m_DeviceWinMap.end(); i++) | |||
{ | |||
{ | |||
if (i->second->m_DeviceGUI->GetPluginWindow()) | |||
{ | |||
SpiralPluginGUI *GUI=(SpiralPluginGUI *)i->second->m_DeviceGUI->GetPluginWindow(); | |||
GUI->Update(); | |||
} | |||
if (i->second->m_DeviceGUI->Killed()) | |||
{ | |||
PauseAudio(); | |||
if (i->second->m_Device) | |||
if (i->second->m_Device) | |||
{ | |||
delete i->second->m_Device; | |||
i->second->m_Device=NULL; | |||
} | |||
if (i->second->m_DeviceGUI->GetPluginWindow()) | |||
{ | |||
i->second->m_DeviceGUI->GetPluginWindow()->hide(); | |||
//m_MainWindow->remove(i->second->m_DeviceGUI->GetPluginWindow()); | |||
} | |||
i->second->m_DeviceGUI->Clear(); | |||
m_Canvas->RemoveDevice(i->second->m_DeviceGUI); | |||
// deleted by Canvas::Remove()? seems to cause random crashes | |||
//delete i->second->m_DeviceGUI; | |||
m_Canvas->RemoveDevice(i->second->m_DeviceGUI); | |||
// deleted by Canvas::Remove()? seems to cause random crashes | |||
//delete i->second->m_DeviceGUI; | |||
m_DeviceWinMap.erase(i); | |||
ResumeAudio(); | |||
break; | |||
} | |||
} | |||
m_Canvas->Poll(); | |||
} | |||
@@ -230,111 +228,112 @@ void SynthModular::UpdatePluginGUIs() | |||
SpiralWindowType *SynthModular::CreateWindow() | |||
{ | |||
int xoff=0, yoff=10, but=64, gap=MAIN_HEIGHT/5, n=0; | |||
m_TopWindow = new SpiralWindowType(MAIN_WIDTH, MAIN_HEIGHT, LABEL.c_str()); | |||
m_TopWindow->resizable(m_TopWindow); | |||
m_MainButtons = new Fl_Group(0, 0, but, MAIN_HEIGHT, ""); | |||
m_MainButtons->type(1); | |||
m_MainButtons->color(SpiralSynthModularInfo::GUICOL_Tool); | |||
m_MainButtons->box(FL_FLAT_BOX); | |||
m_MainButtons->user_data((void*)(this)); | |||
m_TopWindow->add(m_MainButtons); | |||
m_Load = new Fl_Button(xoff, 5+yoff, but, but, ""); | |||
m_Load->box(FL_NO_BOX); | |||
//m_TopWindow->resizable(m_TopWindow); | |||
int but=44; | |||
int ToolbarHeight=but+20; | |||
m_Topbar = new Fl_Pack (0, 0, MAIN_WIDTH, ToolbarHeight, ""); | |||
m_Topbar->user_data((void*)(this)); | |||
m_Topbar->type(FL_HORIZONTAL); | |||
m_TopWindow->add(m_Topbar); | |||
m_ToolbarPanel = new Fl_Pack (0, 0, but*5, ToolbarHeight, ""); | |||
m_ToolbarPanel->user_data((void*)(this)); | |||
m_ToolbarPanel->type(FL_VERTICAL); | |||
m_Topbar->add(m_ToolbarPanel); | |||
m_ToolbarFiller = new Fl_Group (0, 0, but*5, 20, ""); | |||
m_ToolbarPanel->add(m_ToolbarFiller); | |||
m_Toolbar = new Fl_Pack (0, 0, but*5, but, ""); | |||
m_Toolbar->user_data((void*)(this)); | |||
m_Toolbar->type(FL_HORIZONTAL); | |||
m_Toolbar->color(SpiralSynthModularInfo::GUICOL_Tool); | |||
m_ToolbarPanel->add(m_Toolbar); | |||
m_Load = new Fl_Button(0, 0, but, but, ""); | |||
Fl_Pixmap *tPix = new Fl_Pixmap(load_xpm); | |||
m_Load->image(tPix->copy(tPix->w(),tPix->h())); | |||
m_Load->image(tPix->copy()); | |||
delete tPix; | |||
m_Load->type(0); | |||
m_Load->box(FL_PLASTIC_UP_BOX); | |||
m_Load->color(SpiralSynthModularInfo::GUICOL_Button); | |||
m_Load->selection_color(SpiralSynthModularInfo::GUICOL_Tool); | |||
m_Load->tooltip("Load a patch file"); | |||
m_Load->labelsize (1); | |||
m_Load->tooltip("Load a patch file"); | |||
m_Load->callback((Fl_Callback*)cb_Load); | |||
m_MainButtons->add(m_Load); | |||
n++; | |||
m_Save = new Fl_Button(xoff, n*gap+yoff, but, but, ""); | |||
m_Save->box(FL_NO_BOX); | |||
m_Toolbar->add(m_Load); | |||
m_Save = new Fl_Button(0, 0, but, but, ""); | |||
tPix = new Fl_Pixmap(save_xpm); | |||
m_Save->image(tPix->copy(tPix->w(),tPix->h())); | |||
delete tPix; | |||
m_Save->image(tPix->copy()); | |||
delete tPix; | |||
m_Save->type(0); | |||
m_Save->box(FL_PLASTIC_UP_BOX); | |||
m_Save->color(SpiralSynthModularInfo::GUICOL_Button); | |||
m_Save->selection_color(SpiralSynthModularInfo::GUICOL_Tool); | |||
m_Save->tooltip("Save a patch file"); | |||
m_Save->labelsize (1); | |||
m_Save->tooltip("Save a patch file"); | |||
m_Save->callback((Fl_Callback*)cb_Save); | |||
m_MainButtons->add(m_Save); | |||
n++; | |||
m_New = new Fl_Button(xoff, n*gap+yoff, but, but, ""); | |||
m_New->box(FL_NO_BOX); | |||
m_Toolbar->add(m_Save); | |||
m_New = new Fl_Button(0, 0, but, but, ""); | |||
tPix = new Fl_Pixmap(new_xpm); | |||
m_New->image(tPix->copy(tPix->w(),tPix->h())); | |||
delete tPix; | |||
m_New->image(tPix->copy()); | |||
delete tPix; | |||
m_New->type(0); | |||
m_New->box(FL_PLASTIC_UP_BOX); | |||
m_New->color(SpiralSynthModularInfo::GUICOL_Button); | |||
m_New->selection_color(SpiralSynthModularInfo::GUICOL_Tool); | |||
m_New->tooltip("New patch"); | |||
m_New->labelsize (1); | |||
m_New->tooltip("New patch"); | |||
m_New->callback((Fl_Callback*)cb_New); | |||
m_MainButtons->add(m_New); | |||
n++; | |||
m_Options = new Fl_Button(xoff, n*gap+yoff, but, but, ""); | |||
m_Options->box(FL_NO_BOX); | |||
m_Toolbar->add(m_New); | |||
m_Options = new Fl_Button(0, 0, but, but, ""); | |||
tPix = new Fl_Pixmap(options_xpm); | |||
m_Options->image(tPix->copy(tPix->w(),tPix->h())); | |||
delete tPix; | |||
m_Options->image(tPix->copy()); | |||
delete tPix; | |||
m_Options->type(0); | |||
m_Options->box(FL_PLASTIC_UP_BOX); | |||
m_Options->color(SpiralSynthModularInfo::GUICOL_Button); | |||
m_Options->selection_color(SpiralSynthModularInfo::GUICOL_Tool); | |||
m_Options->tooltip("Options"); | |||
m_Options->labelsize (1); | |||
m_Options->tooltip("Options"); | |||
m_Options->callback((Fl_Callback*)cb_Rload); | |||
m_MainButtons->add(m_Options); | |||
n++; | |||
m_NewComment = new Fl_Button(xoff, n*gap+yoff, but, but, ""); | |||
m_NewComment->box(FL_NO_BOX); | |||
m_Toolbar->add(m_Options); | |||
m_NewComment = new Fl_Button(0, 0, but, but, ""); | |||
tPix = new Fl_Pixmap(comment_xpm); | |||
m_NewComment->image(tPix->copy(tPix->w(),tPix->h())); | |||
delete tPix; | |||
m_NewComment->image(tPix->copy()); | |||
delete tPix; | |||
m_NewComment->type(0); | |||
m_NewComment->box(FL_PLASTIC_UP_BOX); | |||
m_NewComment->color(SpiralSynthModularInfo::GUICOL_Button); | |||
m_NewComment->selection_color(SpiralSynthModularInfo::GUICOL_Tool); | |||
m_NewComment->tooltip("New comment"); | |||
m_NewComment->labelsize (1); | |||
m_NewComment->tooltip("New comment"); | |||
m_NewComment->callback((Fl_Callback*)cb_NewComment); | |||
m_MainButtons->add(m_NewComment); | |||
n++; | |||
///////////////// | |||
int edy = 0; | |||
Fl_Group *Left = new Fl_Group(MAIN_WIDTH-TOOLBOX_WIDTH,0,TOOLBOX_WIDTH,MAIN_HEIGHT); | |||
Left->box(FL_FLAT_BOX); | |||
Left->color(SpiralSynthModularInfo::GUICOL_Tool); | |||
Left->user_data((void*)(this)); | |||
m_TopWindow->add(Left); | |||
m_GroupName = new Fl_Box(MAIN_WIDTH-TOOLBOX_WIDTH,0,TOOLBOX_WIDTH,16,""); | |||
m_GroupName->labelsize(12); | |||
m_GroupName->color(SpiralSynthModularInfo::GUICOL_Canvas); | |||
m_GroupName->align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE); | |||
m_GroupName->box(FL_BORDER_BOX); | |||
Left->add(m_GroupName); | |||
m_PluginGroupLeft = new Fl_Button(MAIN_WIDTH-TOOLBOX_WIDTH, 0, 16, 16, "@<"); | |||
m_PluginGroupLeft->callback((Fl_Callback*)cb_PluginGroupLeft); | |||
Left->add(m_PluginGroupLeft); | |||
m_Toolbar->add(m_NewComment); | |||
m_PluginGroupRight = new Fl_Button(MAIN_WIDTH-16, 0, 16, 16, "@>"); | |||
m_PluginGroupRight->callback((Fl_Callback*)cb_PluginGroupRight); | |||
Left->add(m_PluginGroupRight); | |||
m_ToolBox = new Fl_Scroll(MAIN_WIDTH-TOOLBOX_WIDTH,0+edy+16,TOOLBOX_WIDTH, TOOLBOX_HEIGHT-16, ""); | |||
m_ToolBox->type(Fl_Scroll::VERTICAL_ALWAYS); | |||
m_ToolBox->box(FL_FLAT_BOX); | |||
m_ToolBox->labeltype(FL_ENGRAVED_LABEL); | |||
m_ToolBox->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE); | |||
m_ToolBox->scrollbar.align(FL_ALIGN_RIGHT); | |||
m_ToolBox->color(SpiralSynthModularInfo::GUICOL_Tool); | |||
m_ToolBox->user_data((void*)(this)); | |||
Left->add(m_ToolBox); | |||
m_TopWindow->resizable(m_ToolBox); | |||
m_CanvasScroll = new Fl_Scroll(but, 0, MAIN_WIDTH-TOOLBOX_WIDTH-but, MAIN_HEIGHT, ""); | |||
m_TopWindow->add(m_CanvasScroll); | |||
m_GroupFiller = new Fl_Group (0, 0, 5, ToolbarHeight, ""); | |||
m_Topbar->add (m_GroupFiller); | |||
m_GroupTab = new Fl_Tabs (0, 0, MAIN_WIDTH-m_GroupFiller->w()-but*5, ToolbarHeight, ""); | |||
m_GroupTab->user_data ((void*)(this)); | |||
m_GroupTab->callback((Fl_Callback*)cb_GroupTab); | |||
m_Topbar->add (m_GroupTab); | |||
m_Topbar->resizable(m_GroupTab); | |||
///////////////// | |||
m_CanvasScroll = new Fl_Scroll(0, ToolbarHeight, MAIN_WIDTH, MAIN_HEIGHT-ToolbarHeight, ""); | |||
m_TopWindow->add(m_CanvasScroll); | |||
m_TopWindow->resizable(m_CanvasScroll); | |||
m_Canvas = new Fl_Canvas(-5000, -5000, 10000, 10000, ""); | |||
m_Canvas->type(1); | |||
m_Canvas->box(FL_FLAT_BOX); | |||
@@ -345,55 +344,16 @@ SpiralWindowType *SynthModular::CreateWindow() | |||
m_Canvas->SetConnectionCallback((Fl_Callback*)cb_Connection); | |||
m_Canvas->SetUnconnectCallback((Fl_Callback*)cb_Unconnect); | |||
m_Canvas->SetAddDeviceCallback((Fl_Callback*)cb_NewDeviceFromMenu); | |||
m_CanvasScroll->add(m_Canvas); | |||
m_CanvasScroll->add(m_Canvas); | |||
m_SettingsWindow = new SettingsWindow; | |||
m_SettingsWindow->RegisterApp(this); | |||
return m_TopWindow; | |||
} | |||
////////////////////////////////////////////////////////// | |||
SynthModular::ToolBox::ToolBox(Fl_Scroll *parent, void* user) | |||
{ | |||
int Width = 40; | |||
int Height = 40; | |||
m_Icon=0; | |||
m_ToolPack = new Fl_Pack(MAIN_WIDTH-TOOLBOX_WIDTH+5,20,TOOLBOX_WIDTH-10, TOOLBOX_HEIGHT-60,""); | |||
m_ToolPack->type(FL_VERTICAL); | |||
m_ToolPack->box(FL_NO_BOX); | |||
m_ToolPack->color(SpiralSynthModularInfo::GUICOL_Tool); | |||
m_ToolPack->user_data(user); | |||
parent->add(m_ToolPack); | |||
m_IconPack = new Fl_Pack(0,0,TOOLBOX_WIDTH-SLIDER_WIDTH,Height,""); | |||
m_IconPack->type(FL_HORIZONTAL); | |||
m_IconPack->color(SpiralSynthModularInfo::GUICOL_Tool); | |||
m_IconPack->user_data(m_ToolPack->user_data()); | |||
m_ToolPack->add(m_IconPack); | |||
} | |||
void SynthModular::ToolBox::AddIcon(Fl_Button *Icon) | |||
{ | |||
int Width = 40; | |||
int Height = 40; | |||
if (m_Icon>=ICON_DEPTH) | |||
{ | |||
m_Icon=0; | |||
m_IconPack = new Fl_Pack(0,0,TOOLBOX_WIDTH-SLIDER_WIDTH,Height,""); | |||
m_IconPack->type(FL_HORIZONTAL); | |||
m_IconPack->color(SpiralSynthModularInfo::GUICOL_Tool); | |||
m_IconPack->user_data(m_ToolPack->user_data()); | |||
m_ToolPack->add(m_IconPack); | |||
} | |||
m_IconPack->add(Icon); | |||
m_Icon++; | |||
} | |||
vector<string> SynthModular::BuildPluginList(const string &Path) | |||
{ | |||
// Scan plugin path for plugins. | |||
@@ -406,13 +366,13 @@ vector<string> SynthModular::BuildPluginList(const string &Path) | |||
vector<string> ret; | |||
dp = opendir(path); | |||
if (!dp) | |||
if (!dp) | |||
{ | |||
cerr << "WARNING: Could not open path " << path << endl; | |||
} | |||
else | |||
else | |||
{ | |||
while ((ep = readdir(dp))) | |||
while ((ep = readdir(dp))) | |||
{ | |||
// Need full path | |||
@@ -420,23 +380,23 @@ vector<string> SynthModular::BuildPluginList(const string &Path) | |||
fullpath.append(ep->d_name); | |||
// Stat file to get type | |||
if (!stat(fullpath.c_str(), &sb)) | |||
if (!stat(fullpath.c_str(), &sb)) | |||
{ | |||
// We only want regular files | |||
if (S_ISREG(sb.st_mode)) | |||
if (S_ISREG(sb.st_mode)) | |||
{ | |||
// We're not fussed about resolving symbols yet, since we are just | |||
// checking if it's a DLL. | |||
handle = dlopen(fullpath.c_str(), RTLD_LAZY); | |||
if (!handle) | |||
if (!handle) | |||
{ | |||
cerr << "WARNING: File " << path << ep->d_name | |||
<< " could not be examined" << endl; | |||
cerr << "dlerror() output:" << endl; | |||
cerr << dlerror() << endl; | |||
} | |||
else | |||
} | |||
else | |||
{ | |||
// It's a DLL. Add name to list | |||
ret.push_back(ep->d_name); | |||
@@ -445,7 +405,7 @@ vector<string> SynthModular::BuildPluginList(const string &Path) | |||
} | |||
} | |||
} | |||
return ret; | |||
} | |||
@@ -457,14 +417,14 @@ void SynthModular::LoadPlugins(string pluginPath) | |||
int SWidth = 256; | |||
int SHeight = 256; | |||
Fl_Pixmap pic(SSM_xpm); | |||
Fl_Double_Window* Splash = new Fl_Double_Window((Fl::w()/2)-(SWidth/2), | |||
(Fl::h()/2)-(SHeight/2), | |||
SWidth,SHeight,"SSM"); | |||
Splash->border(0); | |||
Fl_Box* pbut = new Fl_Box(0,8,SWidth,SHeight,""); | |||
pbut->box(FL_NO_BOX); | |||
pic.label(pbut); | |||
@@ -516,37 +476,39 @@ void SynthModular::LoadPlugins(string pluginPath) | |||
#endif | |||
Fl_Button *NewButton = new Fl_Button(0,0,Width,Height,""); | |||
NewButton->labelsize(10); | |||
NewButton->user_data((void*)(this)); | |||
NewButton->labelsize(1); | |||
Fl_Pixmap *tPix = new Fl_Pixmap(PluginManager::Get()->GetPlugin(ID)->GetIcon()); | |||
NewButton->image(tPix->copy(tPix->w(),tPix->h())); | |||
delete tPix; | |||
string GroupName = PluginManager::Get()->GetPlugin(ID)->GetGroupName(); | |||
ToolBox* Tool=NULL; | |||
Fl_Pack* the_group=NULL; | |||
map<string,ToolBox*>::iterator ti=m_PluginGroupMap.find(GroupName); | |||
if (ti==m_PluginGroupMap.end()) | |||
// find or create this group, and add an icon | |||
map<string,Fl_Pack*>::iterator gi=m_PluginGroupMap.find(GroupName); | |||
if (gi==m_PluginGroupMap.end()) | |||
{ | |||
if (Tool) Tool->GetToolPack()->hide(); | |||
Tool = new ToolBox(m_ToolBox,(void*)(this)); | |||
m_PluginGroupMap[GroupName]=Tool; | |||
Tool->GetToolPack()->hide(); | |||
the_group = new Fl_Pack (m_GroupTab->x(), 20, m_GroupTab->w(), m_GroupTab->h()-20, GroupName.c_str()); | |||
the_group->type(FL_HORIZONTAL); | |||
the_group->labelsize(8); | |||
the_group->user_data((void*)(this)); | |||
//m_GroupTab->add(the_group); | |||
m_GroupTab->value(the_group); | |||
m_PluginGroupMap[GroupName]=the_group; | |||
} | |||
else | |||
{ | |||
Tool=ti->second; | |||
the_group=gi->second; | |||
} | |||
Tool->AddIcon(NewButton); | |||
NewButton->type(0); | |||
NewButton->box(FL_PLASTIC_UP_BOX); | |||
NewButton->align(FL_ALIGN_INSIDE|FL_ALIGN_TOP); | |||
NewButton->type(0); | |||
NewButton->box(FL_PLASTIC_UP_BOX); | |||
NewButton->color(SpiralSynthModularInfo::GUICOL_Button); | |||
NewButton->selection_color(SpiralSynthModularInfo::GUICOL_Tool); | |||
the_group->add(NewButton); | |||
string tooltip=*i; | |||
// find the first / if there is one, and get rid of everything before and including it | |||
// find the first / if there is one, and get rid of everything before and including it | |||
unsigned int p = tooltip.find ('/'); | |||
if (p < tooltip.length()) tooltip.erase (0, p); | |||
// find last . and get rid of everything after and including it | |||
@@ -557,31 +519,28 @@ void SynthModular::LoadPlugins(string pluginPath) | |||
splashtext->label (tooltip.c_str()); | |||
Splash->redraw(); | |||
NewButton->tooltip (tooltip.c_str()); | |||
NewButton->callback((Fl_Callback*)cb_NewDevice,&Numbers[ID]); | |||
NewButton->callback((Fl_Callback*)cb_NewDevice,&Numbers[ID]); | |||
NewButton->show(); | |||
m_DeviceVec.push_back(NewButton); | |||
m_ToolBox->redraw(); | |||
m_DeviceVec.push_back(NewButton); | |||
the_group->redraw(); | |||
m_NextPluginButton++; | |||
Fl::check(); | |||
} | |||
} | |||
map<string,Fl_Pack*>::iterator PlugGrp; | |||
for (PlugGrp = m_PluginGroupMap.begin(); PlugGrp!= m_PluginGroupMap.end(); ++PlugGrp) | |||
m_GroupTab->add(PlugGrp->second); | |||
// try to show the SpiralSound group | |||
m_CurrentGroup=m_PluginGroupMap.find("SpiralSound"); | |||
if (m_CurrentGroup==m_PluginGroupMap.end()) | |||
{ | |||
// can't find it - show the first plugin group | |||
m_CurrentGroup=m_PluginGroupMap.begin(); | |||
m_CurrentGroup->second->GetToolPack()->show(); | |||
m_GroupName->label(m_CurrentGroup->first.c_str()); | |||
} | |||
m_CurrentGroup->second->GetToolPack()->show(); | |||
m_GroupName->label(m_CurrentGroup->first.c_str()); | |||
PlugGrp = m_PluginGroupMap.find("SpiralSound"); | |||
// can't find it - show the first plugin group | |||
if (PlugGrp==m_PluginGroupMap.end()) PlugGrp=m_PluginGroupMap.begin(); | |||
m_GroupTab->value(PlugGrp->second); | |||
Splash->hide(); | |||
delete Splash; | |||
} | |||
@@ -592,7 +551,7 @@ DeviceGUIInfo SynthModular::BuildDeviceGUIInfo(PluginInfo &PInfo) | |||
{ | |||
DeviceGUIInfo Info; | |||
int Height=50; | |||
// tweak the size if we have too many ins/outs | |||
if (PInfo.NumInputs>4 || PInfo.NumOutputs>4) | |||
{ | |||
@@ -605,7 +564,7 @@ DeviceGUIInfo SynthModular::BuildDeviceGUIInfo(PluginInfo &PInfo) | |||
Height=PInfo.NumInputs*10+5; | |||
} | |||
} | |||
// Make the guiinfo struct | |||
Info.XPos = 0; | |||
Info.YPos = 0; | |||
@@ -616,7 +575,7 @@ DeviceGUIInfo SynthModular::BuildDeviceGUIInfo(PluginInfo &PInfo) | |||
Info.Name = PInfo.Name; | |||
Info.PortTips = PInfo.PortTips; | |||
Info.PortTypes = PInfo.PortTypes; | |||
return Info; | |||
} | |||
@@ -626,9 +585,9 @@ DeviceWin* SynthModular::NewDeviceWin(int n, int x, int y) | |||
{ | |||
DeviceWin *nlw = new DeviceWin; | |||
const HostsideInfo* Plugin=PluginManager::Get()->GetPlugin(n); | |||
if (!Plugin) return NULL; | |||
nlw->m_Device=Plugin->CreateInstance(); | |||
if (!nlw->m_Device) | |||
@@ -639,26 +598,26 @@ DeviceWin* SynthModular::NewDeviceWin(int n, int x, int y) | |||
nlw->m_Device->SetUpdateCallback(cb_Update); | |||
nlw->m_Device->SetParent((void*)this); | |||
PluginInfo PInfo = nlw->m_Device->Initialise(&m_Info); | |||
PluginInfo PInfo = nlw->m_Device->Initialise(&m_Info); | |||
SpiralGUIType *temp = nlw->m_Device->CreateGUI(); | |||
Fl_Pixmap *Pix = new Fl_Pixmap(Plugin->GetIcon()); | |||
nlw->m_PluginID = n; | |||
if (temp) | |||
{ | |||
if (temp) | |||
{ | |||
temp->position(x+10,y); | |||
} | |||
DeviceGUIInfo Info=BuildDeviceGUIInfo(PInfo); | |||
Info.XPos = x; //TOOLBOX_WIDTH+(rand()%400); | |||
Info.YPos = y; //rand()%400; | |||
nlw->m_DeviceGUI = new Fl_DeviceGUI(Info, temp, Pix, nlw->m_Device->IsTerminal()); | |||
m_Canvas->add(nlw->m_DeviceGUI); | |||
m_Canvas->redraw(); | |||
return nlw; | |||
return nlw; | |||
} | |||
////////////////////////////////////////////////////////// | |||
@@ -666,11 +625,11 @@ DeviceWin* SynthModular::NewDeviceWin(int n, int x, int y) | |||
void SynthModular::AddDevice(int n, int x=-1, int y=-1) | |||
{ | |||
//cerr<<"Adding "<<m_NextID<<endl; | |||
if (x==-1) | |||
{ | |||
x = m_CanvasScroll->x()+50; | |||
y = m_CanvasScroll->y()+50; | |||
{ | |||
x = m_CanvasScroll->x()+50; | |||
y = m_CanvasScroll->y()+50; | |||
} | |||
DeviceWin* temp = NewDeviceWin(n,x,y); | |||
@@ -687,7 +646,7 @@ void SynthModular::AddDevice(int n, int x=-1, int y=-1) | |||
////////////////////////////////////////////////////////// | |||
DeviceWin* SynthModular::NewComment(int n, int x=-1, int y=-1) | |||
{ | |||
{ | |||
DeviceWin *nlw = new DeviceWin; | |||
if (x==-1) | |||
@@ -708,7 +667,7 @@ DeviceWin* SynthModular::NewComment(int n, int x=-1, int y=-1) | |||
Info.NumInputs = 0; | |||
Info.NumOutputs = 0; | |||
Info.Name = ""; | |||
nlw->m_DeviceGUI = new Fl_CommentGUI(Info, NULL, NULL); | |||
m_Canvas->add(nlw->m_DeviceGUI); | |||
@@ -760,7 +719,7 @@ void SynthModular::UpdateHostInfo() | |||
ifs>>*this; | |||
system("rm -f ___temp.ssmtmp"); | |||
} | |||
////////////////////////////////////////////////////////// | |||
@@ -804,7 +763,7 @@ istream &operator>>(istream &s, SynthModular &o) | |||
s>>EditWinX>>EditWinY>>EditWinW>>EditWinH; | |||
//o.m_MainWindow->resize(MainWinX,MainWinY,MainWinW,MainWinH); | |||
//o.m_EditorWindow->resize(EditWinX,EditWinY,EditWinW,EditWinH); | |||
//o.m_EditorWindow->resize(EditWinX,EditWinY,EditWinW,EditWinH); | |||
} | |||
int Num, ID, PluginID, x,y,ps,px,py; | |||
@@ -869,7 +828,7 @@ istream &operator>>(istream &s, SynthModular &o) | |||
if (temp) | |||
{ | |||
temp->m_DeviceGUI->SetID(ID); | |||
if (ver>3) | |||
if (ver>3) | |||
{ | |||
// set the titlebars | |||
temp->m_DeviceGUI->SetName(Name); | |||
@@ -930,7 +889,7 @@ ostream &operator<<(ostream &s, SynthModular &o) | |||
o.PauseAudio(); | |||
s<<"SpiralSynthModular File Ver "<<FILE_VERSION<<endl; | |||
// make external files dir | |||
bool ExternalDirUsed=false; | |||
string command("mkdir "+o.m_FilePath+"_files"); | |||
@@ -960,7 +919,7 @@ ostream &operator<<(ostream &s, SynthModular &o) | |||
s<<i->second->m_DeviceGUI->y()<<" "; | |||
s<<i->second->m_DeviceGUI->GetName().size()<<" "; | |||
s<<i->second->m_DeviceGUI->GetName()<<" "; | |||
if (i->second->m_DeviceGUI->GetPluginWindow()) | |||
{ | |||
s<<i->second->m_DeviceGUI->GetPluginWindow()->visible()<<" "; | |||
@@ -1068,13 +1027,13 @@ inline void SynthModular::cb_Save_i(Fl_Button* o, void* v) | |||
if (!Pawfal_YesNo("File [%s] exists, overwrite?",fn)) | |||
{ | |||
return; | |||
} | |||
} | |||
} | |||
ofstream of(fn); | |||
if (of) | |||
{ | |||
{ | |||
m_FilePath=fn; | |||
of<<*this; | |||
@@ -1098,7 +1057,7 @@ inline void SynthModular::cb_New_i(Fl_Button* o, void* v) | |||
if (m_DeviceWinMap.size()>0 && !Pawfal_YesNo("New - Lose changes to current patch?")) | |||
{ | |||
return; | |||
} | |||
} | |||
m_TopWindow->label(TITLEBAR.c_str()); | |||
@@ -1111,7 +1070,7 @@ void SynthModular::cb_New(Fl_Button* o, void* v) | |||
inline void SynthModular::cb_NewDevice_i(Fl_Button* o, void* v) | |||
{ | |||
AddDevice(*((int*)v)); | |||
AddDevice(*((int*)v)); | |||
} | |||
void SynthModular::cb_NewDevice(Fl_Button* o, void* v) | |||
{((SynthModular*)(o->parent()->user_data()))->cb_NewDevice_i(o,v);} | |||
@@ -1136,36 +1095,26 @@ void SynthModular::cb_NewComment(Fl_Button* o, void* v) | |||
////////////////////////////////////////////////////////// | |||
inline void SynthModular::cb_PluginGroupLeft_i(Fl_Button* o, void* v) | |||
// andy preston | |||
inline void SynthModular::cb_GroupTab_i(Fl_Tabs* o, void* v) | |||
{ | |||
m_CurrentGroup->second->GetToolPack()->hide(); | |||
m_CurrentGroup++; | |||
if (m_CurrentGroup==m_PluginGroupMap.end()) m_CurrentGroup=m_PluginGroupMap.begin(); | |||
m_CurrentGroup->second->GetToolPack()->show(); | |||
m_GroupName->label(m_CurrentGroup->first.c_str()); | |||
m_GroupTab->redraw(); | |||
//m_CurrentGroup->second->GetToolPack()->hide(); | |||
//m_CurrentGroup = o->value(); | |||
// if (m_CurrentGroup==m_PluginGroupMap.end()) m_CurrentGroup=m_PluginGroupMap.begin(); | |||
// m_CurrentGroup->second->GetToolPack()->show(); | |||
// m_GroupName->label(m_CurrentGroup->first.c_str()); | |||
} | |||
void SynthModular::cb_PluginGroupLeft(Fl_Button* o, void* v) | |||
{((SynthModular*)(o->parent()->user_data()))->cb_PluginGroupLeft_i(o,v);} | |||
////////////////////////////////////////////////////////// | |||
inline void SynthModular::cb_PluginGroupRight_i(Fl_Button* o, void* v) | |||
{ | |||
m_CurrentGroup->second->GetToolPack()->hide(); | |||
m_CurrentGroup++; | |||
if (m_CurrentGroup==m_PluginGroupMap.end()) m_CurrentGroup=m_PluginGroupMap.begin(); | |||
m_CurrentGroup->second->GetToolPack()->show(); | |||
m_GroupName->label(m_CurrentGroup->first.c_str()); | |||
} | |||
void SynthModular::cb_PluginGroupRight(Fl_Button* o, void* v) | |||
{((SynthModular*)(o->parent()->user_data()))->cb_PluginGroupRight_i(o,v);} | |||
void SynthModular::cb_GroupTab(Fl_Tabs* o, void* v) | |||
{((SynthModular*)(o->parent()->user_data()))->cb_GroupTab_i(o,v);} | |||
////////////////////////////////////////////////////////// | |||
inline void SynthModular::cb_Rload_i(Fl_Button* o, void* v) | |||
{ | |||
m_SettingsWindow->show(); | |||
/*PluginManager::Get()->UnloadAll(); | |||
m_ToolBox->remove(m_ToolPack); | |||
@@ -1176,9 +1125,9 @@ inline void SynthModular::cb_Rload_i(Fl_Button* o, void* v) | |||
m_ToolPack->box(FL_NO_BOX); | |||
m_ToolPack->color(SpiralSynthModularInfo::GUICOL_Tool); | |||
m_ToolPack->user_data((void*)(this)); | |||
m_ToolBox->add(m_ToolPack); | |||
m_ToolBox->add(m_ToolPack); | |||
m_ToolBox->redraw(); | |||
LoadPlugins();*/ | |||
} | |||
void SynthModular::cb_Rload(Fl_Button* o, void* v) | |||
@@ -1190,11 +1139,11 @@ inline void SynthModular::cb_Connection_i(Fl_Canvas* o, void* v) | |||
{ | |||
CanvasWire *Wire; | |||
Wire=(CanvasWire*)v; | |||
map<int,DeviceWin*>::iterator si=m_DeviceWinMap.find(Wire->OutputID); | |||
if (si==m_DeviceWinMap.end()) | |||
{ | |||
char num[32]; | |||
char num[32]; | |||
sprintf(num,"%d",Wire->OutputID); | |||
SpiralInfo::Alert("Warning: Connection problem - can't find source "+string(num)); | |||
return; | |||
@@ -1225,7 +1174,7 @@ inline void SynthModular::cb_Connection_i(Fl_Canvas* o, void* v) | |||
sprintf(num,"%d,%d",Wire->InputID,Wire->InputPort); | |||
SpiralInfo::Alert("Warning: Connection problem - can't find source input "+string(num)); | |||
return; | |||
} | |||
} | |||
} | |||
void SynthModular::cb_Connection(Fl_Canvas* o, void* v) | |||
{((SynthModular*)(o->user_data()))->cb_Connection_i(o,v);} | |||
@@ -1261,7 +1210,7 @@ void SynthModular::cb_UpdatePluginInfo(int ID, void *PInfo) | |||
if (i!=m_DeviceWinMap.end()) | |||
{ | |||
DeviceGUIInfo Info=BuildDeviceGUIInfo(*((PluginInfo*)PInfo)); | |||
(*i).second->m_DeviceGUI->Setup(Info); | |||
(*i).second->m_DeviceGUI->redraw(); | |||
} | |||
@@ -14,7 +14,7 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#ifndef SPIRALSYNTHMODULAR | |||
#define SPIRALSYNTHMODULAR | |||
@@ -29,6 +29,7 @@ | |||
#include <FL/Fl_Scroll.H> | |||
#include <FL/Fl_Pack.H> | |||
#include <FL/Fl_Tile.H> | |||
#include <FL/Fl_Tabs.H> | |||
#include <sstream> | |||
#include <iostream> | |||
#include <map> | |||
@@ -52,7 +53,7 @@ class DeviceWin | |||
public: | |||
DeviceWin() : m_DeviceGUI(NULL) {} | |||
~DeviceWin(); | |||
int m_PluginID; | |||
SpiralPlugin* m_Device; | |||
Fl_DeviceGUI* m_DeviceGUI; | |||
@@ -63,20 +64,20 @@ class SynthModular | |||
public: | |||
SynthModular(); | |||
~SynthModular(); | |||
SpiralWindowType * CreateWindow(); | |||
void LoadPlugins(string pluginPath); | |||
void Update(); | |||
void AddDevice(int n, int x, int y); | |||
void AddComment(int n); | |||
void ClearUp(); | |||
void UpdateHostInfo(); | |||
void ClearUp(); | |||
void UpdateHostInfo(); | |||
bool CallbackMode() { return m_CallbackUpdateMode; } | |||
bool IsBlockingOutputPluginReady() { return m_BlockingOutputPluginIsReady; } | |||
void UpdatePluginGUIs(); | |||
void LoadPatch(const char *fn); | |||
void PauseAudio() | |||
void LoadPatch(const char *fn); | |||
void PauseAudio() | |||
{ | |||
m_CH.Set("PauseAudio",true); | |||
m_CH.Wait(); | |||
@@ -86,10 +87,10 @@ public: | |||
{ | |||
m_CH.Set("PauseAudio",false); | |||
} | |||
// only for audio thread | |||
bool IsPaused() { return m_PauseAudio; } | |||
private: | |||
vector<string> BuildPluginList(const string &Path); | |||
@@ -101,66 +102,46 @@ private: | |||
static DeviceGUIInfo BuildDeviceGUIInfo(PluginInfo &PInfo); | |||
// currently static, to allow the callback | |||
// cb_UpdatePluginInfo to access the map. | |||
// currently static, to allow the callback | |||
// cb_UpdatePluginInfo to access the map. | |||
static map<int,DeviceWin*> m_DeviceWinMap; | |||
int m_NextID; | |||
int m_NextPluginButton; | |||
int m_NextPluginButtonXPos; | |||
int m_NextPluginButtonYPos; | |||
static bool m_CallbackUpdateMode; | |||
static bool m_BlockingOutputPluginIsReady; | |||
string m_FilePath; | |||
// Main GUI stuff | |||
void CreateGUI(int xoff=0, int yoff=0, char *name=""); | |||
Fl_Group *m_MainButtons; | |||
Fl_Pack *m_Topbar, *m_ToolbarPanel, *m_Toolbar; | |||
Fl_Group *m_ToolbarFiller, *m_GroupFiller; | |||
Fl_Button *m_Load; | |||
Fl_Button *m_Save; | |||
Fl_Button *m_New; | |||
Fl_Button *m_OpenEditor; | |||
Fl_Button *m_OpenEditor; | |||
Fl_Button *m_Options; | |||
Fl_Canvas *m_Canvas; | |||
Fl_Scroll *m_CanvasScroll; | |||
Fl_Scroll *m_ToolBox; | |||
Fl_Button *m_NewComment; | |||
Fl_Box *m_GroupName; | |||
Fl_Button *m_PluginGroupLeft; | |||
Fl_Button *m_PluginGroupRight; | |||
Fl_Tabs *m_GroupTab; | |||
Fl_Canvas *m_Canvas; | |||
Fl_Scroll *m_CanvasScroll; | |||
map<string,Fl_Pack*> m_PluginGroupMap; | |||
class ToolBox | |||
{ | |||
public: | |||
ToolBox(Fl_Scroll *parent, void* user); | |||
~ToolBox() {} | |||
void AddIcon(Fl_Button *Icon); | |||
Fl_Pack *GetToolPack() { return m_ToolPack; } | |||
private: | |||
Fl_Pack *m_ToolPack; | |||
Fl_Pack *m_IconPack; | |||
int m_Icon; | |||
}; | |||
map<string,ToolBox*> m_PluginGroupMap; | |||
map<string,ToolBox*>::iterator m_CurrentGroup; | |||
SettingsWindow *m_SettingsWindow; | |||
SpiralWindowType* m_TopWindow; | |||
vector<Fl_Button*> m_DeviceVec; | |||
ChannelHandler m_CH; // used for threadsafe communication | |||
bool m_PauseAudio; | |||
inline void cb_NewDevice_i(Fl_Button* o, void* v); | |||
static void cb_NewDevice(Fl_Button* o, void* v); | |||
inline void cb_NewDeviceFromMenu_i(Fl_Canvas* o, void* v); | |||
@@ -179,21 +160,20 @@ private: | |||
static void cb_Unconnect(Fl_Canvas* o, void* v); | |||
inline void cb_Close_i(Fl_Window* o, void* v); | |||
static void cb_Close(Fl_Window* o, void* v); | |||
inline void cb_PluginGroupLeft_i(Fl_Button* o, void* v); | |||
static void cb_PluginGroupLeft(Fl_Button* o, void* v); | |||
inline void cb_PluginGroupRight_i(Fl_Button* o, void* v); | |||
static void cb_PluginGroupRight(Fl_Button* o, void* v); | |||
inline void cb_GroupTab_i(Fl_Tabs* o, void* v); | |||
static void cb_GroupTab(Fl_Tabs* o, void* v); | |||
inline void cb_Rload_i(Fl_Button* o, void* v); | |||
static void cb_Rload(Fl_Button* o, void* v); | |||
static void cb_Update(void* o, bool Mode); | |||
static void cb_Blocking(void* o, bool Mode); | |||
static void cb_Update(void* o, bool Mode); | |||
static void cb_Blocking(void* o, bool Mode); | |||
static void cb_UpdatePluginInfo(int ID, void *PluginInfo); | |||
friend istream &operator>>(istream &s, SynthModular &o); | |||
friend ostream &operator<<(ostream &s, SynthModular &o); | |||
friend ostream &operator<<(ostream &s, SynthModular &o); | |||
}; | |||
istream &operator>>(istream &s, SynthModular &o); | |||