Midi routing
if you want to route the actual audio data, then i found "soundflower" from cycling 64's website to be much easier than jack for os x.
Setting numbered file names to \[soundfiler\]
number
|
[makefilename file%d.wav]
|
"write -wave $1 array"
|
[soundfiler]
PD to control MIDI applications?
yah, midiyoke, as mentioned, or jack (i think that works on windows???) or soundflower from cycling 64 (not sure if that works on windows either)
if you're on linux, then definately jack
and for mac os x, either jack, or soundflower...i kind of like soundflower, but most people seem to go with jack.
anyway, that's for your 'middle man midi app' to send the data between pd and your other app.
as far as getting control data to the 'middle man app', you can use pd's midi objects: [ctlout] [msgout] [noteout] etc.....
i think if you just put one of those objects in a patch and then right / ctrl click for help, you will get a list of all the others.
Initial arguments in abstractions
Hi there,
I've working with PureData for (just) a few months, so I guess I'm still a newbie. I hope you can help me to solve this problem. Here it is: I'm trying to build an abstraction which a Sample looper. I'm using a "table" to store the sample and in order to make it as much independient as is possible, I have introduced the table in the abstraction. Also, to load the samples I use the following chain:
bng -> openpanel -> Message : read -resize $1 t1 ->soundFiler
here t1 is the name of the table. Of course, to be able to open more than own instance of my abstraction I need to make the table name a variable, otherwise I'll get the "warning: t1: multiply defined" error message. Now, here's the problem: in other abstractions I have solved this making the table name just a variable and passing a name when creating the object, for example the table would be "table $1" and when creating the object i would type "TapeLoop t1", where TapeLoop is the name of the abstraction. But now I'm already using the $1 variable, and although I have tried multiple ways I haven't be able to make it work by using other variables, for example using the following chain to load the Sample:
bng -> openpanel -> Message : read -resize $1 $2 ->soundfiler
In this case, the soundfiler doesn't take the table name as a valid name. I've also tried with other orders in the same chain, supposing that the $1 might be reserved to the initial arguments of the object:
bng -> openpanel -> Message : read -resize $2 $1 ->soundfiler
but it still didn't work.
Any idea of how to make the thing work? Thanks!
Help dividing a frequency into x-number of ranges
[url=http://www.cycling74.com/products/soundflower.html ]http://www.cycling74.com/products/soundflower.html
- an alternative to jack
your ibook doesn't have a line in as well as mic? you should be able to choose an input from the system preferences.
How to start
I personnaly use SoundFlower for OS X.
It's great, It's free and it's made by our good friends at Cycling74.
"Soundflower is a MacOS X (10.2 and later) system extension that allows applications to pass audio to other applications. Soundflower is easy to use, it simply presents itself as an audio device, allowing any audio application to send and receive audio with no other support needed. Soundflower is free and open-source."
More info and download here : [url=http://www.cycling74.com/products/soundflower.html
]http://www.cycling74.com/products/soundflower.html
Good luck,
jf
Writing soundfiles from soundfiler
Hi
I've successfully loaded soundfiles to a homecooked pd sampler using the soundfiler object, but I've had great problems writing the content of the output array to a soundfile. I think my problem is that I'm not composing the 'write' instruction to soundfiler correctly. The reference pages give a message with the following content for wave files '-wave -nframes 10000 /tmp/foo2 array2'.
Maybe I'm being really dense but I can't figure out what 'tmp' and 'foo2' are doing here: are they the names of the folder to be saved to and the file name? When I try to save to the sound folder in pd I just get the message 'no such file or directory' coming up. Do I just need to type in a more detailed filepath?
david
Loading / playing audio files together : clics
Oops, overloaded uses of the word "patch" (source code patch vs Pd patch) collide...
If you check out the Pd devel_0_37 (or devel_0_38?) branch from CVS, you can ./configure it with --enable-threaded-soundfiler (or similar, ./configure --help for details).
It makes [soundfiler] load files in a separate thread, which means DSP computation carries on while it is loading, at the price that [soundfiler] is no longer synchronous - the output (length) from [soundfiler] may come several DSP blocks later, unlike before when soundfiler outputs immediately (in Pd control time).
24/96
Does your audio file work with other audio programs?
-byte is an option for writing only, check the help patch for soundfiler for full details.
I don't have your problem on Linux Pd 0.37.1 devel, with threaded soundfiler.
I saved a stereo 24bit / 96kHz PCM WAV file from Audacity 1.2.0 and it worked fine with [soundfiler] :
Output in the Pd console:
----
adding process to queue
new begin: 82d7478
new end: 82d7478
signaling
Soundfiler awake
working on process: 82d7478
old begin: 82d7478
old next: 0
old end: 82d7478
soundfiler: mutex unlocked, running process
tried /home/claude/test-24-96.wav and succeeded
soundfiler: process done, locking mutex
freeing allocated memory
new begin: 0
new end: 82d7478
begin: 0
end: 0
Soundfiler sleeping
----
Output from alsaplayer:
----
$ aplay test-24-96.wav
Playing WAVE 'test-24-96.wav' : Signed 24 bit Little Endian in 3bytes, Rate 96000 Hz, Stereo
How do you bring in a wav file?
hello liz
first of all you have to create a table (an array)
table sound-file-array 256 for example
next you have to load a file in that table . to do that you have to use the soundfiler object.
you could do that to choose the file you want to load.:
bang (message type)
'
openpanel (object type)
'
-read -resize $1 sound-file-array (message type)
'
soundfiler
that's all. soundfiler 's outlet outputs the filesize.
if you want to use stereo samples , you have to create two arrays and change the message sent to the soundfiler in that way:
-read -resize $1 sound-file-array.L sound-file-array.R (message type)
(it could also be -read -resize $1 table1 table2 )
at least using that way you 'll be limited to 4mb files . if you want to load huge samples , you should rather send this:
-read -maxsize 1e07 $1 sound-file-array (message type)
that 's the way to do that.
but if you want to apply some fx in realtime you could stream a file directly from the harddisk , using sfplay from zexylib.
to output the file you'll have to use sfrecord , i don't recommend tabwrite for such a function . in my opinion it's easier to bounce the file directly to the hdd. else you have to take care of the filesize and to do a mechanism to record sound in a table and after to export it to the hdd.
let me know if it does the job the way you want.
see ya
