On this page you'll (hopefully) find answers to your questions about Keso. If you have a question that isn't on this page, send it to me.
Keso is meant to be an easy-to-use user interface for the very powerful but not so userfriendly softsynth Csound. Csound is a command-line program that reads orchestra and score definitions from script files and generates sound that can be written to the soundcard or to a file. In Keso you create an orchestra by connecting instruments to each other in a GUI, and you write the score in a tracker-like interface by creating patterns of notes and arranging those patterns in sequences. When you want to hear the result you push a button, and Keso generates the Csound files and starts Csound to generate sound.
It used to be an acronym for KDE Editor for Scores and Orchestras, but now I'm using GTK-- instead of KDE, so I'm not sure what the K stands for. Kickass Editor for Scores and Orchestras? Or maybe a recursive acronym: Keso is an Editor for Scores and Orchestras?
Me, Lars Luthman. I am a Computer Science student at KTH in Stockholm, Sweden. If you want to contact me, use this address: larsl@users.sourceforge.net.
The music in a Keso document is divided into tracks. Each track is associated with an instrument, a list of patterns, and a pattern sequence. An instrument may have any number of inputs and outputs, as long as Csound can handle it. Each input and output has a predefined rate, which can be one of a-rate (for audio data), k-rate (for control data), or i-rate (for instrument initialization data). An output can be connected to an input, and then the data that is generated at the output will go directly into the input that it's connected to. You could, for example, connect the output of a sample playing instrument to the audio input of a low-pass filter instrument, and then connect the output of that instrument to the input of an instrument that plays the data. Each input is in one of several modes, connection mode for inputs that should get their data from inputs, pattern mode for inputs that should get their data from note patterns, or constant mode for inputs that should have a constant value. The mode of an input can be changed.
A pattern is a collection of rows where each row may contain note on/off signals and input values to the inputs in pattern mode. Typically, you use patterns to store melodies and beats, which can be arranged in a sequence. A sequence is a list of patterns that specifies the order in which the patterns should be played. The difference between the pattern-sequence model used in Keso and the model used in "classic" trackers such as FastTracker is that Keso uses one sequence for each track (like Buzz) and FastTracker uses one sequence for all tracks in the document.
The full (non-development) version of Keso will come with a library of predefined instruments. There will be generic instruments for common synthesis methods (subtractive synthesis, FM (PM?), waveshaping...), effects (filters, reverbs, distortion...) and other instruments.
The instruments are stored as text files with Csound macros and some other information on lines beginning with ";!". Since everything on a line after ";" is ignored by Csound, these instruments can be used in a regular Csound orchestra. You just #include the instrument file.
Keso is being developed on GNU/Linux, so the first versions will probably only be available for UNIX-like systems. But I am trying to keep the "kernel" classes as portable as possible, so hopefully it shouldn't be too hard to make it work on other platforms.
Keso is free software, which means that you can download the source code and change it in any way you like. I will try to make the GUI easy to extend and modify by splitting it into separate editors (an orchestra editor, a pattern editor, a sequence editor etc). If you don't like the original pattern editor, you can write your own and replace it. Or you could use both. If you make any modifications to Keso that you think should be in the official version, let me know. If I like it I'll include it in the next version.
I'm planning to embed a scripting language, for algorithmic composition and other neat things. I haven't decided on a language to use yet, but it will probably be TCL or Guile. I'll create a separate editor for the interpreter, so if you don't want scripting abilities you can simply remove that editor.
The current version should be usable, even if it doesn't have all features that I've planned. Those will come in 0.4. I can't really give any release dates, because I don't know how much I'll be able to work on this project.