Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

waveform-gliss engine #65

Closed
EdmundCampion opened this issue Feb 23, 2015 · 5 comments
Closed

waveform-gliss engine #65

EdmundCampion opened this issue Feb 23, 2015 · 5 comments
Assignees

Comments

@EdmundCampion
Copy link
Contributor

Build a waveform glissing engine (to be called "glisstool") that is packaged in a poly~ or other polyphonic routine and capable of few to many hundreds of sinusoids. I imagine it is cycle~ based and capable of receiving different wave shapes


Single voice of waveform-gliss:

  • the messaging to each voice in the waveform-gliss is MIDI (Midi cents)
  • a voice is reserved and starts sounding when the voice receives a MIDI note-on as from sequencer, Finale, Sibelius etc..
  • a voice keeps track of itself and will be looking to accept a second MIDI note that will follow sometime after the arrival of the first MIDI note.
  • The first midi note of the pair is the start frequency and the second midi note is the end frequency. Frequency direction will not change once the parameters are set and sinusoid is in motion.
  • The first note-on message will have other controller data attached.
  • The second note-on message only provides a destination frequency.
  • When a voice is initiated with the first note of the pair, it should begin sounding immediately at the start gain.
  • This onset should have a global gain ramp-up time.
  • standard midi controller "Velocity" controls initial start gain of each pair/voice. 0-127 --> 0.0 1.0.
  • the voice only begins glissing at the instant it receives the second-note on, the destination frequency.

Duration info:

  • overall duration of the event should be specified by an unused midi controller that accepts 0-127. This duration controller will measure time for the total value of the event not just when the gliss begins.
  • The duration step will be equal to 1/10 of a second (i.e. 120 = 12 seconds). So if a second destination MIDI note arrives 10 seconds after the first MIDI note, and the MIDI duration value is 120 -- then the gliss is only 2 seconds with the remaining 10 seconds being the onset frequency held.

Gain:

  • Line~ attenuate or intensify is specified by another unassigned midi controller that will inform each new voice instance if the gain will attenuate or intensify.
  • The default for gain is always the initial start gain unless this midi controller instructs to attenuate (go from start gain to 0 gain) or intensify (go from start gain to 1.0) always within the total duration for each voice.

Special parameter:

The second midi note in a pair never contains any special parameter change -- it only signals the destination frequency and signals the voice to start moving toward the destination.

Score / Performance:

Overall, one way to "score" this instrument is to use Logic or Finale to write the score and then perform the instrument.

@equilet
Copy link
Member

equilet commented Mar 6, 2015

This was never another issue. Working on a 1st rev now...

@EdmundCampion
Copy link
Contributor Author

following testing of the first rev.

• need version that does not depend on held note, but just pairs notes to voices in order they are received.

• There is a gain scaling problem when two or more voices are activated. The thing clips and the output is distorted waveform.

• implement midi-cents

@equilet
Copy link
Member

equilet commented Mar 13, 2015

the gain scaling is just a result of the tanh~ object in the patch. if the notes should be softer, we can just multiply as needed within the poly~ voice.

@equilet
Copy link
Member

equilet commented Mar 13, 2015

submitted a 2nd edition for review and testing.

@equilet equilet changed the title Waveform-gliss engine waveform-gliss engine Mar 13, 2015
@equilet equilet assigned EdmundCampion and unassigned equilet Mar 13, 2015
@equilet
Copy link
Member

equilet commented Nov 19, 2015

this can be put into the depot after Ed approves the current revision...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants