Noob Trying to Create a MIDI Chorder/Harmonizer
Yet more progress!
But still stuck on sending noteoff messages to a note after its number has changed. Maybe there’s something to do with a cold inlet, working as memory? Wait! Might have found part of the solution…
Followed the first two parts on the synth creation tutorial on Libre Music Production,
(The third and last part of the LMP tutorial has to do with filters and UI, so it shouldn’t have an answer to my noteoff issue.)
Through that tutorial, was able to make a simple polyphonic synth which takes MIDI in and outputs ADSR-enveloped notes to the DAC. So far, so good.
Added a fifth to the mix. Still works. No stuck note.
Then tried adding a third note which progressively goes up with a counter… Boom, noteoff problem again. It does make some sense: need to trigger a velocity of zero to the previous note, But this is where memory would come in handy.
Found part of a solution in using the right inlet of a [float
] object,
libremusic-synth.pd
Now, the synth produces the correct effect, even with multiple incoming notes.
In fact, doing this with [poly
] may bring us closer to the original effect created by Robby Kilgore on the Oberheim Xpander! Adding more polyphony than the notes which are produced internally, getting a rotation of notes… and a comeback of the noteoff problem.
libremusic-synth-rot.pd
So, getting closer, but my learning path is still winding around. Will search for known solutions, as it’s surely a common problem. Don’t necessarily want to go all the way to a minimal sequencer with [tabwrite
] and [tabread
], but it could be a solution and would have the added advantage of leaving a trace on which notes have been generated.
Will get it eventually!
[micin~_abs] abstraction: convert signal to [notein], ex. using a (midi) synth as a guitar pedal
[micin~_abs]
The [micin~] abstraction reads an incoming signal and reports the derived (via Katja Vetter's helmholtz~ external) note number, (and what the user sets for) velocity and channel number.
Thereby (most espaecially) allowing patches which take [notein]'s as their source to also take the mic.
Most practical application: being able to run non-midi instruments, ex. guitars, thru synthesisers and so use them as pedals.
micin~, Scott Vanya 2016
included in the zip below is:
/ext : the [helmholtz~] external as a zip file
/synth : the 1.poly.synth.pd used in example2
example1.pd : a simple example using C10.monophonic.synth.pd from Help>Pure Data>docs>audio examples
example2.pd : a more complex example also using the pd help files under >stuff
helmholtz_license
micin~.pd : the abstraction
micin~.png : the image inserted below, showing example1
msg.txt : this message.
Please, let me know if there is something I was foggy in my logic about this, or have not made clear in the example.
The helmholtz~ tool is awesome and really great and fast at doing this, I basically just cleaned it up and abstracted it.
On the other hand, I have already incorporated it into quite a few synth effects for use with my guitar, aka. see "jazzed" for how excited I am to get back to the studio.
-peace and good will,
svanya
CREDITS:
[helmholtz~]
from: http://www.katjaas.nl/helmholtz/helmholtz.html
[helmholtz~] pitch estimator for Pure Data, written by Katja Vetter, Feb 2012
developed and tested against Pd-extended 0.42-5
[helmholtz ~] uses the Specially Normalized AutoCorrelation function (SNAC), developed by Philip McLeod. For more information about SNAC, see article and thesis by Philip McLeod:
http://miracle.otago.ac.nz/tartini/papers/A_Smarter_Way_to_Find_Pitch.p/Developer/4puredata/helmholtz~/README.txtdf
http://miracle.otago.ac.nz/tartini/papers/Philip_McLeod_PhD.pdf
ADSR clips when triggering new note while old one is releasing
I am trying to make a monophonic synth in PD. I have yet to add an LFO or VCF or a second oscillator, but I have created a waveform switcher (sawtooth-triangle-pulse) for the first one. One quirk I have found so far is that when triggering a new note, if there is a older note releasing, it will cut that one and begin playing the new one.
This isn't an issue with the sawtooth, but with the triangle (and to a lesser extent the pulse) this old note will pop. I am unsure how to fix this.
The synth.pd file is the main file, adsr.pd and note.pd are both required to run the synth. The waveform switcher is in Synth.pd.
FYI: Bristol Synth Emulator (in repos with midi via Jack/Qjackctl)
Just some info in case you have missed it:
The Linux repos include an app called "Bristol" which is a Synth Emulator for about 20+ classic synths (see link, below 1-its sourceforge main page and 2-its first Synth)
They can all be controlled via midi on both alsa and Jack if set up correctly.
Personally not a Synth player, I have still always been blown away by this program's possibilities.
May you enjoy it and beautiful music issue from yr of fingers,
s
1-
[link Bristol Synth Emulator on Sourceforge](link http://bristol.sourceforge.net/)
2-[link "Mini Moog (-mini) (1970/1977)"](link http://bristol.sourceforge.net/mini.html)
Achieving Polyphony with ASCII numbers as MIDI control
I've built a midi controller in pd that takes incoming ASCII numbers from my laptops qwerty keyboard and converts the data to midi note on off messages to control a synth I'm building. Ive got some good functionality out of it but I can only have one voice at a time i.e. i cant have any polyphony/play chords when holding down more than one key...I can see this is because in the [key] object I'm using can only output one value at a time.
Are there any objects that could output multiple ASCII numbers at a time? The patch is below, one inside open the sub-patch labelled QWERTY
Thanks
Mikey
pd open
@konsumer Hello,
Declare the whole path (from the root) in the message and it will work.......
Or use [declare -path /synths] or [declare -path synths/] (Sorry I can't remember which might work)......
Or try "pd open synths/synth$1.pd"....... for a relative path... (I am not sure that will work though in a message to Pd. It would work in a message to an object that is already in your patch)...
Otherwise if you have [moonlib/relativepath] that would help.
Paths are just about the most difficult thing in Pd, as if you want to share your patch with other people you have to be careful with them. [moonlib/absolutepath] and [moonlib/relativepath] don't work in windows (for example) and you would have to use [getdir] instead.
David.
$0 differences between objects and messages
Hi guys,
I want to store multiple $0 send values in a single message box that is to be sent to multiple $0- receive parameters on a synth. I want to do this for each 'voice' in the synth to make it polyphonic. I also would like my final polyphonic synth to be an abstraction.
I know that $0-sends won't work in messages. So is there a way I can store a list of $0- parameters for each voice on my synth so these can be selected as a 'sound' for the user?
How do I get around that $0- doesn't work in a message to an object box?
Any suggestion would be very helpful (sorry if this is very obvious)
kind regards
Casper
I alkso
My little experimental FM based synthesiser
This is a very impressive synth you've put together!
A few things though:
1. "pure data synthesizer" isn't a very good name. Even "Fasil's Awesome Synth" would be better
2. The Randomizer is great. It might be nice to be able to modify how much each parameter gets randomized
3. I don't see anything about FM algorithms. I assume that all of the modulators are modifying the carrier? On closer inspection, the carrier and modulators are just being multiplied together. Isn't this just a big ringmod synth?
4. Have you considered replacing your many subpatches with abstractions? It would be easier to study and reuse components if they were abstractions rather than subpatches.
Again, great work. Your synth looks and sounds wonderful!
Real-time (note off - triggered) ADSR envelope
All those things in life we take for granted
Since I started playing synths in the early 1990s, a release segment triggered by a MIDI note off event (ie gradual ending after releasing a key) was found in every synth I played, whether hardware or software synth, free or commercial.
So... I'm wondering how people do this when they create (keyboard-operated) synths with Pd.
There would have to be a standard method.
But then maybe I'm making assumptions
Thanks in advance for your advice.
Simple polysynth
I really like this synth. Good job! I don't really understand the theory behind it, though; I don't know what the cosine waveshapers do or what is going on in the big filter section. Do you know anywhere I can read up on some of the theory? I am only just starting to familiarize myself with some basic DSP mathematics. Maybe I just need to spend some time learning basics before I try to comprehend this.
Dkeller, I tried this synth with a midi keyboard, but I also tried it out with your guitar patch. Nice job with the patch; it does a good job of detecting the notes and turning them on and off. The only problem with using a guitar with a patch like this is that the guitar is obviously monophonic while the synth is polyphonic. I guess it would be nice in this situation to have one of those hexaphonic pickups
I agree that the lower partials are a little too quiet. If I play a lower note on the keyboard I can barely hear it but when I start rolling the mod wheel a bit the higher partials come in and they are a lot louder. It sounds great already but it would be nice to hear a bit more of the droning bass sound.