Browse Source

smaller plugin groups - new toolbar on main app.

master
edgeeffect 22 years ago
parent
commit
ebdd277f6e
50 changed files with 1907 additions and 3524 deletions
  1. +137
    -131
      GUI/comment.xpm
  2. +414
    -951
      GUI/load.xpm
  3. +157
    -239
      GUI/new.xpm
  4. +500
    -840
      GUI/options.xpm
  5. +361
    -954
      GUI/save.xpm
  6. +1
    -1
      SpiralSound/Plugins/AmpPlugin/AmpPlugin.C
  7. +1
    -1
      SpiralSound/Plugins/AnotherFilterPlugin/AnotherFilterPlugin.C
  8. +1
    -1
      SpiralSound/Plugins/ControllerPlugin/ControllerPlugin.C
  9. +1
    -1
      SpiralSound/Plugins/CounterPlugin/CounterPlugin.C
  10. +1
    -1
      SpiralSound/Plugins/DelayPlugin/DelayPlugin.C
  11. +1
    -1
      SpiralSound/Plugins/DiskWriterPlugin/DiskWriterPlugin.C
  12. +1
    -1
      SpiralSound/Plugins/DistributorPlugin/DistributorPlugin.C
  13. +1
    -1
      SpiralSound/Plugins/EchoPlugin/EchoPlugin.C
  14. +2
    -2
      SpiralSound/Plugins/EnvFollowerPlugin/EnvFollowerPlugin.C
  15. +1
    -1
      SpiralSound/Plugins/EnvelopePlugin/EnvelopePlugin.C
  16. +4
    -4
      SpiralSound/Plugins/FilterPlugin/FilterPlugin.C
  17. +3
    -3
      SpiralSound/Plugins/FormantFilterPlugin/FormantFilterPlugin.C
  18. +1
    -1
      SpiralSound/Plugins/JackPlugin/JackPlugin.C
  19. +2
    -2
      SpiralSound/Plugins/KeyboardPlugin/KeyboardPlugin.C
  20. +1
    -1
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C
  21. +1
    -1
      SpiralSound/Plugins/LFOPlugin/LFOPlugin.C
  22. +2
    -2
      SpiralSound/Plugins/MasherPlugin/MasherPlugin.C
  23. +1
    -1
      SpiralSound/Plugins/MatrixPlugin/MatrixPlugin.C
  24. +1
    -1
      SpiralSound/Plugins/MeterPlugin/MeterPlugin.C
  25. +1
    -1
      SpiralSound/Plugins/MidiPlugin/MidiPlugin.C
  26. +1
    -1
      SpiralSound/Plugins/MixerPlugin/MixerPlugin.C
  27. +2
    -2
      SpiralSound/Plugins/MoogFilterPlugin/MoogFilterPlugin.C
  28. +2
    -2
      SpiralSound/Plugins/NoisePlugin/NoisePlugin.C
  29. +2
    -2
      SpiralSound/Plugins/NoteSnapPlugin/NoteSnapPlugin.C
  30. +1
    -1
      SpiralSound/Plugins/OscillatorPlugin/OscillatorPlugin.C
  31. +1
    -1
      SpiralSound/Plugins/OutputPlugin/OutputPlugin.C
  32. +2
    -2
      SpiralSound/Plugins/PoshSamplerPlugin/PoshSamplerPlugin.C
  33. +2
    -2
      SpiralSound/Plugins/RingModPlugin/RingModPlugin.C
  34. +1
    -1
      SpiralSound/Plugins/SVFilterPlugin/SVFilterPlugin.C
  35. +2
    -2
      SpiralSound/Plugins/SampleHoldPlugin/SampleHoldPlugin.C
  36. +2
    -2
      SpiralSound/Plugins/SamplerPlugin/SamplerPlugin.C
  37. +1
    -1
      SpiralSound/Plugins/ScopePlugin/ScopePlugin.C
  38. +2
    -2
      SpiralSound/Plugins/SeqPlugin/SeqPlugin.C
  39. +2
    -2
      SpiralSound/Plugins/SeqSelectorPlugin/SeqSelectorPlugin.C
  40. +18
    -18
      SpiralSound/Plugins/SequencerPlugin/SequencerPlugin.C
  41. +2
    -2
      SpiralSound/Plugins/SmoothPlugin/SmoothPlugin.C
  42. +1
    -1
      SpiralSound/Plugins/SpiralLoopPlugin/SpiralLoopPlugin.C
  43. +1
    -1
      SpiralSound/Plugins/SplitterPlugin/SplitterPlugin.C
  44. +1
    -1
      SpiralSound/Plugins/StereoMixerPlugin/StereoMixerPlugin.C
  45. +1
    -1
      SpiralSound/Plugins/StreamPlugin/StreamPlugin.C
  46. +1
    -1
      SpiralSound/Plugins/WaveShaperPlugin/WaveShaperPlugin.C
  47. +2
    -2
      SpiralSound/Plugins/WaveTablePlugin/WaveTablePlugin.C
  48. +1
    -1
      SpiralSound/Plugins/XFadePlugin/XFadePlugin.C
  49. +221
    -272
      SpiralSynthModular.C
  50. +38
    -58
      SpiralSynthModular.h

+ 137
- 131
GUI/comment.xpm View File

@@ -1,134 +1,140 @@
/* XPM */
static char * comment_xpm[] = {
"32 25 106 2",
"30 30 107 2",
" c None",
". c #313131",
"+ c #404040",
"@ c #474747",
"# c #484848",
"$ c #3F3F3F",
"% c #202020",
"& c #747474",
"* c #A6A6A6",
"= c #C6C6C6",
"- c #D4D4D4",
"; c #DCDCDC",
"> c #D3D3D3",
", c #C4C4C4",
"' c #A2A2A2",
") c #6C6C6C",
"! c #1A1A1A",
"~ c #3B3B3B",
"{ c #9D9D9D",
"] c #EFEFEF",
"^ c #FFFFFF",
"/ c #EAEAEA",
"( c #939393",
"_ c #373737",
": c #6A6A6A",
"< c #FEFEFE",
"[ c #CCCCCC",
"} c #5D5D5D",
"| c #7B7B7B",
"1 c #FDFDFD",
"2 c #FBFBFB",
"3 c #6B6B6B",
"4 c #686868",
"5 c #EEEEEE",
"6 c #E7E7E7",
"7 c #595959",
"8 c #242424",
"9 c #EBEBEB",
"0 c #DEDEDE",
"a c #181818",
"b c #7F7F7F",
"c c #BBBBBB",
"d c #AEAEAE",
"e c #3E3E3E",
"f c #CFCFCF",
"g c #343434",
"h c #414141",
"i c #C7C7C7",
"j c #323232",
"k c #C3C3C3",
"l c #B7B7B7",
"m c #9A9A9A",
"n c #888888",
"o c #434343",
"p c #F7F7F7",
"q c #F2F2F2",
"r c #303030",
"s c #9B9B9B",
"t c #FCFCFC",
"u c #F9F9F9",
"v c #2D2D2D",
"w c #ABABAB",
"x c #9E9E9E",
"y c #272727",
"z c #858585",
"A c #828282",
"B c #515151",
"C c #262626",
"D c #ACACAC",
"E c #F6F6F6",
"F c #A0A0A0",
"G c #1E1E1E",
"H c #909090",
"I c #F3F3F3",
"J c #F1F1F1",
"K c #7A7A7A",
"L c #676767",
"M c #F4F4F4",
"N c #CECECE",
"O c #5C5C5C",
"P c #464646",
"Q c #E0E0E0",
"R c #333333",
"S c #B5B5B5",
"T c #E6E6E6",
"U c #AFAFAF",
"V c #626262",
"W c #2C2C2C",
"X c #BABABA",
"Y c #2E2E2E",
"Z c #1D1D1D",
"` c #424242",
" . c #606060",
".. c #707070",
"+. c #1C1C1C",
"@. c #565656",
"#. c #DBDBDB",
"$. c #151515",
"%. c #2A2A2A",
"&. c #131313",
"*. c #808080",
"=. c #4F4F4F",
"-. c #B1B1B1",
";. c #2B2B2B",
">. c #575757",
",. c #3D3D3D",
" . + @ # $ ",
" % & * = - ; ; > , ' ) ! ",
" ~ { ] ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ( _ ",
" : - ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ < [ } ",
" | 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 2 3 ",
" 4 5 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 6 7 ",
" 8 9 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 0 a ",
" b ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 3 ",
" c ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ d ",
" e f ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ , g ",
" h > ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ i _ ",
" j k ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ l ",
" m ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ n ",
" o p ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ q r ",
" s t ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ u n ",
" v w < ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ t x y ",
" } z A B C D u ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ E F G ",
" H I t t J K L - E ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ M N O ",
" P Q ^ ^ ^ ^ f ~ R 4 S 9 ^ ^ ^ ^ ^ ^ T U V W ",
" ~ N ^ ^ ^ ^ X Y Z ` .....} e +. ",
" @.#.< t f P ",
" $.Y %.&. ",
"j *.=. ",
"b p -.;. ",
";.>.,. "};
". c #606060",
"+ c #6F6F6F",
"@ c #767676",
"# c #747474",
"$ c #787878",
"% c #717171",
"& c #A1A1A1",
"* c #C5C5C5",
"= c #DCDCDC",
"- c #E5E5E5",
"; c #E9E9E9",
"> c #E8E8E8",
", c #E1E1E1",
"' c #D2D2D2",
") c #B6B6B6",
"! c #868686",
"~ c #7B7B7B",
"{ c #B5B5B5",
"] c #EDEDED",
"^ c #FEFEFE",
"/ c #FFFFFF",
"( c #F9F9F9",
"_ c #D7D7D7",
": c #949494",
"< c #6B6B6B",
"[ c #A6A6A6",
"} c #D9D9D9",
"| c #FAFAFA",
"1 c #EFEFEF",
"2 c #BEBEBE",
"3 c #858585",
"4 c #A2A2A2",
"5 c #C4C4C4",
"6 c #737373",
"7 c #808080",
"8 c #DDDDDD",
"9 c #FDFDFD",
"0 c #F8F8F8",
"a c #BABABA",
"b c #343434",
"c c #AEAEAE",
"d c #FCFCFC",
"e c #F7F7F7",
"f c #666666",
"g c #D6D6D6",
"h c #A9A9A9",
"i c #838383",
"j c #C8C8C8",
"k c #3F3F3F",
"l c #CECECE",
"m c #404040",
"n c #727272",
"o c #E2E2E2",
"p c #C1C1C1",
"q c #CACACA",
"r c #929292",
"s c #9D9D9D",
"t c #F6F6F6",
"u c #EAEAEA",
"v c #494949",
"w c #C0C0C0",
"x c #EEEEEE",
"y c #8B8B8B",
"z c #363636",
"A c #686868",
"B c #C6C6C6",
"C c #ECECEC",
"D c #989898",
"E c #3B3B3B",
"F c #959595",
"G c #818181",
"H c #3C3C3C",
"I c #7A7A7A",
"J c #F5F5F5",
"K c #AFAFAF",
"L c #3E3E3E",
"M c #8F8F8F",
"N c #B9B9B9",
"O c #DFDFDF",
"P c #FBFBFB",
"Q c #CFCFCF",
"R c #A5A5A5",
"S c #5D5D5D",
"T c #757575",
"U c #5E5E5E",
"V c #ABABAB",
"W c #ADADAD",
"X c #B4B4B4",
"Y c #A0A0A0",
"Z c #888888",
"` c #444444",
" . c #565656",
".. c #F2F2F2",
"+. c #F4F4F4",
"@. c #626262",
"#. c #707070",
"$. c #535353",
"%. c #313131",
"&. c #5F5F5F",
"*. c #5C5C5C",
"=. c #373737",
"-. c #4F4F4F",
";. c #6E6E6E",
">. c #848484",
",. c #2B2B2B",
"'. c #575757",
" ",
" ",
" ",
" ",
" . + @ # $ ",
" % & * = - ; > , ' ) ! @ ",
" ~ { ] ^ / / / / / / / / ( _ : < ",
" [ } | / / / / / / / / / / / / 1 2 3 ",
" 4 - / / / / / / / / / / / / / / / ^ 5 6 ",
" 7 8 9 / / / / / / / / / / / / / / / / 0 a b ",
" c d / / / / / / / / / / / / / / / / / / e f ",
" g / / / / / / / / / / / / / / / / / / / / h ",
" i - / / / / / / / / / / / / / / / / / / / / j k ",
" 7 ; / / / / / / / / / / / / / / / / / / / / l m ",
" n o / / / / / / / / / / / / / / / / / / / / p ",
" q / / / / / / / / / / / / / / / / / / / ^ r ",
" s t / / / / / / / / / / / / / / / / / ^ u v ",
" ! w 0 / / / / / / / / / / / / / / / / x y ",
" z A B e / / / / / / / / / / / / / ^ C D E ",
" F h D G H I 5 > | / / / / / / / / / 9 J g K L ",
" w ( 9 | j ~ M N O t / / / / / P ] Q R @ ",
" S o / / / o T U V r W a w 2 X Y D Z ` ",
" .h ..^ +.X . ` @.#.< $.%. ",
" &.T Z $ *. ",
"=.I -. ",
";.q >.,. ",
"` I '. ",
" ",
" ",
" "};

