If you need assistance, please send an email to forum at 4hv dot org. To ensure your email is not marked as spam, please include the phrase "4hv help" in the subject line. You can also find assistance via IRC, at irc.shadowworld.net, room #hvcomm.
Support 4hv.org!
Donate:
4hv.org is hosted on a dedicated server. Unfortunately, this server costs and we rely on the help of site members to keep 4hv.org running. Please consider donating. We will place your name on the thanks list and you'll be helping to keep 4hv.org alive and free for everyone. Members whose names appear in red bold have donated recently. Green bold denotes those who have recently donated to keep the server carbon neutral.
Special Thanks To:
Aaron Holmes
Aaron Wheeler
Adam Horden
Alan Scrimgeour
Andre
Andrew Haynes
Anonymous000
asabase
Austin Weil
barney
Barry
Bert Hickman
Bill Kukowski
Blitzorn
Brandon Paradelas
Bruce Bowling
BubeeMike
Byong Park
Cesiumsponge
Chris F.
Chris Hooper
Corey Worthington
Derek Woodroffe
Dalus
Dan Strother
Daniel Davis
Daniel Uhrenholt
datasheetarchive
Dave Billington
Dave Marshall
David F.
Dennis Rogers
drelectrix
Dr. John Gudenas
Dr. Spark
E.TexasTesla
eastvoltresearch
Eirik Taylor
Erik Dyakov
Erlend^SE
Finn Hammer
Firebug24k
GalliumMan
Gary Peterson
George Slade
GhostNull
Gordon Mcknight
Graham Armitage
Grant
GreySoul
Henry H
IamSmooth
In memory of Leo Powning
Jacob Cash
James Howells
James Pawson
Jeff Greenfield
Jeff Thomas
Jesse Frost
Jim Mitchell
jlr134
Joe Mastroianni
John Forcina
John Oberg
John Willcutt
Jon Newcomb
klugesmith
Leslie Wright
Lutz Hoffman
Mads Barnkob
Martin King
Mats Karlsson
Matt Gibson
Matthew Guidry
mbd
Michael D'Angelo
Mikkel
mileswaldron
mister_rf
Neil Foster
Nick de Smith
Nick Soroka
nicklenorp
Nik
Norman Stanley
Patrick Coleman
Paul Brodie
Paul Jordan
Paul Montgomery
Ped
Peter Krogen
Peter Terren
PhilGood
Richard Feldman
Robert Bush
Royce Bailey
Scott Fusare
Scott Newman
smiffy
Stella
Steven Busic
Steve Conner
Steve Jones
Steve Ward
Sulaiman
Thomas Coyle
Thomas A. Wallace
Thomas W
Timo
Torch
Ulf Jonsson
vasil
Vaxian
vladi mazzilli
wastehl
Weston
William Kim
William N.
William Stehl
Wesley Venis
The aforementioned have contributed financially to the continuing triumph of 4hv.org. They are deserving of my most heartfelt thanks.
Registered Member #3964
Joined: Thu Jun 23 2011, 03:23AM
Location: Valenzuela City
Posts: 332
Hi Guys,
Just wondering if you have some thoughts on a DRSSTC Pholyphonic audio modulating project.
Grounds: -Not using MCU -Not MIDI based audio input
I already tried doing this by just using OPAMP, 555 timers, logic gates and flip-flop (to create a certain OFF-time period after the ON-time pulse) thus limiting the Max PRF (<500 hz) and duty cycle (~5%)
The result is an automatic octave shifting Audio Interrupter, I tried using it on my non-midi based keyboard and guitar (not bass) It is working great - polyphonic ~ 2 notes at a time. Though I am not very convinced on the quality when playing a whole chord (> = 3 notes )
I still admire the ones on a polyphonic MIdi Audio Interrupter Structure though I don't know what is happening there during poly notes at a time, does it limits PW when on Poly?
Can someone give an idea or even draw a draft waveform of the pulse during a POLY notes.. I want to convert it on a more conventional way even though I am hearing that this is not a good path to run to.. Still I want to try..
I will try to post my the vid later.. Thanks in advance!
Just wondering if you have some thoughts on a DRSSTC Pholyphonic audio modulating project.
Grounds: -Not using MCU -Not MIDI based audio input
I already tried doing this by just using OPAMP, 555 timers, logic gates and flip-flop (to create a certain OFF-time period after the ON-time pulse) thus limiting the Max PRF (<500 hz) and duty cycle (~5%)
The result is an automatic octave shifting Audio Interrupter, I tried using it on my non-midi based keyboard and guitar (not bass) It is working great - polyphonic ~ 2 notes at a time. Though I am not very convinced on the quality when playing a whole chord (> = 3 notes )
I still admire the ones on a polyphonic MIdi Audio Interrupter Structure though I don't know what is happening there during poly notes at a time, does it limits PW when on Poly?
Can someone give an idea or even draw a draft waveform of the pulse during a POLY notes.. I want to convert it on a more conventional way even though I am hearing that this is not a good path to run to.. Still I want to try..
I will try to post my the vid later.. Thanks in advance!
Julian :)
Hello Julian,
I made a musical controller like what you described in the past as well, probably a similar implementation, with polyphony too. However, the results were not quite as clean as I would like and required a good stereo/audio input signal, and also conditioned properly (e.g. it played MIDI files via stereo just fine, but only on certain instruments which had a clear fundamental freq). I didn't see any additional cost-benefit ratio in adding extra filters etc. As a result I've since switched to a digital MIDI input since they are far more general purpose, essentially 100% clean, and turned out to be about the same amount of development work.
MIDI input also allowed a lot of additional features in the controller which was a lot more work to implement otherwise, so I shifted to using a microcontroller. The total cost also turns out to be less, along with less board space required.
For polyphony, I thought about a few methods to 'overlay' the pulse trains on top of each other, though with the caveat that constraints on pulse-width and duty cycle need to be adhered, Usually, when two notes are played, the overall duty cycle is sufficiently low such that the ‘pulse trains’ do not overlap. The problem is when they do, or when polytone is >2.
There are a few abstractions that can be done, e.g. a note creates a pulse width followed immediately by some sort of delay usually equal to the pulse of the note or the maximum pulse allowed. This caps the instantaneous duty cycle at 50% max. Pulse collision then can be decided based on some rules (e.g. direct collision = choose lower note or higher note):
1. Drop the note – if a second note plays when one is playing, the second one is dropped for that pulse.
2. Random shift – if a second note plays when one is playing, the second note is randomly shifted by a small amount, similar to packet avoidance in digital communications.
3. Counter delay – if a second note plays when one is playing, the second note is given a hold for a fixed delay after the first note ends, before playing the second note pulse
4. Counter priority - Each note is assigned a counter. If a second note plays when one is playing, the second pulse only begin after the hold-off period of the first note, but the counter that triggered the second note is allowed to run (vs 3 where the counter is paused). This is what I implement in my controllers.
5. Note Combination - if a second note plays when one is playing, the second pulse is ORed together but capped to some max pulse width. This can however lead to erratic spark formation, though was the simple method I used for my analog controller - simply OR the outputs from the channels and send it into a max pulse-width block limiter after.
6. Do nothing - For a regular SSTC, this may not be such a bad thing especially if the coil can run continuously
A few other abstractions also apply, such as by limiting a overall max duty cycle and pulsewidth in software which is very straightforward to implement in a microcontroller.
Obviously once the duty cycle gets up to a certain point, the notes will start to sound mashed up. I know a fried who did some basic audio simulations with various methods of polytone handling including the above mentioned, and in general, they really don't make a big deal in terms of sound quality, except for notes which might be close together or harmonics, which perhaps isn't frequently encountered in interesting sounding music pieces.
[Edit]
I didn't have a youtube account at that time but I found a video of probably my first iteration of the analog controller (single tone though) via stereo input from my computer, with my first SSTC:
Thanks for the great reply! Learn lots to this post!
But I was a bit puzzled on your point 4. Do you mean you have 4 counters? and does these counters hold certain period of time?
When I refer to counter I mean in how someone might implement it in a microcontroller when the counter counts up, and generates a note when it rolls over or similar. In this way, each note playing will require one counter configured to generate the correct pulse train. So each note requires one counter. In Counter delay, the counter is paused until the pulse from note 1 completes (with some fixed hold-off to prevent PW for exceeding too much) before starting (the counter) again. This is opposite to what happens in Counter priority, where the counter is allowed to continue to run, and each note is given some priority (maybe higher = higher priority or something) and the note plays thereafter, and you don't get a small shift associated with each collision in Counter delay. As with all methods, there are end-cases (PW > some number or note freq > some freq) which need to be adhered to to avoid odd behavior.
In practice, I think most of these methods work fine and don't really sound bad in the whole scheme of things with usual varying music. I think the concern I had when starting with a microcontroller interrupter was that it was a very daunting task, but in the end it turned out to not be too much work, especially with a lot of good midi libraries you can get for different controller platforms these days which allow you to just focus on pulse generation and not worry about the MIDI handling. However, I hope I didn't discourage you to work on the analog interrupter, since I think that could be a nice controller as well, especially for a SSTC, and certainly more general purpose. :)
This site is powered by e107, which is released under the GNU GPL License. All work on this site, except where otherwise noted, is licensed under a Creative Commons Attribution-ShareAlike 2.5 License. By submitting any information to this site, you agree that anything submitted will be so licensed. Please read our Disclaimer and Policies page for information on your rights and responsibilities regarding this site.