DIY2 - Effects, Sample players, Synths and Sound Synthesis.
@mod said:
>>another suggestion: why not make a lib sub-folder. where you can store such things like modulate. or a scale log which then could work with arguments. <<
that's how i originally did it, but i just wanted to make it so that the modules would just 'work' even if they were removed from the library. i guess i was kind of successful in that regard, because i have spotted some of my drums and stuff inside other people's projects. the only abstraction they need is the 808_state for state saving, but they will work fine without that anyway.
>>currently i guess it would be annoying to change all modulates.<<
i sometimes have a lot of free time
the other day i went through the whole library and replaced all the [loadbang] objects with a subpatch to allow for loadbang on dynamic creation. this meant changing around 100 patches and resaving them.
i will do DIY3 soon then. it is not 'finished', and i have some worries that it is not at all backwards compatible with DIY2, but at the end of the day i am a musician more than a programmer, so the function is what matters.
diy3 'upgrades' include:
a built in sound editor, so you can record loops and sounds and edit them within pd and then export them to .wav files.
some more 'synth' like modules and effects units (tape echo, etc)
inbuilt diy-clock module that ties everything together for sequencing, and then of course some sequencer modules.
vanilla pd compatibility (this unfortunately meant removing some really useful things like the 7 and 13 band EQ's, but they could always be imported from DIY2)
Hello,
I happen to be researching ways to make a tape echo like the old roland type using pure data. Would it be possible for you to put up some of the effects from DIY3 such as the tape echo you mentioned?
"audio i/o stuck"
For each program that is using the ASIO drivers, an ASIO control panel will pop up in the system tray (you might need to adjust your system tray preferences). Each panel controls an instance of the ASIO drivers for that program. You can open that panel and set the inputs and outputs you want to use for that instance.
I said in the above post that ASIO can connect to one program at a time....but that isn't the full explanation. Each ASIO instance can connect 1 program to the same hardware inputs and outputs at a time.
So if you had a soundcard that had 4 outputs, you can setup 2 programs to use the ASIO drivers, one instance goes to output1 and output2, and the other instance can go to output3 and output4.
Getting your sound program running through ASIO (that's by default connected to all inputs and outputs) and getting sound from the browser (Firefox? Chrome? IE?)
is tricky. The browser doesn't use ASIO, it's using the default windows sound driver to access the soundcard. Try loading the browser first then load PD with ASIO or vica versa.
I've only been able to get a consistent working setup by having multiple (2 or more) soundcards. Windows controls one (browser sound, programs that don't use ASIO) and ASIO drivers control the other (PD, tracktor, cubase, FLstudio, etc). Route the sound output from both cards into an external mixer, and the mixer controls the main speakers (or monitors)
Meditation background generator
Thank you all for your replies, I didn't expect such feedback. Especially thanks jamesmcn - everything was described well, I just have something to add:
1 and 2. The top section performs two functions - it's smth. like "probability generator" (leftmost part), which, in accordance with LFO, defines how often droplet sound is being generated at the moment, and (rightmost one) an array containing tones, at which [vcf~]s of certain droplets resonate (0,2,3,5,7,8,10 in it mean C-minor scale). And every 5 seconds [route] picks these tones (notes) up from the array randomly and sends them to [vcf~] objects after [stream~] abstractions. These tones are transformed into frequencies in Hz to control bandpass filters.
3. Yes, the [stream~] is the meat of the synthesis, but it is not "very carefully" filtered noise, although should be. I just tried to make it sound like water droplets, and made some variations in cutoff frequency (first creation argument) and stream density (2nd creation argument) to make droplets sound more diverse. The stream~.pd itself is actually a very simple noise generator, and this is the oldest part of the patch itself. I wanted to make something like a rain noise, made this abstraction, and put it off until it came into play.
4 and 5. You know, if you delete the mixer/processor section (except reverb), you may not notice much difference: it just makes left and right channel slightly different from time to time - for merciless freezeverb to mix up left and right channels in one stream anyway. Buy the way - [freezeverb] is just an enhanced version of that you can see in help -> browser -> G08.reverb.pd. The only serious difference is that it uses delay_time_counter.pd, which calculates the times for delay lines in accordance with this formula: t = t1/2^(n/numlines)-t1/2, where t1 = the largest early reflection delay time value, numlines = total delay lines number (28 here), and n = current delay number (starting from 0). I found this algorithm here: http://musicdsp.org/archive.php?classid=4#44 but changed it a bit (actually, added "-t1/2" to make echoes appear earlier. I still don't understand completely how [freezeverb~] works. To be more precise, I don't understand what actually does [early_reflection_delay_line] do - but Miller Puckette in his example applied similar [reverb-echo-del] abstraction, and it works well! It makes a "power-preserving" mix, very useful thing in recirculating reverbs.
6. Two sine wave oscillators take their frequencies from two first randomly picked up notes from an array (see item 1 and 2). There are also two frequency modulators, 1846 Hz and 4 Hz sine waves, to saturate their spectrum. So it sounds a bit like noise, mainly because there are already too much sine waves from the [stream~] abstraction, and I thought it worth adding something at higher frequencies. And reverb smoothes these oversaturated sine waves, making them sound noisy.
7. How reverb similar to [freezeverb] works is described in help browser, I just can't understand why power preserving mix works. Also I tried to make one stereo reverb based on Miller Puckette's model, but a couple of experimental ones failed. This one is my best reverb ever.
8. Yes, and [master] abstraction is just a place where volume control, or spectrum analysis, are handy to perform from. Something to put all the wires at, and to listen to its output.
Echo AudioFire12 in PD
Dear all, I just bought an echo audio fire pre8 and for some reason when I try to set it up in the Audio tab of Pure Data, even PD detects it (but only 2 channels at a time instead of all when I try to specify the number of channels (while ASIO echo Firewire is checked) PD freezes. Any idea why? 'Cause I'm at a loss, and guess what? The openinng for the show is TOMORROW!
Extracting partial information
O.K. - Here's the latest using [vcf~]. Thanks to Mike for all his help!
Using [vcf~] instead of [bp~] to extract partials to be reconstructed as harmonic series for manipulation and exploration into the concept of pitch space. This system does not deal with individual sinusoids, but approximate frequency bands with narrow "Q" at specified multiples of a fundamental frequency.
[vcf~] is like [bp~] except it takes an audio signal to set center frequency, which may thus change continuously in time. The "Q" or filter sharpness is still only set by messages. More expensive than bp~ in CPU time but more powerful too (vcf~ help file, Pd-ext).
Any partial (fundamental and multiples) may be selected within the constructed series. Each partial may be placed in any desired order. Each partial may be accentuated or attenuated in amplitude by the user.
[sigmund~] tracks the pitch of a selected string or all strings in sequence. One instance of [sigmund~] does not accommodate chordal (simultaneous) structures in real-time. This is not a concern as this system is developed primarily for the study of sequential pitch structures. Once a fundamental frequency is established, [vcf~] superimposes the relevant "Q"s to achieve the fundamentals harmonic series. The user may superimpose the "Q"s of unrelated harmonic series over another tone, to explore inharmonic content, or simply to achieve more percussive tones (as demonstrated toward the end of the video). By accentuating different harmonic and inharmonic content, we may establish macro and micro music structures on each string in relation to a fundamental frequency.
In this instance, notes which coincide with the set harmonic series will be perceived as more resonant. For example, the "A" note played on the second string (chc. 2) is perceived as more resonant as the channel has a "Q' of 220hz. Any perceived ringing is a result of a narrow "Q", which the user will be able to adjust to suit their performance style.
Compiling externals on OSX
Hi, I tried Icoon's and Enrico's methodes but it doesn't work.
I copied the code from Johannes (helloworld) in a new C file in XCode. Then I did what enrico explains ; but when I type "make", the terminal answers a lot of errors. I probably forgot something, but what?
cc -arch i386 -arch ppc -DPD -O2 -Wall -W -Wshadow -Wstrict-prototypes -Wno-unused -Wno-parentheses -Wno-switch -I../../src -o helloworld.o -c helloworld.c
helloworld.c:11:19: error: m_pd.h: No such file or directory
helloworld.c:12: error: syntax error before ‘*’ token
helloworld.c:12: warning: type defaults to ‘int’ in declaration of ‘helloworld_class’
helloworld.c:12: warning: data definition has no type or storage class
helloworld.c:14: error: syntax error before ‘t_object’
helloworld.c:14: warning: no semicolon at end of struct or union
helloworld.c:15: warning: type defaults to ‘int’ in declaration of ‘t_helloworld’
helloworld.c:15: warning: data definition has no type or storage class
helloworld.c:16: error: syntax error before ‘*’ token
helloworld.c:17: warning: function declaration isn’t a prototype
helloworld.c: In function ‘helloworld_bang’:
helloworld.c:18: warning: implicit declaration of function ‘post’
helloworld.c:11:19: error: m_pd.h: No such file or directory
helloworld.c:12: error: syntax error before ‘*’ token
helloworld.c:12: warning: type defaults to ‘int’ in declaration of ‘helloworld_class’
helloworld.c:12: warning: data definition has no type or storage class
helloworld.c:14: error: syntax error before ‘t_object’
helloworld.c:14: warning: no semicolon at end of struct or union
helloworld.c:15: warning: type defaults to ‘int’ in declaration of ‘t_helloworld’
helloworld.c:15: warning: data definition has no type or storage class
helloworld.c:16: error: syntax error before ‘*’ token
helloworld.c:17: warning: function declaration isn’t a prototype
helloworld.c: In function ‘helloworld_new’:
helloworld.c:22: error: ‘x’ undeclared (first use in this function)
helloworld.c:22: error: (Each undeclared identifier is reported only once
helloworld.c:22: error: for each function it appears in.)
helloworld.c:22: error: syntax error before ‘)’ token
helloworld.c: In function ‘helloworld_setup’:
helloworld.c:26: warning: implicit declaration of function ‘class_new’
helloworld.c:26: warning: implicit declaration of function ‘gensym’
helloworld.c:27: error: ‘t_newmethod’ undeclared (first use in this function)
helloworld.c:27: error: syntax error before ‘helloworld_new’
helloworld.c:30: warning: implicit declaration of function ‘class_addbang’
helloworld.c: In function ‘helloworld_bang’:
helloworld.c:18: warning: implicit declaration of function ‘post’
helloworld.c: In function ‘helloworld_new’:
helloworld.c:22: error: ‘x’ undeclared (first use in this function)
helloworld.c:22: error: (Each undeclared identifier is reported only once
helloworld.c:22: error: for each function it appears in.)
helloworld.c:22: error: syntax error before ‘)’ token
helloworld.c: In function ‘helloworld_setup’:
helloworld.c:26: warning: implicit declaration of function ‘class_new’
helloworld.c:26: warning: implicit declaration of function ‘gensym’
helloworld.c:27: error: ‘t_newmethod’ undeclared (first use in this function)
helloworld.c:27: error: syntax error before ‘helloworld_new’
helloworld.c:30: warning: implicit declaration of function ‘class_addbang’
lipo: can't figure out the architecture type of: /var/folders/Wl/WlZVlPp0Hvu7Q99UrPbdWE+++TI/-Tmp-//ccig9hRY.out
make: *** [helloworld.d_fat] Error 1
flaco
Echo AudioFire12 in PD
Ok, I think I found the solution it seems that multichannel audio work with ASIO, but I have to select the item "ASIO Echo FireWire" (I think ASIO AudioFire driver provided by ECHO)
Echo AudioFire12 in PD
Hey guys,
I am going to use this sound card
http://www.echoaudio.com/Products/FireWire/AudioFire12/index.php
to manage up to 12 speakers indipendently by PD (Windows OS).
Do you think it could be compatibile/visibile by PD?
If I install it on the machine with the related driver it should be OK?
Otherwise do you have some suggestion for an external sound card to manage up to 10 speaker that is "surely"compatible with PD?
thanks a lot,
diego
MAKE ART 09 - 08\>13 December 2009 - Poitiers
#!/bin/bash
cat <<":*" |
_
_ _ ____ _ _ ||
| | | | ||_ | | || | |
| || | | || | | ||| | |_____
| | || | | | ____ | | | | |
| | | | | | | | | | || | |_
|| || || || || || ||
|| ____ _______ _________
|| || | | | | _
| || | | ||| | | || ||
08-13 DEC | __ | | _ | | |
2009 | | | | | | ||__ ||
POITIERS || || || |_| ||
make art is an international festival dedicated to the integration of
Free/Libre/Open Source Software (FLOSS) in digital art.
The fourth edition of make art - What The Fork?! distributed and open
practices in FLOSS art - will take place in Poitiers (FR), from the 8th
to the 13th of December 2009.
With Aharon Amir (GB), Wayne Clements (GB), FooCorp (GB), Gijs Gieskes
(NL), Gullibloon (AT/DE), Adnan Hadzi (CH), Lisa Haskel (GB), Reni
Hofmüller (AT), Olivier Laruelle (FR), LAFKON (DE), Anne Laforêt (FR),
Mattin (ES), Antoine Moreau (FR), Nathalie Magnan (FR), No Copy Paste
(HU), Noyade (FR), Jean Sépulchre (FR), Wesley Smith (US), Koray
Tahiroğlu (TR/FI), The Guardians of the Tradition (US), Taku Unami (JP),
Milovann Yanatchkov (FR), Simon Yuill (GB), Jérémie Zimmermann (FR),
IOhannes M. Zmölnig (AT), ...
--
make art est un festival international dédié à l'intégration des
Logiciels Libres et Open Source (FLOSS*) dans l'art numérique.
*FLOSS = Free/Libre/Open Source Software
La quatrième édition de make art - "What The Fork?!" pratiques
distribuées et ouvertes en art logiciel libre - se déroule à Poitiers
(FR), du 8 au 13 décembre 2009.
Avec Aharon Amir (GB), Wayne Clements (GB), FooCorp (GB), Gijs Gieskes
(NL), Gullibloon (AT/DE), Adnan Hadzi (CH), Lisa Haskel (GB), Reni
Hofmüller (AT), Olivier Laruelle (FR), LAFKON (DE), Anne Laforêt (FR),
Mattin (ES), Antoine Moreau (FR), Nathalie Magnan (FR), No Copy Paste
(HU), Noyade (FR), Jean Sépulchre (FR), Wesley Smith (US), Koray
Tahiroğlu (TR/FI), The Guardians of the Tradition (US), Taku Unami (JP),
Milovann Yanatchkov (FR), Simon Yuill (GB), Jérémie Zimmermann (FR),
IOhannes M. Zmölnig (AT), ...
:*
(
( echo '[-]>[-]---------->[-],[----------[>[-]++++++++++,----------]'
echo '<[++++++++++.<]>++++++++++.-------------------->[-],]' ) | (
echo '#include <stdio.h>'
echo '#include <stdlib.h>'
echo 'int main(int c, char **a){'
echo 'char *makeart = calloc(2009,1);'
sed -e 's/+/++*makeart;\n/g' \
-e 's/-/--*makeart;\n/g' \
-e 's/>/++makeart;\n/g' \
-e 's/</--makeart;\n/g' \
-e 's/\./putchar\(*makeart\);\n/g' \
-e 's/,/{int i = getchar\(\);if\(i!=EOF\)*makeart=i;}\n/g' \
-e 's/\[/while\(*makeart\){\n/g' \
-e 's/\]/}\n/g' \
-e 't' \
-e 's/.//g'
echo 'return 0;}'
) | gcc -O2 -Wall -std=c99 -pedantic -o makeart -xc - &&
./makeart | ./makeart
)
Windows puredata users !!!! 2ms latency only !!!
i succeed to run with 2 buffer of 64 sample at 44.1 kHz probably not little as 2 ms (the value it returns with fruity loops about the driver only about the driver i have to notice), but damn more efficient than without this driver.. as an example:
talk in the mic -> adc~ -> dac~
before : to much latence then echo effect.
after : enough little latency for not notice any echo.
generally before i could not have something smaller than around 120 ms... so i still happy.