+ 414
- 951
GUI/load.xpm
File diff suppressed because it is too large
View File


+ 157
- 239
GUI/new.xpm View File

@@ -1,242 +1,160 @@
/* XPM */
static char * new_xpm[] = {
"48 61 178 2",
"30 30 127 2",
" c None",
". c #000000",
"+ c #161616",
"@ c #9E9E9E",
"# c #ACACAC",
"$ c #B5B5B5",
"% c #AEAEAE",
"& c #ABABAB",
"* c #A7A7A7",
"= c #959595",
"- c #949494",
"; c #919191",
"> c #909090",
", c #808080",
"' c #7D7D7D",
") c #7E7E7E",
"! c #7F7F7F",
"~ c #9A9A9A",
"{ c #A2A2A2",
"] c #B8B8B8",
"^ c #717171",
"/ c #3B3B3B",
"( c #D5D5D5",
"_ c #FFFFFF",
": c #A1A1A1",
"< c #C3C3C3",
"[ c #C7C7C7",
"} c #C8C8C8",
"| c #C9C9C9",
"1 c #CACACA",
"2 c #CBCBCB",
"3 c #CCCCCC",
"4 c #CDCDCD",
"5 c #CECECE",
"6 c #CFCFCF",
"7 c #D0D0D0",
"8 c #D1D1D1",
"9 c #D2D2D2",
"0 c #D3D3D3",
"a c #D4D4D4",
"b c #D6D6D6",
"c c #636363",
"d c #6C6C6C",
"e c #F4F4F4",
"f c #9F9F9F",
"g c #C1C1C1",
"h c #D7D7D7",
"i c #5D5D5D",
"j c #131313",
"k c #A0A0A0",
"l c #FDFDFD",
"m c #FAFAFA",
"n c #989898",
"o c #9D9D9D",
"p c #D8D8D8",
"q c #4B4B4B",
"r c #333333",
"s c #F6F6F6",
"t c #F2F2F2",
"u c #EEEEEE",
"v c #929292",
"w c #C2C2C2",
"x c #454545",
"y c #5C5C5C",
"z c #BBBBBB",
"A c #AFAFAF",
"B c #EAEAEA",
"C c #E6E6E6",
"D c #E2E2E2",
"E c #8B8B8B",
"F c #D9D9D9",
"G c #3D3D3D",
"H c #8C8C8C",
"I c #6D6D6D",
"J c #A3A3A3",
"K c #C4C4C4",
"L c #DADADA",
"M c #2B2B2B",
"N c #888888",
"O c #B6B6B6",
"P c #B3B3B3",
"Q c #AAAAAA",
"R c #939393",
"S c #C0C0C0",
"T c #DBDBDB",
"U c #282828",
"V c #767676",
"W c #C5C5C5",
"X c #C6C6C6",
"Y c #969696",
"Z c #B2B2B2",
"` c #DCDCDC",
" . c #272727",
".. c #6F6F6F",
"+. c #A9A9A9",
"@. c #BDBDBD",
"#. c #DDDDDD",
"$. c #252525",
"%. c #5E5E5E",
"&. c #DEDEDE",
"*. c #202020",
"=. c #606060",
"-. c #B4B4B4",
";. c #DFDFDF",
">. c #B9B9B9",
",. c #BFBFBF",
"'. c #B7B7B7",
"). c #E0E0E0",
"!. c #5B5B5B",
"~. c #E1E1E1",
"{. c #212121",
"]. c #BABABA",
"^. c #E3E3E3",
"/. c #616161",
"(. c #E4E4E4",
"_. c #626262",
":. c #E5E5E5",
"<. c #E7E7E7",
"[. c #676767",
"}. c #E8E8E8",
"|. c #2A2A2A",
"1. c #757575",
"2. c #E9E9E9",
"3. c #2D2D2D",
"4. c #797979",
"5. c #3F3F3F",
"6. c #7C7C7C",
"7. c #BEBEBE",
"8. c #EBEBEB",
"9. c #484848",
"0. c #ECECEC",
"a. c #515151",
"b. c #EDEDED",
"c. c #999999",
"d. c #666666",
"e. c #EFEFEF",
"f. c #F0F0F0",
"g. c #838383",
"h. c #F1F1F1",
"i. c #8F8F8F",
"j. c #F3F3F3",
"k. c #070707",
"l. c #1A1A1A",
"m. c #F5F5F5",
"n. c #1F1F1F",
"o. c #060606",
"p. c #323232",
"q. c #F7F7F7",
"r. c #151515",
"s. c #F8F8F8",
"t. c #313131",
"u. c #464646",
"v. c #F9F9F9",
"w. c #505050",
"x. c #565656",
"y. c #5A5A5A",
"z. c #FBFBFB",
"A. c #979797",
"B. c #686868",
"C. c #FCFCFC",
"D. c #6E6E6E",
"E. c #090909",
"F. c #828282",
"G. c #424242",
"H. c #0F0F0F",
"I. c #0C0C0C",
"J. c #030303",
"K. c #191919",
"L. c #3A3A3A",
"M. c #898989",
"N. c #A8A8A8",
"O. c #595959",
"P. c #363636",
"Q. c #141414",
"R. c #020202",
"S. c #8A8A8A",
"T. c #1B1B1B",
"U. c #010101",
" ",
" ",
" . ",
" + @ # $ % & & * = - = ; > , ' ' ) ! ! ! , , , > ~ { ] ^ ",
" / ( _ : % < [ } } | 1 2 2 3 4 4 5 6 6 7 8 8 9 0 a a ( b c ",
" d e _ _ f { g } | | 1 2 2 3 4 5 5 6 7 7 8 9 9 0 a a ( b h i ",
" j k _ _ l m n o g | 1 1 2 3 3 4 5 6 6 7 8 8 9 0 0 a ( ( b h p q ",
" r 8 l m s t u v o w 1 2 2 3 4 4 5 6 6 7 8 9 9 0 a a ( b b h p p x . ",
" y 4 z A 2 B C D E @ < 2 3 3 4 5 5 6 7 7 8 9 9 0 a ( ( b h h p F F G . . ",
" H o H ! I ' 1 b ) J K 3 4 4 5 6 6 7 8 8 9 0 0 a ( b b h p p F L L M . . ",
" N O $ P Q R ! S ) # [ 4 4 5 6 7 7 8 9 9 0 a a ( b b h p F F L T T U . . ",
" V W X X K z J Y R Z w W X 6 7 7 8 9 0 0 a ( ( b h h p F F L T ` ` .. . ",
" ..} } | 1 | S +.$ S [ @.3 7 8 8 9 0 a a ( b b h p p F L L T ` #.#.$.. . ",
" %.| | 1 2 2 2 z 1 4 6 w S S S W 7 a a ( b h h p F F L T T ` #.#.&.*.. . ",
" =.1 1 2 3 3 4 -.5 6 7 4 < 9 9 5 K w W ( ( 1 1 2 7 L T ` ` #.&.&.;.*.. . ",
" =.2 2 3 4 4 5 ] 6 7 8 6 >.,.2 a ( b 0 < '.4 0 a K T ` #.#.&.;.;.).*.. . ",
" !.3 3 4 5 5 | $ 6 7 8 6 w a } g } b h p 7 K L T X ` #.&.&.;.).).~.{.. . ",
" y 3 4 5 6 6 S ].S g g w w ( ( b 7 < 1 F 9 7 T ` [ [ | 1 L ;.~.~.D {.. . ",
" y 4 5 6 7 7 ,.9 9 0 a a ( b b h p F 8 W W 8 ` #.6 F ;.#.7 2 a D ^.{.. . ",
" /.5 6 7 7 8 g 0 0 a ( ( b h h p F F L T a } a &.F 6 ).).~.D D ^.(.{.. . ",
" _.6 7 S K W @.0 a ( b b h p p F L L T 7 S 1 &.;.#.z 2 2 3 ~.^.(.:.{.. . ",
" c 7 8 S 7 7 O 8 ( b h h p F F L T L X 7 3 ,.T ).).1 D D ^.(.(.:.C U . . ",
" c 8 9 w 0 a 8 O X 0 h p F F L T b K L 8 4 2 ).).~.2 ^.^.(.:.:.C <.U . . ",
" [.9 0 < a ( b w a | W K ] [ z L K #.b 2 ;.1 ~.~.D 5 ^.(.:.C C <.}.|.. . ",
" 1.0 a '.( b h 2 7 F F L S W 1 w ` T [ ).( < &.` T K (.:.C <.<.}.2.3.. . ",
" 4.a ( < ( h p a O X } } z 1 ` X F X ;.).[ 3 ( b h ^.:.C <.<.}.2.B 5.. . ",
" 6.( b 7 g X X [ ,.7 F L | p &.` 7.;.~.2 &.` ^.(.:.C C <.}.}.2.B B x . . ",
" ! b h h p F F p F T ` #.p 3 ;.;.2 ;.( ( ^.(.:.:.C <.<.}.2.2.B 8.8.9.. . ",
" ; h p p F L L T ` ` #.&.&.3 4 4 4 L 4 ^.(.:.:.C <.}.}.2.B B 8.0.0.a.. . ",
" n p F F L T T ` #.#.&.;.;.).~.D ).| ^.(.:.C C <.}.}.2.B 8.8.0.b.b.=.. . ",
" c.F L L T ` ` #.&.&.` #.;.~.D ^.5 ;.:.:.C <.<.}.2.2.B 8.0.0.b.u u d.. . ",
" & L L T ` #.#.5 #.9 3 4 < D ^.T 8 :.C C <.}.}.2.B B 8.0.0.b.u e.e.1.. . ",
" $ T T ` #.#.&.2 #.).~.D F a D 1 :.C C <.}.2.2.B 8.8.0.b.b.u e.e.f.g.. . ",
" '.` ` #.&.&.;.3 &.~.D ^.^.2 1 ^.C <.&.D <.&.B T 2.0 0 ( p D f.f.h.i.. . ",
" . 3 #.#.&.;.;.).4 ;.D ^.(.(.p 6 C <.}.}.2.B B 8.0.b.b.u e.e.f.h.h.t : . . ",
" . a &.&.;.).).~.F a ~.D D ^.(.5 <.}.2.2.B D (.0.:.#.( ( b L h.t t j.Z . . ",
" k.h ;.;.).~.~.D ~.6 6 7 7 8 9 F }.2.B B 8.~.D b.(.C u e.f.h.t j.j.e < . . ",
" l.#.;.).~.D D ^.(.(.:.C C <.}.}.2.B 8.8.0.F a b p 8.f.u e.t j.e e m.&.. . ",
" n.).).~.D ^.^.(.:.:.C <.<.}.2.2.B 8.8.B b.u u e.f.f.h.(.:.j.e e m.s 0.o.. . ",
" p.~.~.D ^.^.(.:.C C <.}.}.2.B B 8.0.0.;.a h u b.F L L e.D ` j.m.s q.q.r.. . ",
" 5.D D ^.(.(.:.C C <.}.2.2.B 8.8.0.b.b.u e.e.f.h.t t h.h.t e e e q.s.s.t.. . ",
" u.^.^.(.:.:.C <.<.}.2.B B 8.0.0.b.<.L e.` h b 2.j.j.` T T 0.^.#.m.v.v.w.. . ",
" x.(.(.:.C C <.}.}.2.B B 8.0.b.b.u u u f.f.h.t j.j.e m.s s q.s.s.v.m m ^ . . ",
" y.(.:.C <.<.}.2.2.B 8.8.0.b.b.u e.f.f.h.t t j.e e m.s s q.s.v.v.m z.z.A.. . ",
" B.:.C <.}.}.2.B B 8.0.0.b.u u e.f.h.h.t j.j.e m.m.s q.q.s.v.v.m z.C.C.K . . ",
" D.C <.}.}.2.B 8.8.0.b.b.u e.e.f.h.h.t j.e e e t B C C ;.;.).~.2.0.s.l e E.. ",
" F.<.}.2.2.B 8.8.0.b.u b.~.X & v 6.[.a.G.3.{.H.I.J.. . . . . . . . I.K.L.H.. ",
" M.}.2.B B B 9 N.' O.P.Q.R.. . . . . . . . . . . . . . . . . . . . . . . . . ",
" f 2.4 S.w.T.U.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
" %./ J.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
" . . . . . . . . . . . . . . . . . . ",
" . . . . . . . . ",
" . . ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};
". c #676767",
"+ c #707070",
"@ c #909090",
"# c #D5D5D5",
"$ c #A8A8A8",
"% c #C0C0C0",
"& c #C3C3C3",
"* c #C1C1C1",
"= c #C2C2C2",
"- c #C4C4C4",
"; c #C8C8C8",
"> c #CCCCCC",
", c #9E9E9E",
"' c #BEBEBE",
") c #F9F9F9",
"! c #EAEAEA",
"~ c #9D9D9D",
"{ c #CACACA",
"] c #CDCDCD",
"^ c #CECECE",
"/ c #CFCFCF",
"( c #D1D1D1",
"_ c #D2D2D2",
": c #D3D3D3",
"< c #D4D4D4",
"[ c #D6D6D6",
"} c #989898",
"| c #6C6C6C",
"1 c #B3B3B3",
"2 c #DEDEDE",
"3 c #EEEEEE",
"4 c #D9D9D9",
"5 c #979797",
"6 c #C6C6C6",
"7 c #CBCBCB",
"8 c #D0D0D0",
"9 c #D7D7D7",
"0 c #D8D8D8",
"a c #919191",
"b c #090909",
"c c #A0A0A0",
"d c #8F8F8F",
"e c #BDBDBD",
"f c #969696",
"g c #DADADA",
"h c #888888",
"i c #050505",
"j c #929292",
"k c #BFBFBF",
"l c #AAAAAA",
"m c #9F9F9F",
"n c #A4A4A4",
"o c #C5C5C5",
"p c #DBDBDB",
"q c #878787",
"r c #C9C9C9",
"s c #B9B9B9",
"t c #DCDCDC",
"u c #DDDDDD",
"v c #858585",
"w c #040404",
"x c #838383",
"y c #818181",
"z c #DFDFDF",
"A c #E0E0E0",
"B c #828282",
"C c #C7C7C7",
"D c #868686",
"E c #E3E3E3",
"F c #E5E5E5",
"G c #8C8C8C",
"H c #8A8A8A",
"I c #E4E4E4",
"J c #E6E6E6",
"K c #8E8E8E",
"L c #E7E7E7",
"M c #E8E8E8",
"N c #959595",
"O c #060606",
"P c #9A9A9A",
"Q c #E2E2E2",
"R c #080808",
"S c #A5A5A5",
"T c #E9E9E9",
"U c #EBEBEB",
"V c #A3A3A3",
"W c #AEAEAE",
"X c #E1E1E1",
"Y c #ECECEC",
"Z c #EDEDED",
"` c #ACACAC",
" . c #0C0C0C",
".. c #BCBCBC",
"+. c #EFEFEF",
"@. c #B8B8B8",
"#. c #0E0E0E",
"$. c #F0F0F0",
"%. c #111111",
"&. c #F2F2F2",
"*. c #141414",
"=. c #F3F3F3",
"-. c #181818",
";. c #F5F5F5",
">. c #F1F1F1",
",. c #212121",
"'. c #000000",
"). c #F8F8F8",
"!. c #353535",
"~. c #565656",
"{. c #F4F4F4",
"]. c #F6F6F6",
"^. c #FAFAFA",
"/. c #FBFBFB",
"(. c #7C7C7C",
"_. c #020202",
":. c #949494",
"<. c #747474",
"[. c #5D5D5D",
"}. c #484848",
"|. c #363636",
"1. c #252525",
"2. c #171717",
"3. c #0B0B0B",
"4. c #2C2C2C",
"5. c #0D0D0D",
"6. c #010101",
" . + ",
" @ # $ % & * * * % % * = & - ; > , ",
" ' ) ! ~ - { { > ] ^ / ( _ : < # [ } ",
" | 1 2 3 4 5 6 7 > ] / 8 ( _ : < [ 9 0 a b ",
" a c d , e f ; ] ^ / 8 ( : < # [ 0 0 g h i ",
" j * k l m n o { / 8 _ : < # 9 9 4 g p q i ",
" q r { r s - 6 o ; ^ : < [ 9 0 4 p t u v w ",
" x { > ] % / / - ] ] { ] 7 ^ / p t u 2 v w ",
" y > ] > k ] ^ 6 > 7 _ _ r 0 ^ 4 p z A q w ",
" B ] / { C 7 > / [ [ 8 ] ^ p ( < # # z q w ",
" D ^ { ; ^ < # [ 9 4 g [ { 4 0 ( 0 A E h w ",
" q / ; r r < 9 0 4 g < / C t p # z E F G i ",
" H 8 7 # 6 ^ > ; { : < _ ( z u g I J J K i ",
" f ( { 9 / 7 ( & ^ / : g 7 0 0 u J L M N O ",
" P # ] ] > ] 0 8 g 8 g [ u Q I J M M ! ~ R ",
" S 0 0 g g t u 4 _ _ [ t I F L M T ! U V b ",
" W 4 g p t 2 u z X u 4 F J L M T U Y Z ` . ",
" ..g t u < g # _ A 9 I J M T ! U Y Z +.@.#. ",
" * t u 2 < A Q u ( Q F I F L J u A M $.& %. ",
" ..2 z A 0 2 E Q [ L M T J ! I z X 3 &.( *. ",
" & z X Q A 0 4 g 2 T ! ! u Q L +.$.&.=.Q -. ",
" { X Q E F J L M T U ! L L T T ! T =.;.>.,.'. ",
" ^ E I F J L T ! U Y U J ! Z T Y U >.;.).!.'. ",
" _ I F L M T ! Y Z Y M M E +.>.M Y Z &.) ~.'. ",
" # J L M T U Y Z 3 $.$.&.=.{.;.].).) ^./.(.'. ",
" 0 M M ! U Y Y ! F Q z u g [ 8 ^ > / < A 5 _. ",
" t T ! 9 1 :.<.[.}.|.1.2.3.w '.'.'.'.'.b *._. ",
" ~ . 4.5.R w 6.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'. ",
" '.'.'.'.'.'.'.'.'.'. ",
" '. "};

