New Gadget Madly In Hope

A blog about my iPhone dev efforts

10 June 2022

New ideas

Hi Folks!

Well, I'm trying to be happy with my first AU offering, Line Hum. It's mostly ready, it's kind of silly, the UI is kind of ugly, but It mostly needs screenshots. LineHum makes the sound of an ungrounded cable with various harmonics, jitter, and ring modulation thrown in. While it's happy to run at 60 (or 50) Hz, it actually can run at any frequency, because it's an AU, you can run them in parallel or serial, to make phasing and ring modulated effects in a kinf of messy way.

I'm also experimenting with au's possibility of multiple output busses, so .. I'm working on one called Furrau (like furrow, but an AU, get it?) The idea is to take an original sound source, analyze it, and use the analysis to split it up among 16 busses. Each of those busses can then have their way with it with other effects, recording, whatever.
On trick I have working is to detect silences in the stream and when it's no longer silent, swap over (fade, really) to the next bus . There will be lots of kinds analytical breakups, spectral ones, bandpass filters, transit detection, that kind of stuff. It could do spectral transfer the way I'd like it. Some effects might not use the full 16 output busses.

This AU research will help me to make the "replacement for Droneo" that I keep talking about, which will be a generative timbre system, and the thing that will be like Schwa that will in fact have analysis section so schwa-like effects can be made out of other sources. It'll be a cross between schwa and good old Sound Bite.

22:40:36 - jhhlnet - No comments yet, click here to add one

17 March 2021

I'm starting to do a few experiments with Apple's haptic support. Yeah, I know, software when I really want everything to not need batteries. But what I'm thinking of is right up Haptician's alley. I'm going to make an Audio Unit that can interpret audio and MIDI into signals onthe haptic motor (only possible in certain iPhone models).

- Signals will be turned into events. signals are MIDI messages, band passed filtered audio envelope followers, pitch trackers, gat detectors, noise detectors: a number of raw sources that become event messages
- A Mapper maps events into synthesizer commands The events are mapped, using state machines, into synthesizer commands. In this case, the synth is the tactic motor (although also possibly audio as well). The synth commands aget put in the synth's scheduling queue.
- Synthesis The synth operates onthe commands that are scheduled in the queue.

This is more or less how AUMI Sings works.

What will develop on the synth side is a number of tactile patterns that act like notes. There's a small amount of polyphony: a continuo "drone" that can be modulated a little, with one or two "solos" on top. Because it's an AU, it can be integrated into the iOS Music ecosystem of MID and audio effects, preset saving and sharing, and dynamic parameter changing.
01:07:52 - jhhlnet -

14 December 2020


A few months ago, I was interviewed in "Sound Bytes" online magazine:
Here it is.

In the interview I talk about my plans for the successor to Droneo, web app projects, PolyHarp, and other things!

20:47:13 - jhhlnet -

13 May 2019

More PolyHarpery

PolyHarp 1.0.9 is coming soon .. a few fixes and improvements!

- "capo" transposition bugs fixed!

- entry of pitches and intervals now sticks the value above the keyboard so you can see it!

- updated Instructions

- new "all off/all on" button for MIDI 192 channel selector

- gridding with String Areas works now

MIDI192 has been in there for a few releases, works best with Bs-16i (Bismark) and Animoog.

The Sustain button is also there - it needs some examples but it can work.

You can build some pretty good instruments and MIDI controllers!
10:18:07 - jhhlnet - No comments yet, click here to add one

19 February 2019

Polyphonic Microtonality

I'm doing an experiment in PolyHarp that might make its way elsewhere.

Here's a quick summary of the problem:
MIDI now officially supports a standard called MPE, the idea of which is to bring more features to individual notes that are normally assigned to channels.
For instance, pitch bends, CC values, and the like. This gives lots of Polyphonic Expression where it wasn't supported before. MPE works in a backward compatible manner by leveraging note assignment to put each note on its own channel, with all expression (like pitch bends) preset for it.

This is flexible, but it subject to subtleties associated with note assignment. MPE also divides the 16 MIDI channels into "zones", with one channel per zone reserved to receive commands and behave like each single channel normally would, but applied to all the channels in that zone.
MPE software sits on top of MIDI and if you have a legacy device or set of devices that can do non-OMNI mode polyphonic multi-timbralism, like some old General MIDI synthesizers, you can play some microtonal music on them without any firmware changes.
While this is a powerful general solution, it has a big problem: it maxes out at 15 note polyphony.

PolyHarp is a polyphonic microtonal synthesizer. That means each virtual string can be set to a pitch that has nothing to do with the 12ED2 system that is hard coded into MIDI (and much other western music). PolyHarp's internal synthesizer doesn't care about 12ED2, it'll play any old pitches. But when acting as a MIDI controller, it has to be more careful. I will probably add MPE support, which will allow some of the features that Polyharp already supports, like different sounds and behaviors controlled by different string areas. But beside microtonality, PolyHarps other big feature is massive polyphony. This is what lets it detune strings or make super dense chords. Limiting it to 15 notes is indeed limiting.

So I came up with another compromise that I call MIDI192. Like MPE, it channelizes notes to get the pitch bends that apply to it. Unlike MPE, it cannot play any microtonal pitch perfectly. MIDI192 lets you set up a subset of the 16 channels and assigns each channel to a degree of an equal division of a semitone for each of the number of channels it uses. The subset is so it can exclude some channels that don't care much about pitch anyway, like channel 10, used often for percussion. When using all 16 channels, instead of 12 notes per octave, you get 192 notes per octave (whence the name). This means that for an arbitrary tuning, you are within 100/16 cents of the real pitch, 6.25, and actually because it rounds it, its more like 3.125 cents or better. While not perfect, it's pretty good, and has no polyphony limit other than what the synth can handle. And for some equal temperaments that are multiples of 12, like 24, 72, 96 , it IS perfect, at least in theory . Every channel that's used gets a pitch bend sent to it when the MIDI192 system is chosen. This amount is based on how much a "real" pitch bend, from the wheel, should bend. By default, I'm using 6 semitones. A smaller bend will make the preset bends a little more accurate. There's some tweaking that goes on when a real pitch bend come in - it adds the preset bend to the new bend and transmit it to all affected channels. Because of the polyphony, you can't bend individual notes though.

MIDI192 doesn't have a zone system like MPE, but I could be able to block out channels into zones similarly by using channel masks, essentially making less accurate pitch to get multi timbral. We'll see!

I've put a test version into PolyHarp, which would be an option when you set up MIDI - either good old MIDI, or this new system, (or MPE...). You'd be able to set the bend distance and the channel mask as well.

Here's a video about it!
More as this develops!
15:02:52 - jhhlnet - No comments yet, click here to add one