
AT some point I must cleanup this

- split the marsyas library into a set of smaller libraries
  (definitely post-0.3)




python bindings msl interpreter with vertical syntax msl interpreter
with chuck-like syntax SDIFF IO Open Sound Control (OSC)



@node Users and Projects
@chapter Users and Projects

One of the greatest feelings a researcher/programmer can have is
learning about people around the world doing exciting things with
her/his software. There have been many amazing projects done with
Marsyas and I hope to include them all in this section.  If you are
working on Marsyas and your name is not here, I would love to learn
about your project and include it in this section. Also send me an
email if you are one of the people mentioned in this section and you
have some more information about how marsyas was used in your project.
I would also like to thank all of you who have found Marsyas 
useful and helped me make it a better software framework.



(NOTES TO MYSELF about what I should write) 

Mark Cardle
Moodlogic 
AllMusic Inc. The Netherlands
IslandGame 
Luis Gustavo Martins 
Stephaan Lippens 
Tao Li 
Karin Koshina ??? (spelling) 
Kris  ??? (spelling) 
George Tourtellot 
Corrie Elder 
Kris West



@c  was in "tools" chapter.  Doesn't belong.  Since this stuff is
@c  probably hopelessly broken anyway, I nominate we just delete it. -gp
The subdirectory distributed contains sources and sinks that can 
be used to transmit sound and in general marsyas data over 
the network using TCP and UDP protocols. It enables cool 
thing like reading soundfiles on one computer sending fft 
frames for analysis to multiple computers and then 
assembling the results. The actual code has only be tested 
under Linux and is under construction so you at your own risk 
or even better fix the problems. 


----

Think about disable/enable MFCC coefficients 
Fix up and incorporate MarSystemBuilder
Port eigenvector/eigenvalue calculation from 
Kris West code 
Implement MDS, PCA 
Test LPC features for classification 
Write classification infrastructure ala Weka 
Port Intellitrance to QT4 
Write QT4 GUI for bextract 
Do a Marsyas GL widget 
Check error messages for unknown controls
Add make source_doc for running doxygen 
Port marsyasTests to Windows 




















OLD TODO LIST 
--------------

DOCUMENATION: Add links to QT3, QT4, mad, readline 
deprecate all QT3 interfaces and port them QT4 
add Wiki link to webpage 
add Source code documentation to webpage 
check wav files written under Linux with Windows matlab
check Musescape on other platforms
check how to add images to distribution of musescape 
change bextract accumulator to be sample rate invariant
cleanup Musescape code especially glWidget 




BiQuad 	       from STK 
NoiseSource    from STK
 
ADSR           from STK 
LPC 	    from marsyas-0.1 
PCA 	    from Kris West sources 
Delay, DelayL  from STK 
Matrix inverse from marsyas-0.1 fmatrix 



Short-term goals 
----------------

Mail Gary about vertical syntax 
idea for chuck - maybe write 
a syntax-level preprocessor 

Mail gary of wrapping sfplay 
in chuck 

Tell Adam to do cindex stuff 
in the marsyas documentation 


Have Stuart port snd-peak into Marsyas-0.2 

THINK ABOUT changing how multi-channel 
audio is handled (instead of interleaving 
turn into observations - propagate 
channels across network behind the scenes) 
(that way multiple microphone input can 
be handled) 

Make NoiseSource 

rewrite MFCC in more modular 
fashion allowing experimentation 
with different front-ends 

test all executables 
rewrite all of them using MarSystemManager 
(phase out completely new) 
start rewriting stuff using new link capability 

Think about MarSystemDelegate (smart pointer). 

write Recorder Marsystem that converts 
controls to extra observation 
streams

implement similarity matrix analysis 

look into Xavier's, Geoffroy papers 
and the real-time features 


idea: a recorder MarSystem 
wraps around any MarSystem 
Any time a control is directed to it 
it converts the value and stores it 
as an observation. (maybe think about 
interpolation instead of step functions) 
then player MarSystem does the opposite 

try if existing default propagation 
of controls could be modeled with default 
linkage 

figure out compiler optimization flags for 
g++ 

convert all formats to XML/binary formats


cleanup and fix based on synonyms and 
using the manager for all executables 

port the code of gmpg into marsyas 0.2 
with modularization 