+ 500
- 840
GUI/options.xpm
File diff suppressed because it is too large
View File


+ 361
- 954
GUI/save.xpm
File diff suppressed because it is too large
View File


+ 1
- 1
SpiralSound/Plugins/AmpPlugin/AmpPlugin.C View File

@@ -41,7 +41,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Amps/Mixers";
}
}



+ 1
- 1
SpiralSound/Plugins/AnotherFilterPlugin/AnotherFilterPlugin.C View File

@@ -43,7 +43,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Filters/FX";
}
}



+ 1
- 1
SpiralSound/Plugins/ControllerPlugin/ControllerPlugin.C View File

@@ -40,7 +40,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Control";
}
}



+ 1
- 1
SpiralSound/Plugins/CounterPlugin/CounterPlugin.C View File

@@ -100,7 +100,7 @@ void CounterPlugin::Execute()
m_Current++;
}
}
if (m_Current>=m_Count)
{
m_CurrentLevel=-m_CurrentLevel;


+ 1
- 1
SpiralSound/Plugins/DelayPlugin/DelayPlugin.C View File

@@ -40,7 +40,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Delay/Sampling";
}
}



+ 1
- 1
SpiralSound/Plugins/DiskWriterPlugin/DiskWriterPlugin.C View File

@@ -62,7 +62,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "InputOutput";
}
}



