The Harmonizer: Communal Synthesizer via Wifi-LAN and Mobmuplat
The Harmonizer: Communal Synthesizer via Wifi-LAN and Mobmuplat
The Harmonizer
The Harmonizer is a single or multi-player mini-moog synthesizer played over a shared LAN.
(credits: The original "minimoog" patch is used by permission from Jaime E. Oliver La Rosa at the the New York University, Music Department and NYU Waverly Labs (Spring 2014) and can be found at: http://nyu-waverlylabs.org/wp-content/uploads/2014/01/minimoog.zip)
One or more players can play the instrument with each player contributing to one or more copies of the synthesizer (via the app installed on each handheld) depending on whether they opt to play "player 1" or "player 2".
By default, all users are "player 1" so any changes to their app, ex. changing a parameter, playing a note, etc., goes to all other players playing "player 1".
If a user is "player 2", then their notes, controls, mod-wheel etc. are all still routed to the network, i.e. to all "player 1"'s, but they hear no sound on their own machine.
There are 2 pages in The Harmonizer. (See screenshots below.)
PAGE 1:

PAGE 2:

The first page of the app contains all controls operating on a (more or less) "meta"-level for the player: in the following order (reading top-left to bottom-right):
pl2: if selected (toggled) the user is choosing to play "player 2"
mot(ion): triggers system motion controls of the osc1,2&3 levels (volume) based on the accelerometer inside the smartphone (i.e as you twist and turn the handheld in your hand the 3 oscs' volumes change)
rate: how frequently should the handheld update its accelerometer data
slimit: by how much should the app slow down sending the (continuous) accelerometer data over the network
presets: from 1 to 5 preset "save-slots" to record and reload the Grid 1 and Grid 2 settings that are currently active
S: save the current Grid1 and Grid2 selections to the current "save slot"
L: load the currently selected preset into both Grids
">>": go the the next page (page 2 has the reverse, a "<<" button)
Grid 1: the settings, in 4 banks of 3 parameters per-, which are labeled top-down equating to left-right
Grid 2: the same as Grid 1, but with a different set of parameters
The second page comprises:
the 2-octave keyboard (lower notes on top),
a 9-button octave grid (which can go either up or down 4 octaves),
a quick-preset grid which loads one of the currently saved 5 presets
the "<<" button mentioned above, and
both a mod and pitch-bend wheel (as labeled).
SETUP:
All players install Mobmuplat;
Receive The Harmonizer (in the form of a .zip file either via download or thru email, etc.)
When on your smartphone, click on the zip file, for example, as an attachment in an email.
Both android and iphone will recognize (unless you have previously set a default behavior for .zip files) the zip file and ask if you would like to open it in Mobmuplat. Do so.
When you open Mobmuplat, you will be presented with a list of names, if in android click the 3 dots in the top right of the window and on the settings window , click "Network" Or on an iphone click "Network" just below the name list;
On the Network tab, click "LANDINI".
Switch "LANDINI" from "off" to "on".
(this will allow you to send your control data over your local area network with anyone else who is on that same LAN).
From that window, click "Documents".
You will be presented again, with the previous list of names.
Scroll down to "TheHarmonizer" and click on it.
The app will open to Page 1 as described and shown in the image above.
Enjoy with Or without Friends, Loved, Ones, or just folks who want to know what you mean "is possible" with Pure Data
)!
Theories of Thought on the Matter
My opinion is:
While competition could begin over "who controls" the song, in not too great a deal of time, players will see first hand, that it is better (at least in this case) to work together than against one another.
If any form of competition emerges in the game, for instance loading a preset when a another player was working on a tune or musical idea, the Overall playablilty and gratitude-level will wain.
However, on the other hand, if players see the many, many ways one can constructively collaborate I think the rewards will be far more measurable than the costs, for instance, one player plays notes while the other player plays the controls.
p.s. my thinking is:
since you can play solo: it will be fun to create cool presets when alone then throw them into the mix once you start to play together. (Has sort of a card collecting fee
).
Afterward:
This was just too easy Not to do.
It conjoins many aspects of pure data together (I have been working on lately (afterward: i did this app a long time ago but for some reason and am only now thinking to share it) both logistical and procedural into a single whole.
I think it does both quite well, as well as, offer the user an opportunity to consider or perhaps even wonder: What is 'possible'?"
Always share. Life is just too damn short not to.
Love only.
-svanya
Permutations, second part, can anybody get this patch to work?
@Ale-H.H. I am out tonight..... so no help I'm afraid.
I start to understand.
You can assign curves to what you wish....... so?
Anyway.... the last patch allows you to draw curves for each oscillator controlled by just one iaanix timbre curve.
You just have to decide how each oscillator should respond to that curve to create the timbre.
If you want the first oscillator volume to simply follow the iaanix curve then draw a line in "a" from bottom left to top right.
If you want the last oscillator to do the inverse then draw in "h" a straight line from top left to bottom right.
If you want the second oscillator volume to rise quickly as the iannix curve goes to 0.5 and then fall back to zero as the iannix curve reaches 1 then draw a triangle in "b"
I hope that makes sense.
David.
all possible permutations with repetitions of harmonic volume from top to bottom
@weightless the list could be made of integers, one integer would represent a percentage of the volume of a harmonic, or maybe it can be done directly with the percentage numbers (its just easier for me when doing the permutations manually to think of letters), so it would be like this simply with three percentages for three harmonics, how about, initially, harmonic "a" or "1" would have its volume at 34%, harmonic b or 2 at 67%, and harmonic c or 3 at 100% (At the end I want to go all out on this morphing timbre exercise and implement 32 harmonics for maybe 10 or 32 volume percentages, if there are 32 harmonics and 10 volume percentages there would have to be repetitions or maybe 64 harmonics and 100 different volume percentages!).
I think that what is more difficult to grasp here are the repetitions, the permutations are done, we understand that three different elements would have 6 permutations (I checked out your randomize patch, nice, i was thinking of that also, for an option to randomize the list if you wanted of all possible combinations with their repetitions), I think of the repetitions like this: first you have to know how many harmonics you have, and how many percentages you will have , so let´s say three harmonics "A""B""C", and three options for percentages a=34%, b=67% and c=100%, so its three to three options.
The first category would be for there to be one repetition, (so two equal letters), so we start with first harmonic at 34% , second at 34% and third at 67%, Im going to use only letters now for the percentages, so that was a,a,b. then it´s permutations (a,b,a; b,a,a), now same category but "a" against "c" so: aac, aca,caa
then once we have already past letter a against all possible letters in order we go to another category (three equal letters) "aaa", then we are done with "a", now we go back to the first category (one repetition) but we start with the second letter "b", so now its bba, bab,abb, then bbc,bcb,cbb then bbb, then cca, cac, acc, then ccb,cbc,bcc then ccc, now, i think those are all possible repetitions with 3 harmonics. So when the curve in iannix is at the top that means start the list with with different elements (3 harmonics, 6 permutations), then the repetitions (21 combinations). or maybe an option to start first with the repetitions then with the different elements 
Programming Additive Synthesiser
Hi, I am wondering if it is possible to create an additive synthesiser for a verbos harmonic oscillator: https://static1.squarespace.com/static/52cddaa9e4b0999c86f84b8a/t/56145344e4b0e58796be4889/1444172612979/harmonic+oscillator+postcard.pdf
There are two parts to it, namely the oscillator core and the harmonic mixer. For the oscillator core, it has to output saw, square and triangle waves. How do I do that in pd?
GUI port of Pd-l2ork Alpha 0 release
Hello,
Below are links to the first alpha release of the GUI port of Pd-l2ork.
The GUI has been ported from tcl/tk to nw.js. The biggest visual improvements are ability to zoom in and out of a canvas, smoother animation of canvas objects (like the PacData game), user-friendly editing inside msg/obj boxes, and a more flexible API for visualizing data structures.
I've nicknamed it "Purr Data", because cats.
This is mainly a bug-collecting release. It should be decent enough to do some basic patching for awhile before hitting a bug. Some caveats up front: OSX is missing Gem and PDP, and both OSX and Windows are missing some pd-l2ork-related externals.
Bug tracker is here:
https://puredata.osuosl.org/jwilkes/purr-data/issues
Alpha builds are listed below (I'm abusing gitlab to distribute these, so some may have a zip within a zip):
OSX x_64 - https://puredata.osuosl.org/purr-data-binaries/osx-64-alpha0/repository/archive.zip?ref=master
Ubuntu 15.10 x_64 - https://puredata.osuosl.org/purr-data-binaries/ubuntu-15.10-64-alpha0/repository/archive.zip?ref=master
Ubuntu 14.04 x_64 - https://puredata.osuosl.org/purr-data-binaries/ubuntu-14.04-64-alpha0/repository/archive.zip?ref=master
Ubuntu 14.04 i386 - https://puredata.osuosl.org/purr-data-binaries/ubuntu-14.04-32-alpha0/repository/archive.zip?ref=master
Debian Jessie x_64 - https://puredata.osuosl.org/purr-data-binaries/debian-jessie64-alpha0/repository/archive.zip?ref=master
Debian Jessie i386 - https://puredata.osuosl.org/purr-data-binaries/debian-jessie32-alpha0/repository/archive.zip?ref=master
Windows 32-bit - https://puredata.osuosl.org/purr-data-binaries/win32-alpha0/repository/archive.zip?ref=master
HARMONYNC: a Dynamic Harmonics Calculator
Hi everybody,
I am an overtone singer and some years ago I needed an interactive table of reference to hear the harmonics and how their intervals sound.
This patch was born for my personal use and it is a prototype.
Since your interesting discussions in this forum have been very important for the implementation of my ideas, it is only right to share my work with you.
What is this?
The Harmonync is a platform that allow the user/musician to play the Harmonic Series and changing its fundamental tone in real-time. Just like the overtone singers do with the polyphonic overtone singing technique.
The idea is to play a fundamental-variable harmonic series on electronic and electro-acoustical instruments retuned via MIDI and in real-time.
The name come from the union of the words “Harmonic” and “Sync”.
The Harmonync can retune MIDI instruments via Pitch Bend Change messages or using the MIDI Tuning Standard (SysEx) protocol.
Actually the Harmonync is prototyped as a patch for Pure Data using the Extended Libraries. The first release was developed with Pd-extended 0.43.4 for Mac OS X but it should run on other platforms.
Get it & More infos
Visit harmonync.org for the updated Download links and the Tutorials. For any questions, you may discuss here or contact me on the project site.
Further developments
The patch is published under the Afffero General Public License v.3.0 (AGPLv3).
So... if someone wants to help me improving the software, the repository is available on GitHub. Contributors are welcome!!
A Screenshot
Pitch creation for inharmonic signal
Hello forum,
Sent this to the list, but thought I'd possibly pick some more brains.
I’m looking for a way to impose a harmonic spectrum on a non-harmonic
signal in real-time. I tried cross-synthesis with a harmonic signal, which is ok, but
what I’m actually trying to do is to “tune” a field recording, in a way,
so it can have harmonic relations to a live instrument.
I played with the pvtune~ object from fftease which is nice, but the
results end up sounding a bit autotune-ish. And I also tried driving a few
vcf~ filters whose frequencies are set by bfcc~ from timbreID and relative to a fundamental tracked by fiddle~/sigmund~; also nice, But this still sound like imposing the harmonic characteristic on an existing spectrum, while I think I am looking to arrive at harmonicity through something like moving the frequencies of the partials into their closest values according to the harmonic series (so moving from bins=>partials).
Can this be done? it would entail changing the frequency of each bin
separately.
Wishart describes in his book a technique he calls spectral focusing,
which relies on lpc. He says that lpc can be set to generate a filter bank
which is distributed evenly with respect to pitch, but I’m not sure I
understand what he means and how it can be done in PD. lpc seems to output
a set of amplitudes for the coefficients. Can I set the filters to
frequencies of my choice?
Any help whatsoever with this would be greatly appreciated,
Zax
Send and receive global and local far down the rabbit hole + questions
Now I have some questions.
number 1
how do you get your last operation not to be calculated first?
I had made this intricate tuning calculation for a Karplus - Strong 12 string.
It's microtuneable to non octave tunings so in order to detune the second strings it has to be done on the fly. So every now and then the thing plays way out of tune.
I put prints in enough places so I could see what was going on.
Well final operation on calculating the frequency was getting calculated first. Or at least it was getting printed first. So I started tracing trigger bangs and floats all the way back to the first bang that started the calculation. That was crazy While making the thing I had followed the path very carefully down but since some operations depended on other operations to get done first the bangs split in multiple directions. Instead of trying to get more confused in the tangled mess I started replacing
- , [+ ], etc.. with [expr] which made it a lot easier to comprehend still sometimes the thing plays out of tune.
This leads to my next question. The Karplus-Strong patch I started with sets a [block~ 1] is it possible this small block size is causing some of the calculation to get interrupted.
If the things that need to be calculated are not done within one block does that screw things up?
I thought the control operations were only sent once per block anyways.
and is that so if you change the block size to anything other than 64?
And another question is it more processor intensive to use [expr] instead of
- , [+], etc..?
Can a moog like filter be done without writing c code? Where can I learn about designing ladder filters in pure data? I like all the ext moog filters I've heard I'm just wanting to keep my patches vanilla unless I write the external. Propellorhead's Thor Ladder filter does not sound like any of the moog filters I've heard in pure data. Maybe it has something to do with the frequency snapped to the harmonic series or something but I've done that with the pure data moog filters and don't get the same results. Maybe the Propellorheads are upsampling to do the filters.
Another weird thing is I made a bypass for my filters. So I had 6 voices, 6 oscillators per voice, 2 filters per voice so that is 36 oscillators and 12 filters running. I added a 3rd filter per voice and when they were bypassed my machine went up to 90% cpu usage and more. So I removed the 3rd filter. Still CPU usage would go up when the filters were bypassed so I added a switch to turn them off whenever they were bypassed that fixed the problem with that. I probably ought to switch the oscilators off when they are not in use as well so I can add more. Some of them are feedback oscilators and generate chaotic signals so I guess there need to be an option to leave them on.
Now the next question and that will do it for today.
how do you print your entire patch to a ghost script printer?
I tried scaling the page so I could see the patch on the screen and still only get part of the patch in the ps file.
How do I do modulation routing with a matrix and do it polyphonically?
I want anything that has an input to be able to be routed to anything with an output and be scaled along the way. My voices are allready huge and so I would like it all to be done from within the main patch. At what point does your patches get too big? oops.
'harmonicity' test to recognise 'noise' from 'sound'
Hi there,
I am wondering whether it would be possible to create a test following a [fiddle] (or what will be proposed here) to analyse incoming audio and test in realtime whether this is 'noise' (far-from-harmonic audio) or 'instrument' (rather harmonic audio).
I'd see it as a rough evaluation of the 'quality' of the signal in terms of harmonicity leading to a numeric value that I could test to finally reduce it to a binary result : 'sufficiently harmonic' / 'insufficiently harmonic'.
When I midify audio with Pd, I read what [spigot] outputs (every 10ms for example) and convert it to a noteout midi message. As the audio is my violin playing realtime, it happens that between (rather) clean notes transitory audio (bow direction change, or any noise catched by the piezo transducer) is handled by [spigot] and a (hazardous) fundamental frequency is outputted. This leads to kinds of 'jitter' in the midi playing, with clean notes sometimes separated by very short but irritating 'random' (often high) notes
.
So my (stupid ?) strategy would be to avoid those 'silly' notes to be sent, using the test idea described above to drive another [spigot].
Of course the 'harmonicity' test is only an idea. Other strategies welcome !
Any idea ?
thanx,
Nau
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.






