David Griffiths wrote:
> Paul Winkler wrote:
> > monosynths are great fun too (I have an SH-09!).
>
> That's quite ironic, I started making SpiralSynth to stop myself from buying
> one of them. I also borrowed a friend's Moog Rogue for a few weeks, while I
> was designing SpiralSynth, I was hoping some of the magic might rub off!
> They are such nice things to play with, even when your not really thinking
> about what your doing you can come up with some really nice sounds. They are
> just too damn expensive :(
Yep, it helps to find a friend who never plays anymore who has old
gear lying around. :) Now if only I could talk my dad out of his
juno-60...
> > 1) Raw MIDI input from any user-selected device including named
> > pipes or STDIN.
>
> The file it reads midi from is specified in the .Spiralrc file (I don't know
> if that helps)
I actually tried it before I wrote, but I just tried again and this
time I did it right!
To get input from stdin, put this in .Spiralrc:
Midi = /dev/fd/0
I have a little test program that spits out midi bytes to stdout; I
can now use this like so:
./p1.py | ./SpiralSynth-i386Linux-0.1.4
Or to use a named pipe instead of stdin:
put this in .Spiralrc:
Midi = ./Foo
Then do this:
mkfifo Foo
./p1.py > Foo&
./SpiralSynth-i386Linux-0.1.4
Very cool! This is a great way to create Spiral sounds because you
don't have to play the keyboard while you tweak.
Here's the test script:
#!/usr/bin/python
#
# spew a random pattern in midi :)
# Copyright (c) 1999 Eric S. Tiedemann
# Released under the GPL (version 2 or later; see file COPYING)
### comments added by Paul Winkler
import struct
import time
import sys
def non(k, v):
### 4-byte midi message. k="key", v="velocity"
### Stuff that into 3 bytes and write to stdout.
sys.stdout.write(struct.pack('BBB', 0x90, k, v))
sys.stdout.flush()
def r(s): # delay between notes
time.sleep(s)
def p1(k, s, h, o, t = 1):
# k, s, h, and o are key values
# for a 4-note pattern.
# t is time scale for rests. larger = slow down.
non(k, 80)
r(1 * t)
non(k, 60)
r(1 * t)
non(s, 60)
r(1.5 * t)
non(h, 60)
r(1.5 * t)
non(k, 60)
r(1 * t)
non(s, 60)
r(1 * t)
non(o, 40)
r(1 * t)
non(k, 60)
r(.5 * t)
non(h,60)
r(.5 * t)
non(h,60)
r(.5 * t)
non(k, 60)
r(.5 * t)
non(s, 60)
r(.75 * t)
non(h,40)
r(.25 * t)
non(k, 60)
r(1 * t)
non(o, 40)
r(.5 * t)
non(o, 40)
r(.5 * t)
non(k, 60)
r(.5 * t)
non(k, 60)
r(.5 * t)
non(s, 60)
r(.5 * t)
non(s, 60)
r(1.5 * t)
while 1: # run forever.
# Use nice key values for general-MIDI drumset.
p1(68, 66, 61, 64, .2)
sys.stdout.close()
sys.exit(0)
# End of p1.py
> > 2) "Aux" input so Spiral's filters can be used to process other
> > audio data. This is fun with old hardware synths; why not
> > soft-synths too?
>
> I've been planning to allow samples to be played like extra waveforms from
> the oscillators at some point.
That would be cool. Even cooler if you can rig up full-duplex input
so you can process realtime input from the soundcard.
> > 3) Plugin support. See the lad page for links to LADSPA.
>
> At first glance, this looks a bit complicated, but it would be great.
> SpiralSynth could be either a plugin or a host I suppose.
> I'll look into that.
>
> Phew, I had been hoping to slow down development, and write some music - some
> hope :)
Oh, there's no hurry. Have fun!
One thing you definitely might want to do if you haven't already is
try to make it run nicely in realtime... check out Benno Sennoner's
HOWTO on this:
http://www.crosswinds.net/~linuxmusic/lowlatency.html
( I haven't looked at your source, and I haven't even got a working
low-latency kernel at the moment so forgive me if you've done this
already.)
> Anybody out there know of any decent mutitracking software they can
> recommend? (Not neccisarally feature packed, but stable and easy to use)
I've tried:
Broadcast2000: crashes constantly especially when you try to use
effects.
Open source so presumably it's fixable. :)
Ecasound: cool does-everything tool. Doesn't crash but console
interface might not be what you mean by "easy". :) There's a front
end called Ecawave that I haven't checked out yet. Not sure if
ecawave handles multitracks. (Ecasound does.)
http://www.wakkanet.fi/~kaiv/ecawave/
There's also another front-end that handles multitrack: see
http://socrates.berkeley.edu/~nklepeis/ECO/
Multitrack: buggy but basically useable. The author appears to have
dropped off the face of the earth shortly after saying he'd release
the source code. :(
So this is an orphaned project that might never get any better.
The binaries are old - I don't know how well they'll work with a 2.2
or 2.4-pre system.
SLab: Tons of features, overwhelming interface, buggy and unuseably
slow last time I tried it... but that was a long time ago on a P-133
with 32MB RAM. Things might be better now. It was 2.-something when
I tried it, now it's up to 4.0.
Also worth checking out: Ardour. I don't think it's anywhere near
"stable" yet, though.
All this can be found from Dave Phillips' page of course...
--
................. paul winkler ..................
slinkP arts: music, sound, illustration, design, etc.
web page: http://www.slinkp.com
A member of ARMS: http://www.reacharms.com