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!
Noob Trying to Create a MIDI Chorder/Harmonizer
Made a bit of progress. Just in case it helps someone, here’s a few more details.
Adapted the patch to work in harmonic minor mode and streamlined a bit by routing lists of intervals instead of connecting each wire individually.
harmo-chorder.pd
As there are only four types of seventh chords in the major mode, it does make things a bit clearer.
major-chorder.pd
Among my next steps is a generalization of the whole thing to work in different modes, and with different root notes. Not completely sure how to make that work but it should also help me in terms of randomizing chord selection.
Might also tweak voicings to fit a couple of concepts from classical harmony/counterpoint (avoiding parallel fifths, etc.). Eventually, it’d be great to choose a given voicing based on the preceding chord (for instance, the F in a G7 chord could resolve on the E in a C Major 7 chord). Should be doable, but will probably require more learning.
Something which should be relatively easy to tweak is to decrease the velocity of the inner voices, to emphasize the top part.
Another thing which will be quite fun is to produce sounds directly in Pd. Wavetable synth might be especially fitting for a wind controller. In that case, it should be easier to run it on a Raspberry Pi, without requiring an external synth. Would make for a very compact setup.
Been experiencing some issues with some scale notes not producing chords. In fact, Pd doesn’t show that incoming note, but it plays on my external synth. Probably an issue with my current MIDI setup (WX-11 wind controller hooked to a laptop which controls the iWavestation app on an iPad using MIDImux). In some ways, it makes for a bit more variety.
It’s a fun learning experience, so far. Been occasionally thinking about a project like this for some years, actually. But kept being too overwhelmed to take it on. Today’s experience really energized me.
Thanks, @shindeibrauns!!
Wavetable Drum Machine - repost
I uploaded this Wavetable Drum Machine last year but it became a casualty of a server issue (I hope it didn't cause it, it is a bit heavy). Anyway it didn't work under windows so while I was updating old drum machines I sorted this one out.
Here's the instructions, which are also under the Balwyn button.
Wavetable Drum Machine
Balwyn 2015
8 x bank of 64 amplitude sliders, each bank runs in sync driven by a clock. The clock has 16 start/end settings plus a repeat cycles setting, there is also a Vradio block to set the return position.
The mixer block has 8 x level & pan settings with stereo to the dac~
The wave selector is for loading the individual wav files to the relevant drum line. The *.wav files must be stored in the 'waves' folder within the program folder and selected from there.
Saving must be saved to the 'pattern' folder within the program folder. Save the file with one word and no extension, a file of that name will be created for the pattern settings. Another file with the same name will also be created with the extension '.kit', this stores the names of the wave files.
Loading must be from the 'pattern' folder within the program folder. All the clock, pattern and wave files will be updated. select only the file WITHOUT the .kit extension, otherwise nothing will load and soundfiler errors will appear in the Pd window.
The clear button will clear all the amplitude sliders, set all the clock settings to 1 except BPM which is set to 500.
The supplied samples were recorded via Audacity from Qsynth. Ditch them for your own
Cheers
Balwyn
[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)
Help a noob! Midi out working, but won't send note-off
@bo_g Hello....
I think you might have a midi feedback loop somewhere.
If you choose "Microsoft GS Wavetable Synth" for your MidiOut you will find that it works correctly.
I am using Windows 7 as well, without problems.
Midi Test is sending every message correctly, and maybe they are not received or interpreted properly by your synth?
Here is a picture of what is actually sent by "midi test".........
......so I think you need to look at your synth, or whether you have a loop somewhere in your midi chain?
David.
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!