look into SDIF output/input for Marsyas 
check out FTM (faster than music -diemo) 
check out Open Sound World (OSW) 

Write some sml code for ogranizing my papers 

FIX LABEL output in arff output (use Confidence code) 
Why does phasevocoder not work with RtAudio output 
Explore alternatives to popt 
make mini-marsyas for porting 
Do performance experiments on feature extraction 
Add support for more file formats/options 
Possibly add optional support for external soundfile library
Write some decent regression for Marsyas 
Write link method in Composites and rewrite 
phasevocoder based on it 
figure what's wrong with pitch extractor 

write marsyas 0.1 filesink 
experiment with different beat histogram features 
check why discrepancy with marsyas 0.1 
standarize flag 
write ArffFileSource 
fix pitch extract to use series and accumulator properly 
automatic gui generator 
experiment with gcc flags for faster performance 
make MarSystem into Delegate
make collection format more flexible without breaking compatibility 
CLEANUP THE NETWORK MESS 
try to cleanup code in composite 
explore the use of accumulator for confidence calculation 

try calculating feature in one process without Accumulator 
using the multispan centroid  


export XML format for itunes 
write marsyas plugins for VST, itunes etc 
interface with Audacity 
port basic classifier architecture from Weka 

DOWNLOAD ATS (Juan Pampin - UW) port to Marsyas 

Make good figure of composites / basic architecture for manual 
MAIL ROGER ABOUT SOUNDFILE + unpublished paper 

UML diagram for marsyas


clean-up and check phasevocder making real/non-real time flag 
play with spectral tuning on the phasevocoder 
(do residual) 

implement LPC 

make windows sampling rate invariant 

THINK about how to avoid specific input/output messages messages 
in plugins (maybe only start-stop with 
asking whether it supports filename, channels + 
linking) 

write mixer gui 

start babymarsyas-0.2 in Java

figure out how to change view qt interfaces 
to different filenames + change code 
(correct path etc) - ask sbray 

email Roger about expressivity examples 
of patches - unit generators etc 


Make more use of FileName class - revise it's implementation 
Make Stuart's code view code available on sourceforge
after editing - fixing it 

Make general debug/inspection facility 

XML parser for network format 
Make autoconf stuff for chuck 

Check out Aura, Open Sound World 
Add const where required 
MarFileSink
Filter MarSystem 
Roger's example 
Soundfile mixer program using Fanin 
Waveloop ala STK 
in-memory soundclip SignalSource 
think about FFTW, libsnd wrappers 
convert AUDIO to Singleton 
PCA 

change pitch extract to use accumulator for plots 
fix/debug pitch_extract 
matlab file extraction in bextract 
ascii/binary file output for data storage 
server of marsyas-0.2 to talk with marsyasEditor 
LPC from marsyas-0.1 
Nearest Neighbor classifier 
add attribute/class names to bextract 
add RASTA-PLP features 
add gmpg decoding ala marsyas-0.1 
implement PCA 


Network: get microphone input working 
Network: merge Socket.cpp (used for controls) 
with your socket stuff 






Long-term goals 
---------------

Documentation 
	Separate documentation 
	Code 
	User 

Interactive Interpreter 
	Parsing/Interpretation 


Patch-connection like GUI 
	

Automatic GUI construction tool for arbitrary MarSystems 
	configuration step 


Porting parts of STK into Marsyas 

Port parts of HTK into Marsyas 



Syntax ideas:

Series playbacknet
(
   SoundFileSource src
   Gain     gt
   Spectrum spk
   Fanout fanout
   ( 
	Centroid cntrd
	Rolloff  rolloff
	Flux     flux 
   ) 
)  

0.2  => Series/playbacknet/Gain/gt/real/gain 
0.2  +=> Series/playbacknet/Gain/gt/real/gain
playback.gain ~ Series/playback/Gain/gt/real/gain
0.2  => gain

while(true) 
{
   0.2  => playback.gain
   // advance time by 800 ms
   800::ms => now;
   0.1  => Series/playbacknet/Gain/gt/real/gain

   std.rand2(2,6)::second => now;
}
 


series string/filename = "out.au" 
run series
	
THINK ABOUT USING now ala chuck 



http://auracle.org 