+ 1
- 1
SpiralSound/Plugins/DistributorPlugin/DistributorPlugin.C View File

@@ -38,7 +38,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Control";
}
}



+ 1
- 1
SpiralSound/Plugins/EchoPlugin/EchoPlugin.C View File

@@ -40,7 +40,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Delay/Sampling";
}
}



+ 2
- 2
SpiralSound/Plugins/EnvFollowerPlugin/EnvFollowerPlugin.C View File

@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
*/
#include "EnvFollowerPlugin.h"
#include "EnvFollowerPluginGUI.h"
#include <FL/Fl_Button.h>
@@ -38,7 +38,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Control";
}
}



+ 1
- 1
SpiralSound/Plugins/EnvelopePlugin/EnvelopePlugin.C View File

@@ -38,7 +38,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Control";
}
}



+ 4
- 4
SpiralSound/Plugins/FilterPlugin/FilterPlugin.C View File

@@ -44,16 +44,16 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Filters/FX";
}
}

///////////////////////////////////////////////////////

FilterPlugin::FilterPlugin() :
fs(0), // Sampling frequency
fc(100), // Filter cutoff
Q(1), // Resonance
fs(0), // Sampling frequency
fc(100), // Filter cutoff
Q(1), // Resonance
m_LastFC(0),
m_LastQ(1),
k(1.0), // Set overall filter gain


+ 3
- 3
SpiralSound/Plugins/FormantFilterPlugin/FormantFilterPlugin.C View File

@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
*/
#include <math.h>
#include "FormantFilterPlugin.h"
#include "FormantFilterPluginGUI.h"
@@ -77,7 +77,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Filters/FX";
}
}

@@ -91,7 +91,7 @@ m_Vowel(0)
m_PluginInfo.Height=110;
m_PluginInfo.NumInputs=2;
m_PluginInfo.NumOutputs=1;
m_PluginInfo.PortTips.push_back("Input");
m_PluginInfo.PortTips.push_back("Input");
m_PluginInfo.PortTips.push_back("Vowel CV");
m_PluginInfo.PortTips.push_back("Output");


+ 1
- 1
SpiralSound/Plugins/JackPlugin/JackPlugin.C View File

@@ -338,7 +338,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "InputOutput";
}
}



+ 2
- 2
SpiralSound/Plugins/KeyboardPlugin/KeyboardPlugin.C View File

@@ -39,7 +39,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "InputOutput";
}
}

@@ -50,7 +50,7 @@ m_NoteLevel(0),
m_TriggerLevel(0)
{
m_Version=0;
m_PluginInfo.Name="Keyboard";
m_PluginInfo.Width=300;
m_PluginInfo.Height=90;


+ 1
- 1
SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C View File

@@ -45,7 +45,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Filters/FX";
}
}



+ 1
- 1
SpiralSound/Plugins/LFOPlugin/LFOPlugin.C View File

@@ -30,7 +30,7 @@ int GetID() { return 124; }

string GetGroupName()
{
return "SpiralSound";
return "Oscillators";
}
}



+ 2
- 2
SpiralSound/Plugins/MasherPlugin/MasherPlugin.C View File

@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
*/
#include <math.h>
#include "MasherPlugin.h"
#include "MasherPluginGUI.h"
@@ -46,7 +46,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Filters/FX";
}
}



+ 1
- 1
SpiralSound/Plugins/MatrixPlugin/MatrixPlugin.C View File

@@ -40,7 +40,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Sequencing";
}
}



+ 1
- 1
SpiralSound/Plugins/MeterPlugin/MeterPlugin.C View File

@@ -29,7 +29,7 @@ int GetID() { return 123; }

string GetGroupName()
{
return "SpiralSound";
return "Control";
}
}



+ 1
- 1
SpiralSound/Plugins/MidiPlugin/MidiPlugin.C View File

@@ -43,7 +43,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "InputOutput";
}
}



+ 1
- 1
SpiralSound/Plugins/MixerPlugin/MixerPlugin.C View File

@@ -40,7 +40,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Amps/Mixers";
}
}



+ 2
- 2
SpiralSound/Plugins/MoogFilterPlugin/MoogFilterPlugin.C View File

@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
*/
#include <math.h>
#include "MoogFilterPlugin.h"
#include "MoogFilterPluginGUI.h"
@@ -43,7 +43,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Filters/FX";
}
}



+ 2
- 2
SpiralSound/Plugins/NoisePlugin/NoisePlugin.C View File

@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
*/
#include "NoisePlugin.h"
#include "NoisePluginGUI.h"
#include <FL/Fl_Button.h>
@@ -39,7 +39,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Oscillators";
}
}



+ 2
- 2
SpiralSound/Plugins/NoteSnapPlugin/NoteSnapPlugin.C View File

@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
*/
#include "NoteSnapPlugin.h"
#include "NoteSnapPluginGUI.h"
#include <FL/Fl_Button.h>
@@ -39,7 +39,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Control";
}
}



+ 1
- 1
SpiralSound/Plugins/OscillatorPlugin/OscillatorPlugin.C View File

@@ -45,7 +45,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Oscillators";
}
}



+ 1
- 1
SpiralSound/Plugins/OutputPlugin/OutputPlugin.C View File

@@ -83,7 +83,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "InputOutput";
}
}



+ 2
- 2
SpiralSound/Plugins/PoshSamplerPlugin/PoshSamplerPlugin.C View File

@@ -48,7 +48,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Delay/Sampling";
}
}

@@ -61,7 +61,7 @@ m_Recording(false)
m_PluginInfo.Width=400;
m_PluginInfo.Height=215;
m_PluginInfo.NumInputs=21;
m_PluginInfo.NumOutputs=9;
m_PluginInfo.NumOutputs=9;
m_PluginInfo.PortTips.push_back("Sample 1 Pitch");
m_PluginInfo.PortTips.push_back("Sample 1 Trigger");
m_PluginInfo.PortTips.push_back("Sample 2 Pitch");


+ 2
- 2
SpiralSound/Plugins/RingModPlugin/RingModPlugin.C View File

@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
*/
#include <math.h>
#include "RingModPlugin.h"
#include "RingModPluginGUI.h"
@@ -39,7 +39,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Filters/FX";
}
}



+ 1
- 1
SpiralSound/Plugins/SVFilterPlugin/SVFilterPlugin.C View File

@@ -41,7 +41,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Filters/FX";
}
}



+ 2
- 2
SpiralSound/Plugins/SampleHoldPlugin/SampleHoldPlugin.C View File

@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
*/
#include "SampleHoldPlugin.h"
#include "SampleHoldPluginGUI.h"
#include <FL/Fl_Button.h>
@@ -38,7 +38,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Control";
}
}



+ 2
- 2
SpiralSound/Plugins/SamplerPlugin/SamplerPlugin.C View File

@@ -42,7 +42,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Delay/Sampling";
}
}

@@ -54,7 +54,7 @@ SamplerPlugin::SamplerPlugin()
m_PluginInfo.Width=245;
m_PluginInfo.Height=420;
m_PluginInfo.NumInputs=18;
m_PluginInfo.NumOutputs=9;
m_PluginInfo.NumOutputs=9;
m_PluginInfo.PortTips.push_back("Sample 1 Pitch");
m_PluginInfo.PortTips.push_back("Sample 1 Trigger");
m_PluginInfo.PortTips.push_back("Sample 2 Pitch");


+ 1
- 1
SpiralSound/Plugins/ScopePlugin/ScopePlugin.C View File

@@ -39,7 +39,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Control";
}
}



+ 2
- 2
SpiralSound/Plugins/SeqPlugin/SeqPlugin.C View File

@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
*/
#include "SeqPlugin.h"
#include "SeqPluginGUI.h"
#include <FL/Fl_Button.h>
@@ -43,7 +43,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Sequencing";
}
}



+ 2
- 2
SpiralSound/Plugins/SeqSelectorPlugin/SeqSelectorPlugin.C View File

@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
*/
#include "SeqSelectorPlugin.h"
#include "SeqSelectorPluginGUI.h"
#include <FL/Fl_Button.h>
@@ -39,7 +39,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Sequencing";
}
}



+ 18
- 18
SpiralSound/Plugins/SequencerPlugin/SequencerPlugin.C View File

@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
*/
#include "SequencerPlugin.h"
#include "SequencerPluginGUI.h"
#include <FL/Fl_Button.h>
@@ -39,23 +39,23 @@ Note::Note(float t=0, float l=0.1f, int n=0, float v=1.0f)
Note::~Note()
{
}
istream &operator>>(istream &s, Note &o)
{
int version=1;
string dummy;
s>>version>>dummy>>o.Time>>o.Length>>o.MidiNote>>o.Vol;
return s;
}

ostream &operator<<(ostream &s, Note &o)
{
{
int version=1;
s<<version<<" note "<<o.Time<<" "<<o.Length<<" "<<o.MidiNote<<" "<<o.Vol<<" ";
return s;
}
}

/////////////////////////////////////////////////////////////////////////

@@ -70,8 +70,8 @@ Pattern::~Pattern()
void Pattern::Copy(const Pattern *o)
{
// can't do this as we don't want to preserve the id numbers
//m_NoteMap=o->m_NoteMap;
//m_NoteMap=o->m_NoteMap;
int c=0;
for (map<int,Note>::const_iterator i = o->m_NoteMap.begin();
i!=o->m_NoteMap.end(); i++)
@@ -89,7 +89,7 @@ void Pattern::AddNote(int ID, float t, float l, int n, float v)
return;
}
Note newnote(t,l,n,v);
m_NoteMap[ID]=newnote;
}

@@ -101,7 +101,7 @@ void Pattern::RemoveNote(int ID)
cerr<<"couldn't find note "<<ID<<" not removed"<<endl;
return;
}
m_NoteMap.erase(i);
}

@@ -113,7 +113,7 @@ Note *Pattern::GetNote(int ID)
cerr<<"couldn't find note "<<ID<<endl;
return NULL;
}
return &i->second;
}

@@ -129,24 +129,24 @@ istream &operator>>(istream &s, Pattern &o)
s>>t;
o.m_NoteMap[id++]=t;
}
return s;
}

