| @@ -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); | |||