| @@ -1,134 +1,140 @@ | |||||
| /* XPM */ | /* XPM */ | ||||
| static char * comment_xpm[] = { | static char * comment_xpm[] = { | ||||
| "32 25 106 2", | |||||
| "30 30 107 2", | |||||
| " c None", | " 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 */ | /* XPM */ | ||||
| static char * new_xpm[] = { | static char * new_xpm[] = { | ||||
| "48 61 178 2", | |||||
| "30 30 127 2", | |||||
| " c None", | " 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() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Amps/Mixers"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -43,7 +43,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Filters/FX"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -40,7 +40,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Control"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -100,7 +100,7 @@ void CounterPlugin::Execute() | |||||
| m_Current++; | m_Current++; | ||||
| } | } | ||||
| } | } | ||||
| if (m_Current>=m_Count) | if (m_Current>=m_Count) | ||||
| { | { | ||||
| m_CurrentLevel=-m_CurrentLevel; | m_CurrentLevel=-m_CurrentLevel; | ||||
| @@ -40,7 +40,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Delay/Sampling"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -62,7 +62,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "InputOutput"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -38,7 +38,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Control"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -40,7 +40,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Delay/Sampling"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -14,7 +14,7 @@ | |||||
| * You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | ||||
| * along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | ||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | |||||
| */ | |||||
| #include "EnvFollowerPlugin.h" | #include "EnvFollowerPlugin.h" | ||||
| #include "EnvFollowerPluginGUI.h" | #include "EnvFollowerPluginGUI.h" | ||||
| #include <FL/Fl_Button.h> | #include <FL/Fl_Button.h> | ||||
| @@ -38,7 +38,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Control"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -38,7 +38,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Control"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -44,16 +44,16 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Filters/FX"; | |||||
| } | } | ||||
| } | } | ||||
| /////////////////////////////////////////////////////// | /////////////////////////////////////////////////////// | ||||
| FilterPlugin::FilterPlugin() : | 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_LastFC(0), | ||||
| m_LastQ(1), | m_LastQ(1), | ||||
| k(1.0), // Set overall filter gain | k(1.0), // Set overall filter gain | ||||
| @@ -14,7 +14,7 @@ | |||||
| * You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | ||||
| * along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | ||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | |||||
| */ | |||||
| #include <math.h> | #include <math.h> | ||||
| #include "FormantFilterPlugin.h" | #include "FormantFilterPlugin.h" | ||||
| #include "FormantFilterPluginGUI.h" | #include "FormantFilterPluginGUI.h" | ||||
| @@ -77,7 +77,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Filters/FX"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -91,7 +91,7 @@ m_Vowel(0) | |||||
| m_PluginInfo.Height=110; | m_PluginInfo.Height=110; | ||||
| m_PluginInfo.NumInputs=2; | m_PluginInfo.NumInputs=2; | ||||
| m_PluginInfo.NumOutputs=1; | 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("Vowel CV"); | ||||
| m_PluginInfo.PortTips.push_back("Output"); | m_PluginInfo.PortTips.push_back("Output"); | ||||
| @@ -338,7 +338,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "InputOutput"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -39,7 +39,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "InputOutput"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -50,7 +50,7 @@ m_NoteLevel(0), | |||||
| m_TriggerLevel(0) | m_TriggerLevel(0) | ||||
| { | { | ||||
| m_Version=0; | m_Version=0; | ||||
| m_PluginInfo.Name="Keyboard"; | m_PluginInfo.Name="Keyboard"; | ||||
| m_PluginInfo.Width=300; | m_PluginInfo.Width=300; | ||||
| m_PluginInfo.Height=90; | m_PluginInfo.Height=90; | ||||
| @@ -45,7 +45,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Filters/FX"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -30,7 +30,7 @@ int GetID() { return 124; } | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Oscillators"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -14,7 +14,7 @@ | |||||
| * You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | ||||
| * along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | ||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | |||||
| */ | |||||
| #include <math.h> | #include <math.h> | ||||
| #include "MasherPlugin.h" | #include "MasherPlugin.h" | ||||
| #include "MasherPluginGUI.h" | #include "MasherPluginGUI.h" | ||||
| @@ -46,7 +46,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Filters/FX"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -40,7 +40,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Sequencing"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -29,7 +29,7 @@ int GetID() { return 123; } | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Control"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -43,7 +43,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "InputOutput"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -40,7 +40,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Amps/Mixers"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -14,7 +14,7 @@ | |||||
| * You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | ||||
| * along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | ||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | |||||
| */ | |||||
| #include <math.h> | #include <math.h> | ||||
| #include "MoogFilterPlugin.h" | #include "MoogFilterPlugin.h" | ||||
| #include "MoogFilterPluginGUI.h" | #include "MoogFilterPluginGUI.h" | ||||
| @@ -43,7 +43,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Filters/FX"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -14,7 +14,7 @@ | |||||
| * You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | ||||
| * along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | ||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | |||||
| */ | |||||
| #include "NoisePlugin.h" | #include "NoisePlugin.h" | ||||
| #include "NoisePluginGUI.h" | #include "NoisePluginGUI.h" | ||||
| #include <FL/Fl_Button.h> | #include <FL/Fl_Button.h> | ||||
| @@ -39,7 +39,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Oscillators"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -14,7 +14,7 @@ | |||||
| * You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | ||||
| * along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | ||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | |||||
| */ | |||||
| #include "NoteSnapPlugin.h" | #include "NoteSnapPlugin.h" | ||||
| #include "NoteSnapPluginGUI.h" | #include "NoteSnapPluginGUI.h" | ||||
| #include <FL/Fl_Button.h> | #include <FL/Fl_Button.h> | ||||
| @@ -39,7 +39,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Control"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -45,7 +45,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Oscillators"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -83,7 +83,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "InputOutput"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -48,7 +48,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Delay/Sampling"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -61,7 +61,7 @@ m_Recording(false) | |||||
| m_PluginInfo.Width=400; | m_PluginInfo.Width=400; | ||||
| m_PluginInfo.Height=215; | m_PluginInfo.Height=215; | ||||
| m_PluginInfo.NumInputs=21; | 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 Pitch"); | ||||
| m_PluginInfo.PortTips.push_back("Sample 1 Trigger"); | m_PluginInfo.PortTips.push_back("Sample 1 Trigger"); | ||||
| m_PluginInfo.PortTips.push_back("Sample 2 Pitch"); | m_PluginInfo.PortTips.push_back("Sample 2 Pitch"); | ||||
| @@ -14,7 +14,7 @@ | |||||
| * You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | ||||
| * along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | ||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | |||||
| */ | |||||
| #include <math.h> | #include <math.h> | ||||
| #include "RingModPlugin.h" | #include "RingModPlugin.h" | ||||
| #include "RingModPluginGUI.h" | #include "RingModPluginGUI.h" | ||||
| @@ -39,7 +39,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Filters/FX"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -41,7 +41,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Filters/FX"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -14,7 +14,7 @@ | |||||
| * You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | ||||
| * along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | ||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | |||||
| */ | |||||
| #include "SampleHoldPlugin.h" | #include "SampleHoldPlugin.h" | ||||
| #include "SampleHoldPluginGUI.h" | #include "SampleHoldPluginGUI.h" | ||||
| #include <FL/Fl_Button.h> | #include <FL/Fl_Button.h> | ||||
| @@ -38,7 +38,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Control"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -42,7 +42,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Delay/Sampling"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -54,7 +54,7 @@ SamplerPlugin::SamplerPlugin() | |||||
| m_PluginInfo.Width=245; | m_PluginInfo.Width=245; | ||||
| m_PluginInfo.Height=420; | m_PluginInfo.Height=420; | ||||
| m_PluginInfo.NumInputs=18; | 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 Pitch"); | ||||
| m_PluginInfo.PortTips.push_back("Sample 1 Trigger"); | m_PluginInfo.PortTips.push_back("Sample 1 Trigger"); | ||||
| m_PluginInfo.PortTips.push_back("Sample 2 Pitch"); | m_PluginInfo.PortTips.push_back("Sample 2 Pitch"); | ||||
| @@ -39,7 +39,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Control"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -14,7 +14,7 @@ | |||||
| * You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | ||||
| * along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | ||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | |||||
| */ | |||||
| #include "SeqPlugin.h" | #include "SeqPlugin.h" | ||||
| #include "SeqPluginGUI.h" | #include "SeqPluginGUI.h" | ||||
| #include <FL/Fl_Button.h> | #include <FL/Fl_Button.h> | ||||
| @@ -43,7 +43,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Sequencing"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -14,7 +14,7 @@ | |||||
| * You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | ||||
| * along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | ||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | |||||
| */ | |||||
| #include "SeqSelectorPlugin.h" | #include "SeqSelectorPlugin.h" | ||||
| #include "SeqSelectorPluginGUI.h" | #include "SeqSelectorPluginGUI.h" | ||||
| #include <FL/Fl_Button.h> | #include <FL/Fl_Button.h> | ||||
| @@ -39,7 +39,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Sequencing"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -14,7 +14,7 @@ | |||||
| * You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | ||||
| * along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | ||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | |||||
| */ | |||||
| #include "SequencerPlugin.h" | #include "SequencerPlugin.h" | ||||
| #include "SequencerPluginGUI.h" | #include "SequencerPluginGUI.h" | ||||
| #include <FL/Fl_Button.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() | Note::~Note() | ||||
| { | { | ||||
| } | } | ||||
| istream &operator>>(istream &s, Note &o) | istream &operator>>(istream &s, Note &o) | ||||
| { | { | ||||
| int version=1; | int version=1; | ||||
| string dummy; | string dummy; | ||||
| s>>version>>dummy>>o.Time>>o.Length>>o.MidiNote>>o.Vol; | s>>version>>dummy>>o.Time>>o.Length>>o.MidiNote>>o.Vol; | ||||
| return s; | return s; | ||||
| } | } | ||||
| ostream &operator<<(ostream &s, Note &o) | ostream &operator<<(ostream &s, Note &o) | ||||
| { | |||||
| { | |||||
| int version=1; | int version=1; | ||||
| s<<version<<" note "<<o.Time<<" "<<o.Length<<" "<<o.MidiNote<<" "<<o.Vol<<" "; | s<<version<<" note "<<o.Time<<" "<<o.Length<<" "<<o.MidiNote<<" "<<o.Vol<<" "; | ||||
| return s; | return s; | ||||
| } | |||||
| } | |||||
| ///////////////////////////////////////////////////////////////////////// | ///////////////////////////////////////////////////////////////////////// | ||||
| @@ -70,8 +70,8 @@ Pattern::~Pattern() | |||||
| void Pattern::Copy(const Pattern *o) | void Pattern::Copy(const Pattern *o) | ||||
| { | { | ||||
| // can't do this as we don't want to preserve the id numbers | // 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; | int c=0; | ||||
| for (map<int,Note>::const_iterator i = o->m_NoteMap.begin(); | for (map<int,Note>::const_iterator i = o->m_NoteMap.begin(); | ||||
| i!=o->m_NoteMap.end(); i++) | i!=o->m_NoteMap.end(); i++) | ||||
| @@ -89,7 +89,7 @@ void Pattern::AddNote(int ID, float t, float l, int n, float v) | |||||
| return; | return; | ||||
| } | } | ||||
| Note newnote(t,l,n,v); | Note newnote(t,l,n,v); | ||||
| m_NoteMap[ID]=newnote; | m_NoteMap[ID]=newnote; | ||||
| } | } | ||||
| @@ -101,7 +101,7 @@ void Pattern::RemoveNote(int ID) | |||||
| cerr<<"couldn't find note "<<ID<<" not removed"<<endl; | cerr<<"couldn't find note "<<ID<<" not removed"<<endl; | ||||
| return; | return; | ||||
| } | } | ||||
| m_NoteMap.erase(i); | m_NoteMap.erase(i); | ||||
| } | } | ||||
| @@ -113,7 +113,7 @@ Note *Pattern::GetNote(int ID) | |||||
| cerr<<"couldn't find note "<<ID<<endl; | cerr<<"couldn't find note "<<ID<<endl; | ||||
| return NULL; | return NULL; | ||||
| } | } | ||||
| return &i->second; | return &i->second; | ||||
| } | } | ||||
| @@ -129,24 +129,24 @@ istream &operator>>(istream &s, Pattern &o) | |||||
| s>>t; | s>>t; | ||||
| o.m_NoteMap[id++]=t; | o.m_NoteMap[id++]=t; | ||||
| } | } | ||||
| return s; | return s; | ||||
| } | } | ||||
| ostream &operator<<(ostream &s, Pattern &o) | ostream &operator<<(ostream &s, Pattern &o) | ||||
| { | |||||
| { | |||||
| int version=1; | int version=1; | ||||
| s<<version<<" pattern "<<o.m_NoteMap.size()<<" "; | s<<version<<" pattern "<<o.m_NoteMap.size()<<" "; | ||||
| for (map<int,Note>::iterator i = o.m_NoteMap.begin(); | for (map<int,Note>::iterator i = o.m_NoteMap.begin(); | ||||
| i!=o.m_NoteMap.end(); i++) | i!=o.m_NoteMap.end(); i++) | ||||
| { | { | ||||
| s<<i->second; | s<<i->second; | ||||
| } | } | ||||
| s<<endl; | s<<endl; | ||||
| return s; | return s; | ||||
| } | |||||
| } | |||||
| ////////////////////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////////////////////// | ||||
| @@ -229,7 +229,7 @@ void Track::CloneSequence(int ID, int nID) | |||||
| s->SetYPos(GetSequence(ID)->GetYPos()); | s->SetYPos(GetSequence(ID)->GetYPos()); | ||||
| s->SetPatternID(GetSequence(ID)->GetPatternID()); | s->SetPatternID(GetSequence(ID)->GetPatternID()); | ||||
| s->SetStartTime(GetSequence(ID)->GetStartTime()); | 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 | // duplicate the sequence, and copy the pattern to it's own version | ||||
| @@ -435,7 +435,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Sequencing"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -14,7 +14,7 @@ | |||||
| * You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | ||||
| * along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | ||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | |||||
| */ | |||||
| #include "SmoothPlugin.h" | #include "SmoothPlugin.h" | ||||
| #include "SmoothPluginGUI.h" | #include "SmoothPluginGUI.h" | ||||
| #include <FL/Fl_Button.h> | #include <FL/Fl_Button.h> | ||||
| @@ -38,7 +38,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Control"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -44,7 +44,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Delay/Sampling"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -38,7 +38,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Control"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -38,7 +38,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Amps/Mixers"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -43,7 +43,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Delay/Sampling"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -35,7 +35,7 @@ int GetID() { | |||||
| } | } | ||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Filters/FX"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -14,7 +14,7 @@ | |||||
| * You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | ||||
| * along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | ||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | |||||
| */ | |||||
| #include "WaveTablePlugin.h" | #include "WaveTablePlugin.h" | ||||
| #include "WaveTablePluginGUI.h" | #include "WaveTablePluginGUI.h" | ||||
| #include <FL/Fl_Button.h> | #include <FL/Fl_Button.h> | ||||
| @@ -45,7 +45,7 @@ int GetID() | |||||
| string GetGroupName() | string GetGroupName() | ||||
| { | { | ||||
| return "SpiralSound"; | |||||
| return "Oscillators"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -41,7 +41,7 @@ int GetID() | |||||
| string GetGroupName() | 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_WIDTH = 700; | ||||
| static const int MAIN_HEIGHT = 600; | static const int MAIN_HEIGHT = 600; | ||||
| static const int SLIDER_WIDTH = 15; | 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 ICON_DEPTH = 3; | ||||
| static const int COMMENT_ID = -1; | static const int COMMENT_ID = -1; | ||||
| @@ -70,8 +68,8 @@ bool SynthModular::m_BlockingOutputPluginIsReady = false; | |||||
| ////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////// | ||||
| DeviceWin::~DeviceWin() | DeviceWin::~DeviceWin() | ||||
| { | |||||
| } | |||||
| { | |||||
| } | |||||
| ////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////// | ||||
| @@ -81,25 +79,25 @@ m_NextPluginButton(1), | |||||
| m_NextPluginButtonXPos(5), | m_NextPluginButtonXPos(5), | ||||
| m_NextPluginButtonYPos(20), | m_NextPluginButtonYPos(20), | ||||
| m_PauseAudio(false) | m_PauseAudio(false) | ||||
| { | |||||
| { | |||||
| m_Info.BUFSIZE = SpiralInfo::BUFSIZE; | m_Info.BUFSIZE = SpiralInfo::BUFSIZE; | ||||
| m_Info.FRAGSIZE = SpiralInfo::FRAGSIZE; | m_Info.FRAGSIZE = SpiralInfo::FRAGSIZE; | ||||
| m_Info.FRAGCOUNT = SpiralInfo::FRAGCOUNT; | |||||
| m_Info.FRAGCOUNT = SpiralInfo::FRAGCOUNT; | |||||
| m_Info.SAMPLERATE = SpiralInfo::SAMPLERATE; | m_Info.SAMPLERATE = SpiralInfo::SAMPLERATE; | ||||
| m_Info.OUTPUTFILE = SpiralInfo::OUTPUTFILE; | m_Info.OUTPUTFILE = SpiralInfo::OUTPUTFILE; | ||||
| m_Info.MIDIFILE = SpiralInfo::MIDIFILE; | |||||
| m_Info.MIDIFILE = SpiralInfo::MIDIFILE; | |||||
| m_Info.POLY = SpiralInfo::POLY; | m_Info.POLY = SpiralInfo::POLY; | ||||
| //m_Info.GUI_COLOUR = SpiralInfo::GUI_COLOUR; | //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); | m_CH.Register("PauseAudio",&m_PauseAudio); | ||||
| } | } | ||||
| ////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////// | ||||
| SynthModular::~SynthModular() | SynthModular::~SynthModular() | ||||
| { | |||||
| { | |||||
| ClearUp(); | ClearUp(); | ||||
| PluginManager::Get()->PackUpAndGoHome(); | PluginManager::Get()->PackUpAndGoHome(); | ||||
| } | } | ||||
| @@ -109,36 +107,36 @@ SynthModular::~SynthModular() | |||||
| void SynthModular::ClearUp() | void SynthModular::ClearUp() | ||||
| { | { | ||||
| PauseAudio(); | PauseAudio(); | ||||
| for(map<int,DeviceWin*>::iterator i=m_DeviceWinMap.begin(); | for(map<int,DeviceWin*>::iterator i=m_DeviceWinMap.begin(); | ||||
| i!=m_DeviceWinMap.end(); i++) | i!=m_DeviceWinMap.end(); i++) | ||||
| { | { | ||||
| if (i->second->m_DeviceGUI->GetPluginWindow()) | if (i->second->m_DeviceGUI->GetPluginWindow()) | ||||
| { | { | ||||
| i->second->m_DeviceGUI->GetPluginWindow()->hide(); | 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 | // deleted by Canvas::Remove()? seems to cause random crashes | ||||
| //delete i->second->m_DeviceGUI; | //delete i->second->m_DeviceGUI; | ||||
| delete i->second->m_Device; | delete i->second->m_Device; | ||||
| i->second->m_Device=NULL; | i->second->m_Device=NULL; | ||||
| } | } | ||||
| m_Canvas->Clear(); | m_Canvas->Clear(); | ||||
| m_DeviceWinMap.clear(); | m_DeviceWinMap.clear(); | ||||
| m_NextID=0; | m_NextID=0; | ||||
| ResumeAudio(); | ResumeAudio(); | ||||
| } | } | ||||
| ////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////// | ||||
| void SynthModular::Update() | void SynthModular::Update() | ||||
| { | |||||
| { | |||||
| m_CH.UpdateDataNow(); | m_CH.UpdateDataNow(); | ||||
| if (m_PauseAudio) return; | if (m_PauseAudio) return; | ||||
| // for all the plugins | // for all the plugins | ||||
| for(map<int,DeviceWin*>::iterator i=m_DeviceWinMap.begin(); | for(map<int,DeviceWin*>::iterator i=m_DeviceWinMap.begin(); | ||||
| i!=m_DeviceWinMap.end(); i++) | i!=m_DeviceWinMap.end(); i++) | ||||
| @@ -148,35 +146,35 @@ void SynthModular::Update() | |||||
| #ifdef DEBUG_PLUGINS | #ifdef DEBUG_PLUGINS | ||||
| cerr<<"Updating channelhandler of plugin "<<i->second->m_PluginID<<endl; | cerr<<"Updating channelhandler of plugin "<<i->second->m_PluginID<<endl; | ||||
| #endif | #endif | ||||
| // updates the data from the gui thread, if it's not blocking | // updates the data from the gui thread, if it's not blocking | ||||
| i->second->m_Device->UpdateChannelHandler(); | i->second->m_Device->UpdateChannelHandler(); | ||||
| #ifdef DEBUG_PLUGINS | |||||
| #ifdef DEBUG_PLUGINS | |||||
| cerr<<"Finished updating"<<endl; | cerr<<"Finished updating"<<endl; | ||||
| #endif | #endif | ||||
| // run any commands we've received from the GUI's | // run any commands we've received from the GUI's | ||||
| i->second->m_Device->ExecuteCommands(); | i->second->m_Device->ExecuteCommands(); | ||||
| } | } | ||||
| } | } | ||||
| // run the plugins (only ones connected to anything) | // run the plugins (only ones connected to anything) | ||||
| list<int> ExecutionOrder = m_Canvas->GetGraph()->GetSortedList(); | 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++) | i!=ExecutionOrder.rend(); i++) | ||||
| { | { | ||||
| // use the graphsort order to remove internal latency | // use the graphsort order to remove internal latency | ||||
| map<int,DeviceWin*>::iterator di=m_DeviceWinMap.find(*i); | 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 | #ifdef DEBUG_PLUGINS | ||||
| cerr<<"Executing plugin "<<di->second->m_PluginID<<endl; | cerr<<"Executing plugin "<<di->second->m_PluginID<<endl; | ||||
| #endif | #endif | ||||
| di->second->m_Device->Execute(); | di->second->m_Device->Execute(); | ||||
| #ifdef DEBUG_PLUGINS | |||||
| #ifdef DEBUG_PLUGINS | |||||
| cerr<<"Finished executing"<<endl; | cerr<<"Finished executing"<<endl; | ||||
| #endif | #endif | ||||
| } | } | ||||
| @@ -187,42 +185,42 @@ void SynthModular::Update() | |||||
| void SynthModular::UpdatePluginGUIs() | 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++) | i!=m_DeviceWinMap.end(); i++) | ||||
| { | |||||
| { | |||||
| if (i->second->m_DeviceGUI->GetPluginWindow()) | if (i->second->m_DeviceGUI->GetPluginWindow()) | ||||
| { | { | ||||
| SpiralPluginGUI *GUI=(SpiralPluginGUI *)i->second->m_DeviceGUI->GetPluginWindow(); | SpiralPluginGUI *GUI=(SpiralPluginGUI *)i->second->m_DeviceGUI->GetPluginWindow(); | ||||
| GUI->Update(); | GUI->Update(); | ||||
| } | } | ||||
| if (i->second->m_DeviceGUI->Killed()) | if (i->second->m_DeviceGUI->Killed()) | ||||
| { | { | ||||
| PauseAudio(); | PauseAudio(); | ||||
| if (i->second->m_Device) | |||||
| if (i->second->m_Device) | |||||
| { | { | ||||
| delete i->second->m_Device; | delete i->second->m_Device; | ||||
| i->second->m_Device=NULL; | i->second->m_Device=NULL; | ||||
| } | } | ||||
| if (i->second->m_DeviceGUI->GetPluginWindow()) | if (i->second->m_DeviceGUI->GetPluginWindow()) | ||||
| { | { | ||||
| i->second->m_DeviceGUI->GetPluginWindow()->hide(); | i->second->m_DeviceGUI->GetPluginWindow()->hide(); | ||||
| //m_MainWindow->remove(i->second->m_DeviceGUI->GetPluginWindow()); | //m_MainWindow->remove(i->second->m_DeviceGUI->GetPluginWindow()); | ||||
| } | } | ||||
| i->second->m_DeviceGUI->Clear(); | 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); | m_DeviceWinMap.erase(i); | ||||
| ResumeAudio(); | ResumeAudio(); | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| m_Canvas->Poll(); | m_Canvas->Poll(); | ||||
| } | } | ||||
| @@ -230,111 +228,112 @@ void SynthModular::UpdatePluginGUIs() | |||||
| SpiralWindowType *SynthModular::CreateWindow() | 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 = 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); | 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->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_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); | 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->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_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); | 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->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_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); | 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->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_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); | 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->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_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_TopWindow->resizable(m_CanvasScroll); | ||||
| m_Canvas = new Fl_Canvas(-5000, -5000, 10000, 10000, ""); | m_Canvas = new Fl_Canvas(-5000, -5000, 10000, 10000, ""); | ||||
| m_Canvas->type(1); | m_Canvas->type(1); | ||||
| m_Canvas->box(FL_FLAT_BOX); | m_Canvas->box(FL_FLAT_BOX); | ||||
| @@ -345,55 +344,16 @@ SpiralWindowType *SynthModular::CreateWindow() | |||||
| m_Canvas->SetConnectionCallback((Fl_Callback*)cb_Connection); | m_Canvas->SetConnectionCallback((Fl_Callback*)cb_Connection); | ||||
| m_Canvas->SetUnconnectCallback((Fl_Callback*)cb_Unconnect); | m_Canvas->SetUnconnectCallback((Fl_Callback*)cb_Unconnect); | ||||
| m_Canvas->SetAddDeviceCallback((Fl_Callback*)cb_NewDeviceFromMenu); | m_Canvas->SetAddDeviceCallback((Fl_Callback*)cb_NewDeviceFromMenu); | ||||
| m_CanvasScroll->add(m_Canvas); | |||||
| m_CanvasScroll->add(m_Canvas); | |||||
| m_SettingsWindow = new SettingsWindow; | m_SettingsWindow = new SettingsWindow; | ||||
| m_SettingsWindow->RegisterApp(this); | m_SettingsWindow->RegisterApp(this); | ||||
| return m_TopWindow; | 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) | vector<string> SynthModular::BuildPluginList(const string &Path) | ||||
| { | { | ||||
| // Scan plugin path for plugins. | // Scan plugin path for plugins. | ||||
| @@ -406,13 +366,13 @@ vector<string> SynthModular::BuildPluginList(const string &Path) | |||||
| vector<string> ret; | vector<string> ret; | ||||
| dp = opendir(path); | dp = opendir(path); | ||||
| if (!dp) | |||||
| if (!dp) | |||||
| { | { | ||||
| cerr << "WARNING: Could not open path " << path << endl; | cerr << "WARNING: Could not open path " << path << endl; | ||||
| } | } | ||||
| else | |||||
| else | |||||
| { | { | ||||
| while ((ep = readdir(dp))) | |||||
| while ((ep = readdir(dp))) | |||||
| { | { | ||||
| // Need full path | // Need full path | ||||
| @@ -420,23 +380,23 @@ vector<string> SynthModular::BuildPluginList(const string &Path) | |||||
| fullpath.append(ep->d_name); | fullpath.append(ep->d_name); | ||||
| // Stat file to get type | // Stat file to get type | ||||
| if (!stat(fullpath.c_str(), &sb)) | |||||
| if (!stat(fullpath.c_str(), &sb)) | |||||
| { | { | ||||
| // We only want regular files | // 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 | // We're not fussed about resolving symbols yet, since we are just | ||||
| // checking if it's a DLL. | // checking if it's a DLL. | ||||
| handle = dlopen(fullpath.c_str(), RTLD_LAZY); | handle = dlopen(fullpath.c_str(), RTLD_LAZY); | ||||
| if (!handle) | |||||
| if (!handle) | |||||
| { | { | ||||
| cerr << "WARNING: File " << path << ep->d_name | cerr << "WARNING: File " << path << ep->d_name | ||||
| << " could not be examined" << endl; | << " could not be examined" << endl; | ||||
| cerr << "dlerror() output:" << endl; | cerr << "dlerror() output:" << endl; | ||||
| cerr << dlerror() << endl; | cerr << dlerror() << endl; | ||||
| } | |||||
| else | |||||
| } | |||||
| else | |||||
| { | { | ||||
| // It's a DLL. Add name to list | // It's a DLL. Add name to list | ||||
| ret.push_back(ep->d_name); | ret.push_back(ep->d_name); | ||||
| @@ -445,7 +405,7 @@ vector<string> SynthModular::BuildPluginList(const string &Path) | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| return ret; | return ret; | ||||
| } | } | ||||
| @@ -457,14 +417,14 @@ void SynthModular::LoadPlugins(string pluginPath) | |||||
| int SWidth = 256; | int SWidth = 256; | ||||
| int SHeight = 256; | int SHeight = 256; | ||||
| Fl_Pixmap pic(SSM_xpm); | Fl_Pixmap pic(SSM_xpm); | ||||
| Fl_Double_Window* Splash = new Fl_Double_Window((Fl::w()/2)-(SWidth/2), | Fl_Double_Window* Splash = new Fl_Double_Window((Fl::w()/2)-(SWidth/2), | ||||
| (Fl::h()/2)-(SHeight/2), | (Fl::h()/2)-(SHeight/2), | ||||
| SWidth,SHeight,"SSM"); | SWidth,SHeight,"SSM"); | ||||
| Splash->border(0); | Splash->border(0); | ||||
| Fl_Box* pbut = new Fl_Box(0,8,SWidth,SHeight,""); | Fl_Box* pbut = new Fl_Box(0,8,SWidth,SHeight,""); | ||||
| pbut->box(FL_NO_BOX); | pbut->box(FL_NO_BOX); | ||||
| pic.label(pbut); | pic.label(pbut); | ||||
| @@ -516,37 +476,39 @@ void SynthModular::LoadPlugins(string pluginPath) | |||||
| #endif | #endif | ||||
| Fl_Button *NewButton = new Fl_Button(0,0,Width,Height,""); | 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()); | Fl_Pixmap *tPix = new Fl_Pixmap(PluginManager::Get()->GetPlugin(ID)->GetIcon()); | ||||
| NewButton->image(tPix->copy(tPix->w(),tPix->h())); | NewButton->image(tPix->copy(tPix->w(),tPix->h())); | ||||
| delete tPix; | delete tPix; | ||||
| string GroupName = PluginManager::Get()->GetPlugin(ID)->GetGroupName(); | 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 | 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->color(SpiralSynthModularInfo::GUICOL_Button); | ||||
| NewButton->selection_color(SpiralSynthModularInfo::GUICOL_Tool); | NewButton->selection_color(SpiralSynthModularInfo::GUICOL_Tool); | ||||
| the_group->add(NewButton); | |||||
| string tooltip=*i; | 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 ('/'); | unsigned int p = tooltip.find ('/'); | ||||
| if (p < tooltip.length()) tooltip.erase (0, p); | if (p < tooltip.length()) tooltip.erase (0, p); | ||||
| // find last . and get rid of everything after and including it | // 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()); | splashtext->label (tooltip.c_str()); | ||||
| Splash->redraw(); | Splash->redraw(); | ||||
| NewButton->tooltip (tooltip.c_str()); | NewButton->tooltip (tooltip.c_str()); | ||||
| NewButton->callback((Fl_Callback*)cb_NewDevice,&Numbers[ID]); | |||||
| NewButton->callback((Fl_Callback*)cb_NewDevice,&Numbers[ID]); | |||||
| NewButton->show(); | NewButton->show(); | ||||
| m_DeviceVec.push_back(NewButton); | |||||
| m_ToolBox->redraw(); | |||||
| m_DeviceVec.push_back(NewButton); | |||||
| the_group->redraw(); | |||||
| m_NextPluginButton++; | m_NextPluginButton++; | ||||
| Fl::check(); | 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 | // 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(); | Splash->hide(); | ||||
| delete Splash; | delete Splash; | ||||
| } | } | ||||
| @@ -592,7 +551,7 @@ DeviceGUIInfo SynthModular::BuildDeviceGUIInfo(PluginInfo &PInfo) | |||||
| { | { | ||||
| DeviceGUIInfo Info; | DeviceGUIInfo Info; | ||||
| int Height=50; | int Height=50; | ||||
| // tweak the size if we have too many ins/outs | // tweak the size if we have too many ins/outs | ||||
| if (PInfo.NumInputs>4 || PInfo.NumOutputs>4) | if (PInfo.NumInputs>4 || PInfo.NumOutputs>4) | ||||
| { | { | ||||
| @@ -605,7 +564,7 @@ DeviceGUIInfo SynthModular::BuildDeviceGUIInfo(PluginInfo &PInfo) | |||||
| Height=PInfo.NumInputs*10+5; | Height=PInfo.NumInputs*10+5; | ||||
| } | } | ||||
| } | } | ||||
| // Make the guiinfo struct | // Make the guiinfo struct | ||||
| Info.XPos = 0; | Info.XPos = 0; | ||||
| Info.YPos = 0; | Info.YPos = 0; | ||||
| @@ -616,7 +575,7 @@ DeviceGUIInfo SynthModular::BuildDeviceGUIInfo(PluginInfo &PInfo) | |||||
| Info.Name = PInfo.Name; | Info.Name = PInfo.Name; | ||||
| Info.PortTips = PInfo.PortTips; | Info.PortTips = PInfo.PortTips; | ||||
| Info.PortTypes = PInfo.PortTypes; | Info.PortTypes = PInfo.PortTypes; | ||||
| return Info; | return Info; | ||||
| } | } | ||||
| @@ -626,9 +585,9 @@ DeviceWin* SynthModular::NewDeviceWin(int n, int x, int y) | |||||
| { | { | ||||
| DeviceWin *nlw = new DeviceWin; | DeviceWin *nlw = new DeviceWin; | ||||
| const HostsideInfo* Plugin=PluginManager::Get()->GetPlugin(n); | const HostsideInfo* Plugin=PluginManager::Get()->GetPlugin(n); | ||||
| if (!Plugin) return NULL; | if (!Plugin) return NULL; | ||||
| nlw->m_Device=Plugin->CreateInstance(); | nlw->m_Device=Plugin->CreateInstance(); | ||||
| if (!nlw->m_Device) | 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->SetUpdateCallback(cb_Update); | ||||
| nlw->m_Device->SetParent((void*)this); | 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(); | SpiralGUIType *temp = nlw->m_Device->CreateGUI(); | ||||
| Fl_Pixmap *Pix = new Fl_Pixmap(Plugin->GetIcon()); | Fl_Pixmap *Pix = new Fl_Pixmap(Plugin->GetIcon()); | ||||
| nlw->m_PluginID = n; | nlw->m_PluginID = n; | ||||
| if (temp) | |||||
| { | |||||
| if (temp) | |||||
| { | |||||
| temp->position(x+10,y); | temp->position(x+10,y); | ||||
| } | } | ||||
| DeviceGUIInfo Info=BuildDeviceGUIInfo(PInfo); | DeviceGUIInfo Info=BuildDeviceGUIInfo(PInfo); | ||||
| Info.XPos = x; //TOOLBOX_WIDTH+(rand()%400); | Info.XPos = x; //TOOLBOX_WIDTH+(rand()%400); | ||||
| Info.YPos = y; //rand()%400; | Info.YPos = y; //rand()%400; | ||||
| nlw->m_DeviceGUI = new Fl_DeviceGUI(Info, temp, Pix, nlw->m_Device->IsTerminal()); | nlw->m_DeviceGUI = new Fl_DeviceGUI(Info, temp, Pix, nlw->m_Device->IsTerminal()); | ||||
| m_Canvas->add(nlw->m_DeviceGUI); | m_Canvas->add(nlw->m_DeviceGUI); | ||||
| m_Canvas->redraw(); | 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) | void SynthModular::AddDevice(int n, int x=-1, int y=-1) | ||||
| { | { | ||||
| //cerr<<"Adding "<<m_NextID<<endl; | //cerr<<"Adding "<<m_NextID<<endl; | ||||
| if (x==-1) | 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); | 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* SynthModular::NewComment(int n, int x=-1, int y=-1) | ||||
| { | |||||
| { | |||||
| DeviceWin *nlw = new DeviceWin; | DeviceWin *nlw = new DeviceWin; | ||||
| if (x==-1) | if (x==-1) | ||||
| @@ -708,7 +667,7 @@ DeviceWin* SynthModular::NewComment(int n, int x=-1, int y=-1) | |||||
| Info.NumInputs = 0; | Info.NumInputs = 0; | ||||
| Info.NumOutputs = 0; | Info.NumOutputs = 0; | ||||
| Info.Name = ""; | Info.Name = ""; | ||||
| nlw->m_DeviceGUI = new Fl_CommentGUI(Info, NULL, NULL); | nlw->m_DeviceGUI = new Fl_CommentGUI(Info, NULL, NULL); | ||||
| m_Canvas->add(nlw->m_DeviceGUI); | m_Canvas->add(nlw->m_DeviceGUI); | ||||
| @@ -760,7 +719,7 @@ void SynthModular::UpdateHostInfo() | |||||
| ifs>>*this; | ifs>>*this; | ||||
| system("rm -f ___temp.ssmtmp"); | system("rm -f ___temp.ssmtmp"); | ||||
| } | } | ||||
| ////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////// | ||||
| @@ -804,7 +763,7 @@ istream &operator>>(istream &s, SynthModular &o) | |||||
| s>>EditWinX>>EditWinY>>EditWinW>>EditWinH; | s>>EditWinX>>EditWinY>>EditWinW>>EditWinH; | ||||
| //o.m_MainWindow->resize(MainWinX,MainWinY,MainWinW,MainWinH); | //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; | int Num, ID, PluginID, x,y,ps,px,py; | ||||
| @@ -869,7 +828,7 @@ istream &operator>>(istream &s, SynthModular &o) | |||||
| if (temp) | if (temp) | ||||
| { | { | ||||
| temp->m_DeviceGUI->SetID(ID); | temp->m_DeviceGUI->SetID(ID); | ||||
| if (ver>3) | |||||
| if (ver>3) | |||||
| { | { | ||||
| // set the titlebars | // set the titlebars | ||||
| temp->m_DeviceGUI->SetName(Name); | temp->m_DeviceGUI->SetName(Name); | ||||
| @@ -930,7 +889,7 @@ ostream &operator<<(ostream &s, SynthModular &o) | |||||
| o.PauseAudio(); | o.PauseAudio(); | ||||
| s<<"SpiralSynthModular File Ver "<<FILE_VERSION<<endl; | s<<"SpiralSynthModular File Ver "<<FILE_VERSION<<endl; | ||||
| // make external files dir | // make external files dir | ||||
| bool ExternalDirUsed=false; | bool ExternalDirUsed=false; | ||||
| string command("mkdir "+o.m_FilePath+"_files"); | 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->y()<<" "; | ||||
| s<<i->second->m_DeviceGUI->GetName().size()<<" "; | s<<i->second->m_DeviceGUI->GetName().size()<<" "; | ||||
| s<<i->second->m_DeviceGUI->GetName()<<" "; | s<<i->second->m_DeviceGUI->GetName()<<" "; | ||||
| if (i->second->m_DeviceGUI->GetPluginWindow()) | if (i->second->m_DeviceGUI->GetPluginWindow()) | ||||
| { | { | ||||
| s<<i->second->m_DeviceGUI->GetPluginWindow()->visible()<<" "; | 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)) | if (!Pawfal_YesNo("File [%s] exists, overwrite?",fn)) | ||||
| { | { | ||||
| return; | return; | ||||
| } | |||||
| } | |||||
| } | } | ||||
| ofstream of(fn); | ofstream of(fn); | ||||
| if (of) | if (of) | ||||
| { | |||||
| { | |||||
| m_FilePath=fn; | m_FilePath=fn; | ||||
| of<<*this; | 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?")) | if (m_DeviceWinMap.size()>0 && !Pawfal_YesNo("New - Lose changes to current patch?")) | ||||
| { | { | ||||
| return; | return; | ||||
| } | |||||
| } | |||||
| m_TopWindow->label(TITLEBAR.c_str()); | 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) | 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) | void SynthModular::cb_NewDevice(Fl_Button* o, void* v) | ||||
| {((SynthModular*)(o->parent()->user_data()))->cb_NewDevice_i(o,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) | inline void SynthModular::cb_Rload_i(Fl_Button* o, void* v) | ||||
| { | { | ||||
| m_SettingsWindow->show(); | m_SettingsWindow->show(); | ||||
| /*PluginManager::Get()->UnloadAll(); | /*PluginManager::Get()->UnloadAll(); | ||||
| m_ToolBox->remove(m_ToolPack); | 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->box(FL_NO_BOX); | ||||
| m_ToolPack->color(SpiralSynthModularInfo::GUICOL_Tool); | m_ToolPack->color(SpiralSynthModularInfo::GUICOL_Tool); | ||||
| m_ToolPack->user_data((void*)(this)); | m_ToolPack->user_data((void*)(this)); | ||||
| m_ToolBox->add(m_ToolPack); | |||||
| m_ToolBox->add(m_ToolPack); | |||||
| m_ToolBox->redraw(); | m_ToolBox->redraw(); | ||||
| LoadPlugins();*/ | LoadPlugins();*/ | ||||
| } | } | ||||
| void SynthModular::cb_Rload(Fl_Button* o, void* v) | 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; | CanvasWire *Wire; | ||||
| Wire=(CanvasWire*)v; | Wire=(CanvasWire*)v; | ||||
| map<int,DeviceWin*>::iterator si=m_DeviceWinMap.find(Wire->OutputID); | map<int,DeviceWin*>::iterator si=m_DeviceWinMap.find(Wire->OutputID); | ||||
| if (si==m_DeviceWinMap.end()) | if (si==m_DeviceWinMap.end()) | ||||
| { | { | ||||
| char num[32]; | |||||
| char num[32]; | |||||
| sprintf(num,"%d",Wire->OutputID); | sprintf(num,"%d",Wire->OutputID); | ||||
| SpiralInfo::Alert("Warning: Connection problem - can't find source "+string(num)); | SpiralInfo::Alert("Warning: Connection problem - can't find source "+string(num)); | ||||
| return; | return; | ||||
| @@ -1225,7 +1174,7 @@ inline void SynthModular::cb_Connection_i(Fl_Canvas* o, void* v) | |||||
| sprintf(num,"%d,%d",Wire->InputID,Wire->InputPort); | sprintf(num,"%d,%d",Wire->InputID,Wire->InputPort); | ||||
| SpiralInfo::Alert("Warning: Connection problem - can't find source input "+string(num)); | SpiralInfo::Alert("Warning: Connection problem - can't find source input "+string(num)); | ||||
| return; | return; | ||||
| } | |||||
| } | |||||
| } | } | ||||
| void SynthModular::cb_Connection(Fl_Canvas* o, void* v) | void SynthModular::cb_Connection(Fl_Canvas* o, void* v) | ||||
| {((SynthModular*)(o->user_data()))->cb_Connection_i(o,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()) | if (i!=m_DeviceWinMap.end()) | ||||
| { | { | ||||
| DeviceGUIInfo Info=BuildDeviceGUIInfo(*((PluginInfo*)PInfo)); | DeviceGUIInfo Info=BuildDeviceGUIInfo(*((PluginInfo*)PInfo)); | ||||
| (*i).second->m_DeviceGUI->Setup(Info); | (*i).second->m_DeviceGUI->Setup(Info); | ||||
| (*i).second->m_DeviceGUI->redraw(); | (*i).second->m_DeviceGUI->redraw(); | ||||
| } | } | ||||
| @@ -14,7 +14,7 @@ | |||||
| * You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | ||||
| * along with this program; if not, write to the Free Software | * along with this program; if not, write to the Free Software | ||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | |||||
| */ | |||||
| #ifndef SPIRALSYNTHMODULAR | #ifndef SPIRALSYNTHMODULAR | ||||
| #define SPIRALSYNTHMODULAR | #define SPIRALSYNTHMODULAR | ||||
| @@ -29,6 +29,7 @@ | |||||
| #include <FL/Fl_Scroll.H> | #include <FL/Fl_Scroll.H> | ||||
| #include <FL/Fl_Pack.H> | #include <FL/Fl_Pack.H> | ||||
| #include <FL/Fl_Tile.H> | #include <FL/Fl_Tile.H> | ||||
| #include <FL/Fl_Tabs.H> | |||||
| #include <sstream> | #include <sstream> | ||||
| #include <iostream> | #include <iostream> | ||||
| #include <map> | #include <map> | ||||
| @@ -52,7 +53,7 @@ class DeviceWin | |||||
| public: | public: | ||||
| DeviceWin() : m_DeviceGUI(NULL) {} | DeviceWin() : m_DeviceGUI(NULL) {} | ||||
| ~DeviceWin(); | ~DeviceWin(); | ||||
| int m_PluginID; | int m_PluginID; | ||||
| SpiralPlugin* m_Device; | SpiralPlugin* m_Device; | ||||
| Fl_DeviceGUI* m_DeviceGUI; | Fl_DeviceGUI* m_DeviceGUI; | ||||
| @@ -63,20 +64,20 @@ class SynthModular | |||||
| public: | public: | ||||
| SynthModular(); | SynthModular(); | ||||
| ~SynthModular(); | ~SynthModular(); | ||||
| SpiralWindowType * CreateWindow(); | SpiralWindowType * CreateWindow(); | ||||
| void LoadPlugins(string pluginPath); | void LoadPlugins(string pluginPath); | ||||
| void Update(); | void Update(); | ||||
| void AddDevice(int n, int x, int y); | void AddDevice(int n, int x, int y); | ||||
| void AddComment(int n); | void AddComment(int n); | ||||
| void ClearUp(); | |||||
| void UpdateHostInfo(); | |||||
| void ClearUp(); | |||||
| void UpdateHostInfo(); | |||||
| bool CallbackMode() { return m_CallbackUpdateMode; } | bool CallbackMode() { return m_CallbackUpdateMode; } | ||||
| bool IsBlockingOutputPluginReady() { return m_BlockingOutputPluginIsReady; } | bool IsBlockingOutputPluginReady() { return m_BlockingOutputPluginIsReady; } | ||||
| void UpdatePluginGUIs(); | void UpdatePluginGUIs(); | ||||
| void LoadPatch(const char *fn); | |||||
| void PauseAudio() | |||||
| void LoadPatch(const char *fn); | |||||
| void PauseAudio() | |||||
| { | { | ||||
| m_CH.Set("PauseAudio",true); | m_CH.Set("PauseAudio",true); | ||||
| m_CH.Wait(); | m_CH.Wait(); | ||||
| @@ -86,10 +87,10 @@ public: | |||||
| { | { | ||||
| m_CH.Set("PauseAudio",false); | m_CH.Set("PauseAudio",false); | ||||
| } | } | ||||
| // only for audio thread | // only for audio thread | ||||
| bool IsPaused() { return m_PauseAudio; } | bool IsPaused() { return m_PauseAudio; } | ||||
| private: | private: | ||||
| vector<string> BuildPluginList(const string &Path); | vector<string> BuildPluginList(const string &Path); | ||||
| @@ -101,66 +102,46 @@ private: | |||||
| static DeviceGUIInfo BuildDeviceGUIInfo(PluginInfo &PInfo); | 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; | static map<int,DeviceWin*> m_DeviceWinMap; | ||||
| int m_NextID; | int m_NextID; | ||||
| int m_NextPluginButton; | int m_NextPluginButton; | ||||
| int m_NextPluginButtonXPos; | int m_NextPluginButtonXPos; | ||||
| int m_NextPluginButtonYPos; | int m_NextPluginButtonYPos; | ||||
| static bool m_CallbackUpdateMode; | static bool m_CallbackUpdateMode; | ||||
| static bool m_BlockingOutputPluginIsReady; | static bool m_BlockingOutputPluginIsReady; | ||||
| string m_FilePath; | string m_FilePath; | ||||
| // Main GUI stuff | // Main GUI stuff | ||||
| void CreateGUI(int xoff=0, int yoff=0, char *name=""); | 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_Load; | ||||
| Fl_Button *m_Save; | Fl_Button *m_Save; | ||||
| Fl_Button *m_New; | Fl_Button *m_New; | ||||
| Fl_Button *m_OpenEditor; | |||||
| Fl_Button *m_OpenEditor; | |||||
| Fl_Button *m_Options; | Fl_Button *m_Options; | ||||
| Fl_Canvas *m_Canvas; | |||||
| Fl_Scroll *m_CanvasScroll; | |||||
| Fl_Scroll *m_ToolBox; | |||||
| Fl_Button *m_NewComment; | 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; | SettingsWindow *m_SettingsWindow; | ||||
| SpiralWindowType* m_TopWindow; | SpiralWindowType* m_TopWindow; | ||||
| vector<Fl_Button*> m_DeviceVec; | vector<Fl_Button*> m_DeviceVec; | ||||
| ChannelHandler m_CH; // used for threadsafe communication | ChannelHandler m_CH; // used for threadsafe communication | ||||
| bool m_PauseAudio; | bool m_PauseAudio; | ||||
| inline void cb_NewDevice_i(Fl_Button* o, void* v); | inline void cb_NewDevice_i(Fl_Button* o, void* v); | ||||
| static void cb_NewDevice(Fl_Button* o, void* v); | static void cb_NewDevice(Fl_Button* o, void* v); | ||||
| inline void cb_NewDeviceFromMenu_i(Fl_Canvas* 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); | static void cb_Unconnect(Fl_Canvas* o, void* v); | ||||
| inline void cb_Close_i(Fl_Window* o, void* v); | inline void cb_Close_i(Fl_Window* o, void* v); | ||||
| static void cb_Close(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); | inline void cb_Rload_i(Fl_Button* o, void* v); | ||||
| static void cb_Rload(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); | static void cb_UpdatePluginInfo(int ID, void *PluginInfo); | ||||
| friend istream &operator>>(istream &s, SynthModular &o); | 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); | istream &operator>>(istream &s, SynthModular &o); | ||||