ostream &operator<<(ostream &s, Pattern &o)
{
{
int version=1;
s<<version<<" pattern "<<o.m_NoteMap.size()<<" ";
for (map<int,Note>::iterator i = o.m_NoteMap.begin();
i!=o.m_NoteMap.end(); i++)
{
s<<i->second;
}
s<<endl;
return s;
}
}

//////////////////////////////////////////////////////////////////////////

@@ -229,7 +229,7 @@ void Track::CloneSequence(int ID, int nID)
s->SetYPos(GetSequence(ID)->GetYPos());
s->SetPatternID(GetSequence(ID)->GetPatternID());
s->SetStartTime(GetSequence(ID)->GetStartTime());
s->SetChannel(GetSequence(ID)->GetChannel());
s->SetChannel(GetSequence(ID)->GetChannel());
}

// duplicate the sequence, and copy the pattern to it's own version
@@ -435,7 +435,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Sequencing";
}
}



+ 2
- 2
SpiralSound/Plugins/SmoothPlugin/SmoothPlugin.C View File

@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
*/
#include "SmoothPlugin.h"
#include "SmoothPluginGUI.h"
#include <FL/Fl_Button.h>
@@ -38,7 +38,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Control";
}
}



+ 1
- 1
SpiralSound/Plugins/SpiralLoopPlugin/SpiralLoopPlugin.C View File

@@ -44,7 +44,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Delay/Sampling";
}
}



+ 1
- 1
SpiralSound/Plugins/SplitterPlugin/SplitterPlugin.C View File

@@ -38,7 +38,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Control";
}
}



+ 1
- 1
SpiralSound/Plugins/StereoMixerPlugin/StereoMixerPlugin.C View File

@@ -38,7 +38,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Amps/Mixers";
}
}



+ 1
- 1
SpiralSound/Plugins/StreamPlugin/StreamPlugin.C View File

@@ -43,7 +43,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Delay/Sampling";
}
}



+ 1
- 1
SpiralSound/Plugins/WaveShaperPlugin/WaveShaperPlugin.C View File

@@ -35,7 +35,7 @@ int GetID() {
}
string GetGroupName()
{
return "SpiralSound";
return "Filters/FX";
}
}



+ 2
- 2
SpiralSound/Plugins/WaveTablePlugin/WaveTablePlugin.C View File

@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
*/
#include "WaveTablePlugin.h"
#include "WaveTablePluginGUI.h"
#include <FL/Fl_Button.h>
@@ -45,7 +45,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Oscillators";
}
}



+ 1
- 1
SpiralSound/Plugins/XFadePlugin/XFadePlugin.C View File

@@ -41,7 +41,7 @@ int GetID()

string GetGroupName()
{
return "SpiralSound";
return "Amps/Mixers";
}
}



+ 221
- 272
SpiralSynthModular.C View File

@@ -56,8 +56,6 @@ static int Numbers[512];
static const int MAIN_WIDTH = 700;
static const int MAIN_HEIGHT = 600;
static const int SLIDER_WIDTH = 15;
static const int TOOLBOX_HEIGHT = MAIN_HEIGHT;
static const int TOOLBOX_WIDTH = 132+SLIDER_WIDTH;
static const int ICON_DEPTH = 3;
static const int COMMENT_ID = -1;

@@ -70,8 +68,8 @@ bool SynthModular::m_BlockingOutputPluginIsReady = false;
//////////////////////////////////////////////////////////

DeviceWin::~DeviceWin()
{
}
{
}

//////////////////////////////////////////////////////////

