Well, I went down and write the kind of software only a musician could
write, perfectly adapted to a musican's needs because the author is,
himself, a musician.
Unfortunately, those needs dwindled, as I spent so much time writing
software I didn't have any time to make music anymore.
So here's a brillintly conceived and hitherto well-executed program (I
spend nights figuring out the simplest way to accomplish the task at
hand, meticulously making use of advanced C++ features, and carefully
selecting only the best and most-updated of libraries).
Now I know this is some stuff people will want to use. Unfortunately,
using the thing's a little like eating fried zucchini only half fried,
of having a rare steak when all you can take is well done.
(Not a bad joke for a vegan, huh?)
I have to offer:
* A convenient framework that is tested and works. It tickles high
fidelity performance that I would not hesitate to use in professional
production out of your cheap old $10 computer keyboard through the use
of a smart little filtering algorithm. Using it, I have created the most
amazing sounds with ZynAddSubFX that I have heard to date, with
extremely little overhead. (Credit goes to Paul of course, I just the
thing a little I/O voodoo and dynamics)
* Using an input library platfrom that ALREADY HAS implementations for
all major windowing systems (including X11, native Mac, DirectFB for the
handheld people as well as some direct palm support). With this thing
eventually we will be using our our old palm pilots (or some version
thereof that includes WLAN) to remotely control our synths. Also, if
your inclination is to write something low level, thousands of users
will benefit from your work because you will code it not only for an
obscure music program but for a true Swiss Army Knife of I/O. Very
friendly developers and excellent recency of files.
* Using THE very best real-time cross-platform MIDI library. Very easy
to use, much easier than native ALSA and just as fast. Very portable, al
through!
* Ready road map adjusted perfectly to a real musician's needs in
professional production and performance. Be the man who made the star!
Features:
* Extremely accurate (<15 CPU cycles) response keyboard stroke to MIDI
converter
* Even more accurate Mouse to MIDI controller message converter
* Cheap keyboard support through elegant filter
* Extremely portable
* Very easy-to-use and widely supported hardware abstraction layer used
* Excellent portable real time MIDI library used from the famous STK
audio toolkit from the University of Columbia
* Rock solid stable
* Keyboard layout geared towards live performance
* Project page set up and ready to use, account data waiting for transfer
* Keystrokes read directly from hardware, no complexity through keymap
localization
* Support for text mode
Possibilitites for extension:
* XML based custom keymaps
* keymap creation and loading GUI
* friendly, untuitive libggi based GUI during play
* 'non-blocking' libgii keyboard driver for testing a synth while
manipulating parameters
I have a clear vision of this project and remain available for consultation.
Have fun with it guys! Eat up!
Carlo
Links to downloadable packages can be found here:
http://csound.sourceforge.net/
Changes in version 5.02:
2006-06-04 Michael Gogins <gogins(a)pipeline.com>
* Changed the MIDI interoperability opcodes (OOps/midiinterop.c)
midinoteoncps, midinoteonoct, midinoteonpch to leave key and
velocity unchanged for score-driven performance.
2006-06-04 Istvan Varga <ivarga(a)csounds.com>
* Engine/otran.c:
work around constndx() not being compiled correctly
2006-06-03 Istvan Varga <ivarga(a)csounds.com>
* Engine/fgens.c, InOut/libsnd_u.c, OOps/diskin.c, OOps/diskin2.c:
GEN01, diskin, diskin2, soundin: with an iformat value of -1,
reject headerless files, rather than assuming the same format
as the one specified on the command line
GEN01: added format codes 7 (8 bit unsigned), 8 (24 bit), and
9 (doubles)
* Engine/entry1.c, H/sndinfUG.h, OOps/sndinfUG.c:
filelen, filenchnls, filesr: added optional i-time argument that
defaults to 1, and if zero, will make the opcodes return zero on
headerless files rather than some possibly incorrect defaults
* Opcodes/fout.c:
fixed bug in fini opcode (negative numbers were read incorrectly)
* Engine/sread.c, Engine/swrite.c, Engine/twarp.c:
fixes to reading numbers in [] score expressions
fixed 's' and 'e' score opcodes with time parameter
2006-06-02 Istvan Varga <ivarga(a)csounds.com>
* New string opcodes:
Sdst strsub Ssrc[, istart[, iend]]
Sdst strsubk Ssrc, kstart, kend
ichr strchar Sstr[, ipos]
kchr strchark Sstr[, kpos]
ilen strlen Sstr
klen strlenk Sstr
Sdst strupper Ssrc
Sdst strupperk Ssrc
Sdst strlower Ssrc
Sdst strlowerk Ssrc
Sval getcfg iopt
ipos strindex Sstr1, Sstr2
kpos strindexk Sstr1, Sstr2
ipos strrindex Sstr1, Sstr2
kpos strrindexk Sstr1, Sstr2
* Engine/express.c, Engine/otran.c:
fixed parsing of numbers in exponential notation
also some parser fixes related to 0dbfs
2006-06-01 Istvan Varga <ivarga(a)csounds.com>
* Added callback interface to the software bus with named channels,
using new opcodes chnrecv and chnsend. The callback function can
be set with csoundSetChannelIOCallback().
2006-05-31 jpff <jpff(a)codemist.co.uk>
* util/sndinfo.c: Added option to print looping information etc.
2006-05-31 Istvan Varga <ivarga(a)csounds.com>
* InOut/widgets.cpp:
FLbutton type 1 callback now sets the output to "ion"
2006-05-30 Istvan Varga <ivarga(a)csounds.com>
* Opcodes/fout.c: new opcode: ficlose
2006-05-30 ma++ ingalls <matt(a)sonomatics.com>
* aops.c, aops.h, csound.h:
invalue/outvalue updates as per Istvan's comments
* csound.c: changed "early return" comments to debug only
* hetro.c: added pollevents inside processing loop
* lpanal.c: added warning message with -g flag
* sockrecv.c: took out usleep() declaration - was causing compile error
2006-05-28 ma++ ingalls <matt(a)sonomatics.com>
* frontends/CsoundX: added to cvs
* aops.c, entry1.c, entry1.h, csound.h:
added hack to invalue/outvalue to support strings
2006-05-27 Istvan Varga <ivarga(a)csounds.com>
* Added ATS analysis utility.
2006-05-26 ma++ ingalls <matt(a)sonomatics.com>
* frontends/CsoundVST/AEffect.h:
commented out 2 PRAGMAS causing compile error on mac
* Opcodes/vst4cs/vsthost.c:
added plug-in loading for MACH-O mac.
commented out #includes that caused compile error on mac
* Opcodes/vst4cs/vsthost.h:
commented out #includes that caused compile error on mac
* Opcodes/vst4cs/fxbank.h:
commented out #includes that caused compile error on mac
* OOps/aops.c:
added i-rate support to invalue/outvalue
2006-05-24 Istvan Varga <ivarga(a)csounds.com>
* InOut/rtalsa.c: changed default device from "default" to "plughw"
* InOut/rtjack.c: list available device names for -i adc or -o dac
if an invalid device is specified
2006-05-23 Istvan Varga <ivarga(a)csounds.com>
* Opcodes/ugnorman.c: fixed "not initialised" bug in ATSbufread
2006-05-22 Istvan Varga <ivarga(a)csounds.com>
* OOps/midiops.c:
massign(): interpret channel number <= 0 as all channels
* H/csoundCore.h, Top/csound.c:
added new function GetCurrentThreadID() to CSOUND structure
2006-05-21 Michael Gogins <gogins(a)pipeline.com>
* New API function: csoundGetCurrentThreadId()
2006-05-20 Istvan Varga <ivarga(a)csounds.com>
* Opcodes/stackops.c: added new stack opcodes (stack, push, pop,
push_f, pop_f); also moved monitor opcode here.
* Reworked user defined opcodes to allow for up to 256 input/output
arguments.
* Opcodes/bilbar.c: removed use of C++ style comments.
2006-05-16 jpff <jpff(a)codemist.co.uk>
* Engine/entry1.c: Change args of xin to match OPCODENUMOUTS
2006-05-15 Anthony Kozar <anthonykozar(a)sbcglobal.net>
* Top/cscormai.c: Fixed #includes.
* interfaces/CsoundFile.cpp: isspace() is in <cctype> and supposed
to be in std namespace
* H/csoundCore.h: Increased OPCODENUMOUTS to 64 as requested.
2006-05-15 Istvan Varga <ivarga(a)csounds.com>
* Opcodes/monitor.c:
added new opcode: monitor
2006-05-14 jpff <jpff(a)codemist.co.uk>
* util/pvlook.c (pvlook): Rewritten for .pvx format
2006-05-13 jpff <jpff(a)codemist.co.uk>
* util/pvanal.c: Added -B # argument to give a beta to the Kaiser
window; still defaults to 6.8
2006-05-12 Istvan Varga <ivarga(a)csounds.com>
* frontends/csound/csound_main.c:
overwrite old log files, rather than appending messages
2006-05-08 Istvan Varga <ivarga(a)csounds.com>
* New API functions:
csoundCreateMutex, csoundLockMutex, csoundLockMutexNoWait,
csoundUnlockMutex, csoundDestroyMutex, csoundRunCommand
2006-05-04 Istvan Varga <ivarga(a)csounds.com>
* InOut/rtalsa.c:
added new "devfile" MIDI driver that uses device files in /dev,
based on code from Csound 4.23 mididevice.c
2006-05-03 Istvan Varga <ivarga(a)csounds.com>
* InOut/FL_graph.cpp, InOut/widgets.cpp:
* InOut/winFLTK.c, InOut/winFLTK.h:
added more FLTK flags (see winFLTK.h)
2006-05-02 Istvan Varga <ivarga(a)csounds.com>
* InOut/widgets.cpp, InOut/winFLTK.c, InOut/winFLTK.h:
disable threads by default if graphs are used
* OOps/sndinfUG.c:
filepeak opcode now uses PEAK chunks with libsndfile >= 1.0.16
2006-04-30 Istvan Varga <ivarga(a)csounds.com>
* Attempt to fix thread locks on MacOS X.
* util/srconv.c:
fixed output amplitude when downsampling
allow utility to be stopped by yield callback
* install.py, installer/misc/mkpackage.py:
install TclCsound command documentation
2006-04-29 Istvan Varga <ivarga(a)csounds.com>
* Made it possible to control the behavior of the FLTK plugin
from the host application. This can be done with the following
code between calling csoundPreCompile() and csoundCompile():
CSOUND *csound;
...
csoundCreateGlobalVariable(csound, "FLTK_Flags", sizeof(int));
*((int*) csoundQueryGlobalVariable(csound, "FLTK_Flags")) = flags;
where 'flags' can be the sum of any of the following values:
1: disable widget opcodes
2: disable FLTK graphs
4: disable the use of a separate thread for widget opcodes
8: disable the use of Fl::lock() and Fl::unlock()
16: disable the use of Fl::awake()
additionally, after calling csoundCompile(), the same variable
can be checked to find out if graphs or widget opcodes are used:
32: FLrun opcode was called
64: callbacks for FLTK graphs are set
* Top/main.c:
fixed crash on registering opcodes from the host application
* frontends/fltk_gui:
new GUI frontend that uses the Csound 5 API and FLTK
2006-04-19 Michael gogins <gogins(a)pipeline.com>
* Updated Lua to version 5.1 (current version),
changed lua_example.lua to use Class:method calls.
2006-04-17 John ffitch <jpff(a)codemist.co.uk>
* Opcodes/bilbar.c: Added prepared piano string model
* H/entry1.h:
* Engine/entry1.c: Added remove opcode. Probably should be an API
function rather than opcode
* Engine/insert.c (delete_instr): New code to delete non-active
instruments. Still needs to be checked as it may leave structures
dangling.
2006-04-15 Istvan Varga <ivarga(a)csounds.com>
* Engine/namedins.c, Engine/otran.c:
optimizations in orchestra parser
* interfaces/lua_interface.i:
wrap cs_glue.hpp and csPerfThread.hpp
2006-04-09 Istvan Varga <ivarga(a)csounds.com>
* Engine/envvar.c:
csoundFileOpen(): check for files with .sd2 extension, and use
sf_open() in this case if sf_open_fd() fails
* InOut/FL_graph.cpp:
wait for the window to be closed by the user at end of performance
* InOut/libsnd.c:
fixes in enabling peak chunks and dithering
* InOut/libsnd_u.c:
type2string(): added SD2 to file types
* InOut/rtpa.c:
print warning if the buffer size (-b) is not an integer multiple
of ksmps in full-duplex mode
* InOut/window.c:
moved deferred loading of widgets plugin from main.c to make graphs
work in utilities
* Opcodes/compress.c:
made rms levels relative to 0dBFS in distort opcode
* H/csoundCore.h, Top/csound.c:
added dispinit() function pointer to CSOUND structure,
for use by utilities
* H/version.h:
updated API version to 1.01 to reflect change to CSOUND structure
* util/pvanal.c:
implemented graph displays (limited to 30 frames at this time)
* util/sndinfo.c:
clear SF_INFO structure before calling sf_open()
2006-04-08 Istvan Varga <ivarga(a)csounds.com>
* OOps/sndinfUG.c:
restored filepeak opcode
2006-04-07 Istvan Varga <ivarga(a)csounds.com>
* H/version.h:
updated version number to 5.02.0 to reflect addition of new opcodes
* Opcodes/compress.c:
fixed a few minor errors
2006-04-04 Michael Gogins <gogins(a)pipeline.com>
* Changed FluidSynth opcodes slightly, with
fluidEngine iChorusOn, iReverbOn
pfields, defaulting to "on"; this can reduce noise in low frequencies
in SoundFont rendering.
* Updated Windows FluidSynth opcodes to use latest FluidSynth sources.
2006-03-28 jpff <jpff(a)codemist.co.uk>
* Opcodes/compress.c: New code for distort and compress/expander
from Barry Vercoe
2006-03-25 Istvan Varga <ivarga(a)csounds.com>
* Engine/entry1.c, H/aops.h, H/entry1.h, OOps/bus.c, opcodes.dir,
Opcodes/pitch.c, Opcodes/pitch.h, Opcodes/spectra.c, Top/csound.c:
fixes in sensekey opcode
2006-03-22 Michael Gogins <gogins(a)pipeline.com>
* Added ScoreGeneratorVST, a VST plugin for generating scores in VST
hosts using Python.
* Updated Windows installer for new targets, including Winsound.
2006-03-22 Istvan Varga <ivarga(a)csounds.com>
* interfaces/cs_glue.cpp:
* interfaces/cs_glue.hpp:
- added new classes to wrap MIDI I/O:
CsoundMidiInputStream sends MIDI input messages
CsoundMidiOutputStream polls MIDI output messages
- added MIDI I/O callbacks to CsoundCallbackWrapper
- made it possible to use the message buffer in multiple threads,
to allow for redirecting the message output of a
CsoundPerformanceThread
2006-03-21 Istvan Varga <ivarga(a)csounds.com>
* SConstruct, Makefile-win32:
renamed Csound library to csound{32,64}.dll.5.1 on Windows
* SConstruct:
attempts to fix install target (still needs a lot of work)
* Engine/namedins.c, OOps/bus.c:
fixed a-rate channel allocation in user defined opcode with
local ksmps
* Engine/linevent.c:
various minor fixes and code improvements
>From: Alex <x37v.alex(a)gmail.com>
>
>Does anyone have a link to a reference about making apps with real
>time priority capabilities?
>I figure I can just look at jack but it would be nice see some
>tutorial, to learn what is actually happening/necessary, trade-offs,
>etc.
I suggest to look at source codes. They give up-to-date info
and a working solution. Saves time.
There are also documentation on general realtime programming.
E.g., I have found the following:
http://www.funet.fi/~kouhia/APS33DTE.PDFhttp://www.funet.fi/~kouhia/sgirealtime.pdfhttp://www.funet.fi/~kouhia/sgitopics.pdf
More recent versions could be found if you check their site.
Other system makers could have equivalent docs (apple, microsoft).
Juhana
--
http://music.columbia.edu/mailman/listinfo/linux-graphics-dev
for developers of open source graphics software
Sorry to be vague, basically, what I want to do is create a timer for
an "event" sequencer I'm writing (which I will use to write music
compositions, video, etc). I cannot find "event timers" that will
give me accuracy of less than 1ms, so I'm using a 1ms resolution event
timer and after that polling the time of day in order to get to the
time I want. I'm trying to achieve ~256-900 event clock "ticks" per
second and minimize jitter.
First off, if anyone has advice for implementing such a timer I'd
appreciate it, but second, I'm wondering how I can make my program
have "real time" priority such that when a signal is created by this
1ms resolution event timer my app is quickly made to respond to the
signal and so this can be done as a user, [using set_rlimits, pam or
what have you (this is what i was talking about in my first email)].
Also, as I figure missed ticks are probably inevitable, I'm trying to
figure out a way to make my program robust to missed clock ticks [so
that over time i am still on beat].
Thank you,
Alex Norman
>
> On Fri, 02 Jun, 2006 at 01:06AM +0200, Jens M Andreasen spake thus:
> > On Thu, 2006-06-01 at 10:06 -0700, Alex wrote:
> > > Does anyone have a link to a reference about making apps with real
> > > time priority capabilities?
> >
> > As such there is no difference between an RT app and a not RT app,
> > except that the former varity might not work as advocated ....
>
> I think he meant: how you demand RT priority and what you should do
> not to screw it up once you have it.
>
> > > I figure I can just look at jack but it would be nice see some
> > > tutorial, to learn what is actually happening/necessary, trade-offs,
> > > etc.
> > >
> > > thanks,
> > > Alex Norman
Does anyone have a link to a reference about making apps with real
time priority capabilities?
I figure I can just look at jack but it would be nice see some
tutorial, to learn what is actually happening/necessary, trade-offs,
etc.
thanks,
Alex Norman
So:
I have visited six motnhs ago the freebob site and became very curious
about Quatafire 610 under linux...
The site has not changed to much since then. Any news?
It would be a very nice interface to use in any system. (linux, mac,
win...) I have particular interest in intercative music on Puredata then
low latency would be a important thing..
Another thing that would be nice know is if anyone knows about freebob
integration on Debian based distros like Ubuntu.
I thanks anyone that has news or sugestions (not RME, please: to high
prices on my country).
J.H.
_______________________________________________________
Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no celular e anti-spam realmente eficaz.
http://mail.yahoo.com.br/
Hi all,
I've been working on a host library for LV2 plugins. It's at the point
where everything is working (LV2 plugins are working in Om right now),
so I'd like some feedback on the API from anyone who's interested before
it gets too entrenched. The primary design goal is to be as simple and
terse as possible for the host author, so if you would prefer something
was different let me know.
A simple (working) Jack host:
http://www.scs.carleton.ca/~drobilla/files/slv2_jack_host.c
Doxygen documentation:
http://www.scs.carleton.ca/~drobilla/files/libslv2_doc/
(Anything having to do with SLV2Property is still hairy, everything else
is fair game). And no, you can't have the code yet. Steve would hang
me. :)
Cheers,
-DR-
Hi all,
I had to familiarize myself with python for work, and I took it as an
opportunity to hack on something I've want for some time now. I have
these behringer control surfaces, and they are pretty cool, but there is
no editor for them on linux. And using the device interface itself is a
little cumbersome.
So I figured out the sysex format (the patch dump format from "edit +
>") and wrote a parser for it in python. I also have a small PyQt
inteface (had to learn that too) that allows you to load files, change
the values and save them as a new file.
Note that this is very basic & non-bugfree software. No checking
whatsoever is performed on the sysex files, so if your control surface
displays "ERR" when you send a sysex file, you're probably violating the
format. The GUI is also limited to changes on existing files only.
I put this code online because I think it might be a nice starting point
for somebody that want's to write a real editor. It shouln't be that
hard (mostly GUI design), and they can use this code to further explore
the sysex format. I'm not planning to work on this any further because
(1) it serves my needs and (2) I need my time for other projects (most
notably freebob).
Anyway, you can find the code here:
http://freebob.sourceforge.net/old/bcx2000edit.tar.gz
Let me know if you start something with it.
Greets,
Pieter
A couple of years ago I started writing a tracker-like GUI program to
control Csound, but then I mostly lost interest in Csound and forgot
about it. It's a bit like Buzz or Psycle or Octal in that it has a
built-in "modular synth" where you connect Csound instruments and a
traditional tracker-style pattern editor.
It probably doesn't work with recent Csound versions and probably
doesn't even build with recent compilers and libraries, and I'm not
going to hack any more on it. But if anyone is interested in taking
over, the source and other things can be found here:
http://keso-project.sourceforge.net/
I'd be happy to hand over the SF project if anyone is interested.
--
Lars Luthman - please encrypt any email sent to me if possible
PGP key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x04C77E2E
Fingerprint: FCA7 C790 19B9 322D EB7A E1B3 4371 4650 04C7 7E2E
Hi I'm currently writing on a loop based midi sequencer.
My problem is that I want to get Hardware synced via midi clock.
I've read that the midi-clock signal is send 24 times in a quarter note.
My sequencer is network based.
So there is one time-server which sends a tcp packet with every 256 note.
But when I want it to send the midi-clock signal it would be send every 2+2/3 note. Which is not possible.
Do you see any solution?
--
A sine curve goes off to infinity, or at least the end of the blackboard.
-- Prof. Steiner