@@ -81,25 +79,25 @@ m_NextPluginButton(1),
m_NextPluginButtonXPos(5),
m_NextPluginButtonYPos(20),
m_PauseAudio(false)
{
{
m_Info.BUFSIZE = SpiralInfo::BUFSIZE;
m_Info.FRAGSIZE = SpiralInfo::FRAGSIZE;
m_Info.FRAGCOUNT = SpiralInfo::FRAGCOUNT;
m_Info.FRAGCOUNT = SpiralInfo::FRAGCOUNT;
m_Info.SAMPLERATE = SpiralInfo::SAMPLERATE;
m_Info.OUTPUTFILE = SpiralInfo::OUTPUTFILE;
m_Info.MIDIFILE = SpiralInfo::MIDIFILE;
m_Info.MIDIFILE = SpiralInfo::MIDIFILE;
m_Info.POLY = SpiralInfo::POLY;
//m_Info.GUI_COLOUR = SpiralInfo::GUI_COLOUR;
for (int n=0; n<512; n++) Numbers[n]=n;
for (int n=0; n<512; n++) Numbers[n]=n;
m_CH.Register("PauseAudio",&m_PauseAudio);
}

//////////////////////////////////////////////////////////

SynthModular::~SynthModular()
{
{
ClearUp();
PluginManager::Get()->PackUpAndGoHome();
}
@@ -109,36 +107,36 @@ SynthModular::~SynthModular()
void SynthModular::ClearUp()
{
PauseAudio();
for(map<int,DeviceWin*>::iterator i=m_DeviceWinMap.begin();
i!=m_DeviceWinMap.end(); i++)
{
if (i->second->m_DeviceGUI->GetPluginWindow())
{
i->second->m_DeviceGUI->GetPluginWindow()->hide();
//m_MainWindow->remove(i->second->m_DeviceGUI->GetPluginWindow());
//m_MainWindow->remove(i->second->m_DeviceGUI->GetPluginWindow());
}
// deleted by Canvas::Remove()? seems to cause random crashes
//delete i->second->m_DeviceGUI;
delete i->second->m_Device;
i->second->m_Device=NULL;
}
m_Canvas->Clear();
m_DeviceWinMap.clear();
m_NextID=0;
ResumeAudio();
}

//////////////////////////////////////////////////////////

void SynthModular::Update()
{
{
m_CH.UpdateDataNow();
if (m_PauseAudio) return;
// for all the plugins
for(map<int,DeviceWin*>::iterator i=m_DeviceWinMap.begin();
i!=m_DeviceWinMap.end(); i++)
@@ -148,35 +146,35 @@ void SynthModular::Update()
#ifdef DEBUG_PLUGINS
cerr<<"Updating channelhandler of plugin "<<i->second->m_PluginID<<endl;
#endif
// updates the data from the gui thread, if it's not blocking
i->second->m_Device->UpdateChannelHandler();
#ifdef DEBUG_PLUGINS
#ifdef DEBUG_PLUGINS
cerr<<"Finished updating"<<endl;
#endif
// run any commands we've received from the GUI's
i->second->m_Device->ExecuteCommands();
}
}
// run the plugins (only ones connected to anything)
list<int> ExecutionOrder = m_Canvas->GetGraph()->GetSortedList();
for (list<int>::reverse_iterator i=ExecutionOrder.rbegin();
for (list<int>::reverse_iterator i=ExecutionOrder.rbegin();
i!=ExecutionOrder.rend(); i++)
{
// use the graphsort order to remove internal latency
map<int,DeviceWin*>::iterator di=m_DeviceWinMap.find(*i);
if (di!=m_DeviceWinMap.end() && di->second->m_Device)
{
if (di!=m_DeviceWinMap.end() && di->second->m_Device)
{
#ifdef DEBUG_PLUGINS
cerr<<"Executing plugin "<<di->second->m_PluginID<<endl;
#endif
di->second->m_Device->Execute();
#ifdef DEBUG_PLUGINS
#ifdef DEBUG_PLUGINS
cerr<<"Finished executing"<<endl;
#endif
}
@@ -187,42 +185,42 @@ void SynthModular::Update()

void SynthModular::UpdatePluginGUIs()
{
// see if any need deleting
for (map<int,DeviceWin*>::iterator i=m_DeviceWinMap.begin();
// see if any need deleting
for (map<int,DeviceWin*>::iterator i=m_DeviceWinMap.begin();
i!=m_DeviceWinMap.end(); i++)
{
{
if (i->second->m_DeviceGUI->GetPluginWindow())
{
SpiralPluginGUI *GUI=(SpiralPluginGUI *)i->second->m_DeviceGUI->GetPluginWindow();
GUI->Update();
}
if (i->second->m_DeviceGUI->Killed())
{
PauseAudio();
if (i->second->m_Device)
if (i->second->m_Device)
{
delete i->second->m_Device;
i->second->m_Device=NULL;
}
if (i->second->m_DeviceGUI->GetPluginWindow())
{
i->second->m_DeviceGUI->GetPluginWindow()->hide();
//m_MainWindow->remove(i->second->m_DeviceGUI->GetPluginWindow());
}
i->second->m_DeviceGUI->Clear();
m_Canvas->RemoveDevice(i->second->m_DeviceGUI);
// deleted by Canvas::Remove()? seems to cause random crashes
//delete i->second->m_DeviceGUI;
m_Canvas->RemoveDevice(i->second->m_DeviceGUI);
// deleted by Canvas::Remove()? seems to cause random crashes
//delete i->second->m_DeviceGUI;
m_DeviceWinMap.erase(i);
ResumeAudio();
break;
}
}
m_Canvas->Poll();
}

@@ -230,111 +228,112 @@ void SynthModular::UpdatePluginGUIs()

SpiralWindowType *SynthModular::CreateWindow()
{
int xoff=0, yoff=10, but=64, gap=MAIN_HEIGHT/5, n=0;
m_TopWindow = new SpiralWindowType(MAIN_WIDTH, MAIN_HEIGHT, LABEL.c_str());
m_TopWindow->resizable(m_TopWindow);
m_MainButtons = new Fl_Group(0, 0, but, MAIN_HEIGHT, "");
m_MainButtons->type(1);
m_MainButtons->color(SpiralSynthModularInfo::GUICOL_Tool);
m_MainButtons->box(FL_FLAT_BOX);
m_MainButtons->user_data((void*)(this));
m_TopWindow->add(m_MainButtons);

m_Load = new Fl_Button(xoff, 5+yoff, but, but, "");
m_Load->box(FL_NO_BOX);
//m_TopWindow->resizable(m_TopWindow);

int but=44;
int ToolbarHeight=but+20;

m_Topbar = new Fl_Pack (0, 0, MAIN_WIDTH, ToolbarHeight, "");
m_Topbar->user_data((void*)(this));
m_Topbar->type(FL_HORIZONTAL);
m_TopWindow->add(m_Topbar);

m_ToolbarPanel = new Fl_Pack (0, 0, but*5, ToolbarHeight, "");
m_ToolbarPanel->user_data((void*)(this));
m_ToolbarPanel->type(FL_VERTICAL);
m_Topbar->add(m_ToolbarPanel);

m_ToolbarFiller = new Fl_Group (0, 0, but*5, 20, "");
m_ToolbarPanel->add(m_ToolbarFiller);

m_Toolbar = new Fl_Pack (0, 0, but*5, but, "");
m_Toolbar->user_data((void*)(this));
m_Toolbar->type(FL_HORIZONTAL);
m_Toolbar->color(SpiralSynthModularInfo::GUICOL_Tool);
m_ToolbarPanel->add(m_Toolbar);

m_Load = new Fl_Button(0, 0, but, but, "");
Fl_Pixmap *tPix = new Fl_Pixmap(load_xpm);
m_Load->image(tPix->copy(tPix->w(),tPix->h()));
m_Load->image(tPix->copy());
delete tPix;
m_Load->type(0);
m_Load->box(FL_PLASTIC_UP_BOX);
m_Load->color(SpiralSynthModularInfo::GUICOL_Button);
m_Load->selection_color(SpiralSynthModularInfo::GUICOL_Tool);
m_Load->tooltip("Load a patch file");
m_Load->labelsize (1);
m_Load->tooltip("Load a patch file");
m_Load->callback((Fl_Callback*)cb_Load);
m_MainButtons->add(m_Load);
n++;
m_Save = new Fl_Button(xoff, n*gap+yoff, but, but, "");
m_Save->box(FL_NO_BOX);
m_Toolbar->add(m_Load);

m_Save = new Fl_Button(0, 0, but, but, "");
tPix = new Fl_Pixmap(save_xpm);
m_Save->image(tPix->copy(tPix->w(),tPix->h()));
delete tPix;
m_Save->image(tPix->copy());
delete tPix;
m_Save->type(0);
m_Save->box(FL_PLASTIC_UP_BOX);
m_Save->color(SpiralSynthModularInfo::GUICOL_Button);
m_Save->selection_color(SpiralSynthModularInfo::GUICOL_Tool);
m_Save->tooltip("Save a patch file");
m_Save->labelsize (1);
m_Save->tooltip("Save a patch file");
m_Save->callback((Fl_Callback*)cb_Save);
m_MainButtons->add(m_Save);
n++;
m_New = new Fl_Button(xoff, n*gap+yoff, but, but, "");
m_New->box(FL_NO_BOX);
m_Toolbar->add(m_Save);

m_New = new Fl_Button(0, 0, but, but, "");
tPix = new Fl_Pixmap(new_xpm);
m_New->image(tPix->copy(tPix->w(),tPix->h()));
delete tPix;
m_New->image(tPix->copy());
delete tPix;
m_New->type(0);
m_New->box(FL_PLASTIC_UP_BOX);
m_New->color(SpiralSynthModularInfo::GUICOL_Button);
m_New->selection_color(SpiralSynthModularInfo::GUICOL_Tool);
m_New->tooltip("New patch");
m_New->labelsize (1);
m_New->tooltip("New patch");
m_New->callback((Fl_Callback*)cb_New);
m_MainButtons->add(m_New);
n++;
m_Options = new Fl_Button(xoff, n*gap+yoff, but, but, "");
m_Options->box(FL_NO_BOX);
m_Toolbar->add(m_New);

m_Options = new Fl_Button(0, 0, but, but, "");
tPix = new Fl_Pixmap(options_xpm);
m_Options->image(tPix->copy(tPix->w(),tPix->h()));
delete tPix;
m_Options->image(tPix->copy());
delete tPix;
m_Options->type(0);
m_Options->box(FL_PLASTIC_UP_BOX);
m_Options->color(SpiralSynthModularInfo::GUICOL_Button);
m_Options->selection_color(SpiralSynthModularInfo::GUICOL_Tool);
m_Options->tooltip("Options");
m_Options->labelsize (1);
m_Options->tooltip("Options");
m_Options->callback((Fl_Callback*)cb_Rload);
m_MainButtons->add(m_Options);
n++;
m_NewComment = new Fl_Button(xoff, n*gap+yoff, but, but, "");
m_NewComment->box(FL_NO_BOX);
m_Toolbar->add(m_Options);

m_NewComment = new Fl_Button(0, 0, but, but, "");
tPix = new Fl_Pixmap(comment_xpm);
m_NewComment->image(tPix->copy(tPix->w(),tPix->h()));
delete tPix;
m_NewComment->image(tPix->copy());
delete tPix;
m_NewComment->type(0);
m_NewComment->box(FL_PLASTIC_UP_BOX);
m_NewComment->color(SpiralSynthModularInfo::GUICOL_Button);
m_NewComment->selection_color(SpiralSynthModularInfo::GUICOL_Tool);
m_NewComment->tooltip("New comment");
m_NewComment->labelsize (1);
m_NewComment->tooltip("New comment");
m_NewComment->callback((Fl_Callback*)cb_NewComment);
m_MainButtons->add(m_NewComment);
n++;
/////////////////

int edy = 0;
Fl_Group *Left = new Fl_Group(MAIN_WIDTH-TOOLBOX_WIDTH,0,TOOLBOX_WIDTH,MAIN_HEIGHT);
Left->box(FL_FLAT_BOX);
Left->color(SpiralSynthModularInfo::GUICOL_Tool);
Left->user_data((void*)(this));
m_TopWindow->add(Left);
m_GroupName = new Fl_Box(MAIN_WIDTH-TOOLBOX_WIDTH,0,TOOLBOX_WIDTH,16,"");
m_GroupName->labelsize(12);
m_GroupName->color(SpiralSynthModularInfo::GUICOL_Canvas);
m_GroupName->align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
m_GroupName->box(FL_BORDER_BOX);
Left->add(m_GroupName);
m_PluginGroupLeft = new Fl_Button(MAIN_WIDTH-TOOLBOX_WIDTH, 0, 16, 16, "@<");
m_PluginGroupLeft->callback((Fl_Callback*)cb_PluginGroupLeft);
Left->add(m_PluginGroupLeft);
m_Toolbar->add(m_NewComment);

m_PluginGroupRight = new Fl_Button(MAIN_WIDTH-16, 0, 16, 16, "@>");
m_PluginGroupRight->callback((Fl_Callback*)cb_PluginGroupRight);
Left->add(m_PluginGroupRight);
m_ToolBox = new Fl_Scroll(MAIN_WIDTH-TOOLBOX_WIDTH,0+edy+16,TOOLBOX_WIDTH, TOOLBOX_HEIGHT-16, "");
m_ToolBox->type(Fl_Scroll::VERTICAL_ALWAYS);
m_ToolBox->box(FL_FLAT_BOX);
m_ToolBox->labeltype(FL_ENGRAVED_LABEL);
m_ToolBox->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
m_ToolBox->scrollbar.align(FL_ALIGN_RIGHT);
m_ToolBox->color(SpiralSynthModularInfo::GUICOL_Tool);
m_ToolBox->user_data((void*)(this));
Left->add(m_ToolBox);
m_TopWindow->resizable(m_ToolBox);
m_CanvasScroll = new Fl_Scroll(but, 0, MAIN_WIDTH-TOOLBOX_WIDTH-but, MAIN_HEIGHT, "");
m_TopWindow->add(m_CanvasScroll);
m_GroupFiller = new Fl_Group (0, 0, 5, ToolbarHeight, "");
m_Topbar->add (m_GroupFiller);

m_GroupTab = new Fl_Tabs (0, 0, MAIN_WIDTH-m_GroupFiller->w()-but*5, ToolbarHeight, "");
m_GroupTab->user_data ((void*)(this));
m_GroupTab->callback((Fl_Callback*)cb_GroupTab);
m_Topbar->add (m_GroupTab);

m_Topbar->resizable(m_GroupTab);

/////////////////

m_CanvasScroll = new Fl_Scroll(0, ToolbarHeight, MAIN_WIDTH, MAIN_HEIGHT-ToolbarHeight, "");
m_TopWindow->add(m_CanvasScroll);
m_TopWindow->resizable(m_CanvasScroll);

m_Canvas = new Fl_Canvas(-5000, -5000, 10000, 10000, "");
m_Canvas->type(1);
m_Canvas->box(FL_FLAT_BOX);
@@ -345,55 +344,16 @@ SpiralWindowType *SynthModular::CreateWindow()
m_Canvas->SetConnectionCallback((Fl_Callback*)cb_Connection);
m_Canvas->SetUnconnectCallback((Fl_Callback*)cb_Unconnect);
m_Canvas->SetAddDeviceCallback((Fl_Callback*)cb_NewDeviceFromMenu);
m_CanvasScroll->add(m_Canvas);
m_CanvasScroll->add(m_Canvas);

m_SettingsWindow = new SettingsWindow;
m_SettingsWindow->RegisterApp(this);
return m_TopWindow;
}

//////////////////////////////////////////////////////////

SynthModular::ToolBox::ToolBox(Fl_Scroll *parent, void* user)
{
int Width = 40;
int Height = 40;
m_Icon=0;
m_ToolPack = new Fl_Pack(MAIN_WIDTH-TOOLBOX_WIDTH+5,20,TOOLBOX_WIDTH-10, TOOLBOX_HEIGHT-60,"");
m_ToolPack->type(FL_VERTICAL);
m_ToolPack->box(FL_NO_BOX);
m_ToolPack->color(SpiralSynthModularInfo::GUICOL_Tool);
m_ToolPack->user_data(user);
parent->add(m_ToolPack);
m_IconPack = new Fl_Pack(0,0,TOOLBOX_WIDTH-SLIDER_WIDTH,Height,"");
m_IconPack->type(FL_HORIZONTAL);
m_IconPack->color(SpiralSynthModularInfo::GUICOL_Tool);
m_IconPack->user_data(m_ToolPack->user_data());
m_ToolPack->add(m_IconPack);
}

void SynthModular::ToolBox::AddIcon(Fl_Button *Icon)
{
int Width = 40;
int Height = 40;
if (m_Icon>=ICON_DEPTH)
{
m_Icon=0;
m_IconPack = new Fl_Pack(0,0,TOOLBOX_WIDTH-SLIDER_WIDTH,Height,"");
m_IconPack->type(FL_HORIZONTAL);
m_IconPack->color(SpiralSynthModularInfo::GUICOL_Tool);
m_IconPack->user_data(m_ToolPack->user_data());
m_ToolPack->add(m_IconPack);
}
m_IconPack->add(Icon);
m_Icon++;
}

vector<string> SynthModular::BuildPluginList(const string &Path)
{
// Scan plugin path for plugins.
@@ -406,13 +366,13 @@ vector<string> SynthModular::BuildPluginList(const string &Path)
vector<string> ret;

dp = opendir(path);
if (!dp)
if (!dp)
{
cerr << "WARNING: Could not open path " << path << endl;
}
else
else
{
while ((ep = readdir(dp)))
while ((ep = readdir(dp)))
{

// Need full path
@@ -420,23 +380,23 @@ vector<string> SynthModular::BuildPluginList(const string &Path)
fullpath.append(ep->d_name);

// Stat file to get type
if (!stat(fullpath.c_str(), &sb))
if (!stat(fullpath.c_str(), &sb))
{
// We only want regular files
if (S_ISREG(sb.st_mode))
if (S_ISREG(sb.st_mode))
{

// We're not fussed about resolving symbols yet, since we are just
// checking if it's a DLL.
handle = dlopen(fullpath.c_str(), RTLD_LAZY);
if (!handle)
if (!handle)
{
cerr << "WARNING: File " << path << ep->d_name
<< " could not be examined" << endl;
cerr << "dlerror() output:" << endl;
cerr << dlerror() << endl;
}
else
}
else
{
// It's a DLL. Add name to list
ret.push_back(ep->d_name);
@@ -445,7 +405,7 @@ vector<string> SynthModular::BuildPluginList(const string &Path)
}
}
}
return ret;
}

@@ -457,14 +417,14 @@ void SynthModular::LoadPlugins(string pluginPath)

int SWidth = 256;
int SHeight = 256;
Fl_Pixmap pic(SSM_xpm);
Fl_Double_Window* Splash = new Fl_Double_Window((Fl::w()/2)-(SWidth/2),
(Fl::h()/2)-(SHeight/2),
SWidth,SHeight,"SSM");
Splash->border(0);
Fl_Box* pbut = new Fl_Box(0,8,SWidth,SHeight,"");
pbut->box(FL_NO_BOX);
pic.label(pbut);
@@ -516,37 +476,39 @@ void SynthModular::LoadPlugins(string pluginPath)
#endif

Fl_Button *NewButton = new Fl_Button(0,0,Width,Height,"");
NewButton->labelsize(10);
NewButton->user_data((void*)(this));
NewButton->labelsize(1);
Fl_Pixmap *tPix = new Fl_Pixmap(PluginManager::Get()->GetPlugin(ID)->GetIcon());
NewButton->image(tPix->copy(tPix->w(),tPix->h()));
delete tPix;

string GroupName = PluginManager::Get()->GetPlugin(ID)->GetGroupName();
ToolBox* Tool=NULL;
Fl_Pack* the_group=NULL;

map<string,ToolBox*>::iterator ti=m_PluginGroupMap.find(GroupName);
if (ti==m_PluginGroupMap.end())
// find or create this group, and add an icon
map<string,Fl_Pack*>::iterator gi=m_PluginGroupMap.find(GroupName);
if (gi==m_PluginGroupMap.end())
{
if (Tool) Tool->GetToolPack()->hide();
Tool = new ToolBox(m_ToolBox,(void*)(this));
m_PluginGroupMap[GroupName]=Tool;
Tool->GetToolPack()->hide();
the_group = new Fl_Pack (m_GroupTab->x(), 20, m_GroupTab->w(), m_GroupTab->h()-20, GroupName.c_str());
the_group->type(FL_HORIZONTAL);
the_group->labelsize(8);
the_group->user_data((void*)(this));
//m_GroupTab->add(the_group);
m_GroupTab->value(the_group);
m_PluginGroupMap[GroupName]=the_group;
}
else
{
Tool=ti->second;
the_group=gi->second;
}
Tool->AddIcon(NewButton);
NewButton->type(0);
NewButton->box(FL_PLASTIC_UP_BOX);
NewButton->align(FL_ALIGN_INSIDE|FL_ALIGN_TOP);
NewButton->type(0);
NewButton->box(FL_PLASTIC_UP_BOX);
NewButton->color(SpiralSynthModularInfo::GUICOL_Button);
NewButton->selection_color(SpiralSynthModularInfo::GUICOL_Tool);
the_group->add(NewButton);

string tooltip=*i;
// find the first / if there is one, and get rid of everything before and including it
// find the first / if there is one, and get rid of everything before and including it
unsigned int p = tooltip.find ('/');
if (p < tooltip.length()) tooltip.erase (0, p);
// find last . and get rid of everything after and including it
@@ -557,31 +519,28 @@ void SynthModular::LoadPlugins(string pluginPath)
splashtext->label (tooltip.c_str());
Splash->redraw();
NewButton->tooltip (tooltip.c_str());
NewButton->callback((Fl_Callback*)cb_NewDevice,&Numbers[ID]);
NewButton->callback((Fl_Callback*)cb_NewDevice,&Numbers[ID]);
NewButton->show();
m_DeviceVec.push_back(NewButton);
m_ToolBox->redraw();
m_DeviceVec.push_back(NewButton);
the_group->redraw();
m_NextPluginButton++;
Fl::check();
}
}
map<string,Fl_Pack*>::iterator PlugGrp;

for (PlugGrp = m_PluginGroupMap.begin(); PlugGrp!= m_PluginGroupMap.end(); ++PlugGrp)
m_GroupTab->add(PlugGrp->second);

// try to show the SpiralSound group
m_CurrentGroup=m_PluginGroupMap.find("SpiralSound");
if (m_CurrentGroup==m_PluginGroupMap.end())
{
// can't find it - show the first plugin group
m_CurrentGroup=m_PluginGroupMap.begin();
m_CurrentGroup->second->GetToolPack()->show();
m_GroupName->label(m_CurrentGroup->first.c_str());
}
m_CurrentGroup->second->GetToolPack()->show();
m_GroupName->label(m_CurrentGroup->first.c_str());
PlugGrp = m_PluginGroupMap.find("SpiralSound");
// can't find it - show the first plugin group
if (PlugGrp==m_PluginGroupMap.end()) PlugGrp=m_PluginGroupMap.begin();
m_GroupTab->value(PlugGrp->second);

Splash->hide();
delete Splash;
}
@@ -592,7 +551,7 @@ DeviceGUIInfo SynthModular::BuildDeviceGUIInfo(PluginInfo &PInfo)
{
DeviceGUIInfo Info;
int Height=50;
// tweak the size if we have too many ins/outs
if (PInfo.NumInputs>4 || PInfo.NumOutputs>4)
{
@@ -605,7 +564,7 @@ DeviceGUIInfo SynthModular::BuildDeviceGUIInfo(PluginInfo &PInfo)
Height=PInfo.NumInputs*10+5;
}
}
// Make the guiinfo struct
Info.XPos = 0;
Info.YPos = 0;
@@ -616,7 +575,7 @@ DeviceGUIInfo SynthModular::BuildDeviceGUIInfo(PluginInfo &PInfo)
Info.Name = PInfo.Name;
Info.PortTips = PInfo.PortTips;
Info.PortTypes = PInfo.PortTypes;
return Info;
}

@@ -626,9 +585,9 @@ DeviceWin* SynthModular::NewDeviceWin(int n, int x, int y)
{
DeviceWin *nlw = new DeviceWin;
const HostsideInfo* Plugin=PluginManager::Get()->GetPlugin(n);
if (!Plugin) return NULL;
nlw->m_Device=Plugin->CreateInstance();

if (!nlw->m_Device)
@@ -639,26 +598,26 @@ DeviceWin* SynthModular::NewDeviceWin(int n, int x, int y)
nlw->m_Device->SetUpdateCallback(cb_Update);
nlw->m_Device->SetParent((void*)this);

PluginInfo PInfo = nlw->m_Device->Initialise(&m_Info);
PluginInfo PInfo = nlw->m_Device->Initialise(&m_Info);
SpiralGUIType *temp = nlw->m_Device->CreateGUI();
Fl_Pixmap *Pix = new Fl_Pixmap(Plugin->GetIcon());
nlw->m_PluginID = n;

if (temp)
{
if (temp)
{
temp->position(x+10,y);
}
DeviceGUIInfo Info=BuildDeviceGUIInfo(PInfo);
Info.XPos = x; //TOOLBOX_WIDTH+(rand()%400);
Info.YPos = y; //rand()%400;
nlw->m_DeviceGUI = new Fl_DeviceGUI(Info, temp, Pix, nlw->m_Device->IsTerminal());
m_Canvas->add(nlw->m_DeviceGUI);
m_Canvas->redraw();

return nlw;
return nlw;
}

//////////////////////////////////////////////////////////
@@ -666,11 +625,11 @@ DeviceWin* SynthModular::NewDeviceWin(int n, int x, int y)
void SynthModular::AddDevice(int n, int x=-1, int y=-1)
{
//cerr<<"Adding "<<m_NextID<<endl;
if (x==-1)
{
x = m_CanvasScroll->x()+50;
y = m_CanvasScroll->y()+50;
{
x = m_CanvasScroll->x()+50;
y = m_CanvasScroll->y()+50;
}

DeviceWin* temp = NewDeviceWin(n,x,y);
@@ -687,7 +646,7 @@ void SynthModular::AddDevice(int n, int x=-1, int y=-1)
//////////////////////////////////////////////////////////

DeviceWin* SynthModular::NewComment(int n, int x=-1, int y=-1)
{
{
DeviceWin *nlw = new DeviceWin;

if (x==-1)
@@ -708,7 +667,7 @@ DeviceWin* SynthModular::NewComment(int n, int x=-1, int y=-1)
Info.NumInputs = 0;
Info.NumOutputs = 0;
Info.Name = "";
nlw->m_DeviceGUI = new Fl_CommentGUI(Info, NULL, NULL);
m_Canvas->add(nlw->m_DeviceGUI);
@@ -760,7 +719,7 @@ void SynthModular::UpdateHostInfo()
ifs>>*this;
system("rm -f ___temp.ssmtmp");
}

//////////////////////////////////////////////////////////
@@ -804,7 +763,7 @@ istream &operator>>(istream &s, SynthModular &o)
s>>EditWinX>>EditWinY>>EditWinW>>EditWinH;
//o.m_MainWindow->resize(MainWinX,MainWinY,MainWinW,MainWinH);
//o.m_EditorWindow->resize(EditWinX,EditWinY,EditWinW,EditWinH);
//o.m_EditorWindow->resize(EditWinX,EditWinY,EditWinW,EditWinH);
}
int Num, ID, PluginID, x,y,ps,px,py;
@@ -869,7 +828,7 @@ istream &operator>>(istream &s, SynthModular &o)
if (temp)
{
temp->m_DeviceGUI->SetID(ID);
if (ver>3)
if (ver>3)
{
// set the titlebars
temp->m_DeviceGUI->SetName(Name);
@@ -930,7 +889,7 @@ ostream &operator<<(ostream &s, SynthModular &o)
o.PauseAudio();

s<<"SpiralSynthModular File Ver "<<FILE_VERSION<<endl;
// make external files dir
bool ExternalDirUsed=false;
string command("mkdir "+o.m_FilePath+"_files");
@@ -960,7 +919,7 @@ ostream &operator<<(ostream &s, SynthModular &o)
s<<i->second->m_DeviceGUI->y()<<" ";
s<<i->second->m_DeviceGUI->GetName().size()<<" ";
s<<i->second->m_DeviceGUI->GetName()<<" ";
if (i->second->m_DeviceGUI->GetPluginWindow())
{
s<<i->second->m_DeviceGUI->GetPluginWindow()->visible()<<" ";
@@ -1068,13 +1027,13 @@ inline void SynthModular::cb_Save_i(Fl_Button* o, void* v)
if (!Pawfal_YesNo("File [%s] exists, overwrite?",fn))
{
return;
}
}
}
ofstream of(fn);
if (of)
{
{
m_FilePath=fn;
of<<*this;
@@ -1098,7 +1057,7 @@ inline void SynthModular::cb_New_i(Fl_Button* o, void* v)
if (m_DeviceWinMap.size()>0 && !Pawfal_YesNo("New - Lose changes to current patch?"))
{
return;
}
}

m_TopWindow->label(TITLEBAR.c_str());

@@ -1111,7 +1070,7 @@ void SynthModular::cb_New(Fl_Button* o, void* v)

inline void SynthModular::cb_NewDevice_i(Fl_Button* o, void* v)
{
AddDevice(*((int*)v));
AddDevice(*((int*)v));
}
void SynthModular::cb_NewDevice(Fl_Button* o, void* v)
{((SynthModular*)(o->parent()->user_data()))->cb_NewDevice_i(o,v);}
@@ -1136,36 +1095,26 @@ void SynthModular::cb_NewComment(Fl_Button* o, void* v)

//////////////////////////////////////////////////////////

inline void SynthModular::cb_PluginGroupLeft_i(Fl_Button* o, void* v)
// andy preston
inline void SynthModular::cb_GroupTab_i(Fl_Tabs* o, void* v)
{
m_CurrentGroup->second->GetToolPack()->hide();
m_CurrentGroup++;
if (m_CurrentGroup==m_PluginGroupMap.end()) m_CurrentGroup=m_PluginGroupMap.begin();
m_CurrentGroup->second->GetToolPack()->show();
m_GroupName->label(m_CurrentGroup->first.c_str());
m_GroupTab->redraw();
//m_CurrentGroup->second->GetToolPack()->hide();
//m_CurrentGroup = o->value();
// if (m_CurrentGroup==m_PluginGroupMap.end()) m_CurrentGroup=m_PluginGroupMap.begin();
// m_CurrentGroup->second->GetToolPack()->show();
// m_GroupName->label(m_CurrentGroup->first.c_str());
}
void SynthModular::cb_PluginGroupLeft(Fl_Button* o, void* v)
{((SynthModular*)(o->parent()->user_data()))->cb_PluginGroupLeft_i(o,v);}

//////////////////////////////////////////////////////////

inline void SynthModular::cb_PluginGroupRight_i(Fl_Button* o, void* v)
{
m_CurrentGroup->second->GetToolPack()->hide();
m_CurrentGroup++;
if (m_CurrentGroup==m_PluginGroupMap.end()) m_CurrentGroup=m_PluginGroupMap.begin();
m_CurrentGroup->second->GetToolPack()->show();
m_GroupName->label(m_CurrentGroup->first.c_str());
}
void SynthModular::cb_PluginGroupRight(Fl_Button* o, void* v)
{((SynthModular*)(o->parent()->user_data()))->cb_PluginGroupRight_i(o,v);}
void SynthModular::cb_GroupTab(Fl_Tabs* o, void* v)
{((SynthModular*)(o->parent()->user_data()))->cb_GroupTab_i(o,v);}

//////////////////////////////////////////////////////////

inline void SynthModular::cb_Rload_i(Fl_Button* o, void* v)
{
m_SettingsWindow->show();

/*PluginManager::Get()->UnloadAll();

m_ToolBox->remove(m_ToolPack);
@@ -1176,9 +1125,9 @@ inline void SynthModular::cb_Rload_i(Fl_Button* o, void* v)
m_ToolPack->box(FL_NO_BOX);
m_ToolPack->color(SpiralSynthModularInfo::GUICOL_Tool);
m_ToolPack->user_data((void*)(this));
m_ToolBox->add(m_ToolPack);
m_ToolBox->add(m_ToolPack);
m_ToolBox->redraw();
LoadPlugins();*/
}
void SynthModular::cb_Rload(Fl_Button* o, void* v)
@@ -1190,11 +1139,11 @@ inline void SynthModular::cb_Connection_i(Fl_Canvas* o, void* v)
{
CanvasWire *Wire;
Wire=(CanvasWire*)v;
map<int,DeviceWin*>::iterator si=m_DeviceWinMap.find(Wire->OutputID);
if (si==m_DeviceWinMap.end())
{
char num[32];
char num[32];
sprintf(num,"%d",Wire->OutputID);
SpiralInfo::Alert("Warning: Connection problem - can't find source "+string(num));
return;
@@ -1225,7 +1174,7 @@ inline void SynthModular::cb_Connection_i(Fl_Canvas* o, void* v)
sprintf(num,"%d,%d",Wire->InputID,Wire->InputPort);
SpiralInfo::Alert("Warning: Connection problem - can't find source input "+string(num));
return;
}
}
}
void SynthModular::cb_Connection(Fl_Canvas* o, void* v)
{((SynthModular*)(o->user_data()))->cb_Connection_i(o,v);}
@@ -1261,7 +1210,7 @@ void SynthModular::cb_UpdatePluginInfo(int ID, void *PInfo)
if (i!=m_DeviceWinMap.end())
{
DeviceGUIInfo Info=BuildDeviceGUIInfo(*((PluginInfo*)PInfo));
(*i).second->m_DeviceGUI->Setup(Info);
(*i).second->m_DeviceGUI->redraw();
}


+ 38
- 58
SpiralSynthModular.h View File

@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
*/

#ifndef SPIRALSYNTHMODULAR
#define SPIRALSYNTHMODULAR
@@ -29,6 +29,7 @@
#include <FL/Fl_Scroll.H>
#include <FL/Fl_Pack.H>
#include <FL/Fl_Tile.H>
#include <FL/Fl_Tabs.H>
#include <sstream>
#include <iostream>
#include <map>
@@ -52,7 +53,7 @@ class DeviceWin
public:
DeviceWin() : m_DeviceGUI(NULL) {}
~DeviceWin();
int m_PluginID;
SpiralPlugin* m_Device;
Fl_DeviceGUI* m_DeviceGUI;
@@ -63,20 +64,20 @@ class SynthModular
public:
SynthModular();
~SynthModular();
SpiralWindowType * CreateWindow();
void LoadPlugins(string pluginPath);
void Update();
void AddDevice(int n, int x, int y);
void AddComment(int n);
void ClearUp();
void UpdateHostInfo();
void ClearUp();
void UpdateHostInfo();
bool CallbackMode() { return m_CallbackUpdateMode; }
bool IsBlockingOutputPluginReady() { return m_BlockingOutputPluginIsReady; }
void UpdatePluginGUIs();
void LoadPatch(const char *fn);
void PauseAudio()
void LoadPatch(const char *fn);
void PauseAudio()
{
m_CH.Set("PauseAudio",true);
m_CH.Wait();
@@ -86,10 +87,10 @@ public:
{
m_CH.Set("PauseAudio",false);
}
// only for audio thread
bool IsPaused() { return m_PauseAudio; }
private:

vector<string> BuildPluginList(const string &Path);
@@ -101,66 +102,46 @@ private:

static DeviceGUIInfo BuildDeviceGUIInfo(PluginInfo &PInfo);

// currently static, to allow the callback
// cb_UpdatePluginInfo to access the map.
// currently static, to allow the callback
// cb_UpdatePluginInfo to access the map.
static map<int,DeviceWin*> m_DeviceWinMap;
int m_NextID;
int m_NextPluginButton;
int m_NextPluginButtonXPos;
int m_NextPluginButtonYPos;
static bool m_CallbackUpdateMode;
static bool m_BlockingOutputPluginIsReady;
string m_FilePath;
// Main GUI stuff
void CreateGUI(int xoff=0, int yoff=0, char *name="");
Fl_Group *m_MainButtons;

Fl_Pack *m_Topbar, *m_ToolbarPanel, *m_Toolbar;
Fl_Group *m_ToolbarFiller, *m_GroupFiller;
Fl_Button *m_Load;
Fl_Button *m_Save;
Fl_Button *m_New;
Fl_Button *m_OpenEditor;
Fl_Button *m_OpenEditor;
Fl_Button *m_Options;
Fl_Canvas *m_Canvas;
Fl_Scroll *m_CanvasScroll;
Fl_Scroll *m_ToolBox;
Fl_Button *m_NewComment;
Fl_Box *m_GroupName;
Fl_Button *m_PluginGroupLeft;
Fl_Button *m_PluginGroupRight;
Fl_Tabs *m_GroupTab;

Fl_Canvas *m_Canvas;
Fl_Scroll *m_CanvasScroll;

map<string,Fl_Pack*> m_PluginGroupMap;

class ToolBox
{
public:
ToolBox(Fl_Scroll *parent, void* user);
~ToolBox() {}
void AddIcon(Fl_Button *Icon);
Fl_Pack *GetToolPack() { return m_ToolPack; }
private:
Fl_Pack *m_ToolPack;
Fl_Pack *m_IconPack;
int m_Icon;
};
map<string,ToolBox*> m_PluginGroupMap;
map<string,ToolBox*>::iterator m_CurrentGroup;
SettingsWindow *m_SettingsWindow;

SpiralWindowType* m_TopWindow;

vector<Fl_Button*> m_DeviceVec;

ChannelHandler m_CH; // used for threadsafe communication
bool m_PauseAudio;

inline void cb_NewDevice_i(Fl_Button* o, void* v);
static void cb_NewDevice(Fl_Button* o, void* v);
inline void cb_NewDeviceFromMenu_i(Fl_Canvas* o, void* v);
@@ -179,21 +160,20 @@ private:
static void cb_Unconnect(Fl_Canvas* o, void* v);
inline void cb_Close_i(Fl_Window* o, void* v);
static void cb_Close(Fl_Window* o, void* v);
inline void cb_PluginGroupLeft_i(Fl_Button* o, void* v);
static void cb_PluginGroupLeft(Fl_Button* o, void* v);
inline void cb_PluginGroupRight_i(Fl_Button* o, void* v);
static void cb_PluginGroupRight(Fl_Button* o, void* v);

inline void cb_GroupTab_i(Fl_Tabs* o, void* v);
static void cb_GroupTab(Fl_Tabs* o, void* v);

inline void cb_Rload_i(Fl_Button* o, void* v);
static void cb_Rload(Fl_Button* o, void* v);
static void cb_Update(void* o, bool Mode);
static void cb_Blocking(void* o, bool Mode);
static void cb_Update(void* o, bool Mode);
static void cb_Blocking(void* o, bool Mode);
static void cb_UpdatePluginInfo(int ID, void *PluginInfo);

friend istream &operator>>(istream &s, SynthModular &o);
friend ostream &operator<<(ostream &s, SynthModular &o);
friend ostream &operator<<(ostream &s, SynthModular &o);
};

istream &operator>>(istream &s, SynthModular &o);


Loading…
Cancel
Save