It is currently Fri Mar 29, 2024 3:11 am


Crescendo pedal, Stepper and other mechanisms

Sampling pipe organs and turning them into something you can play in Hauptwerk.
  • Author
  • Message
Offline

puciak

Member

  • Posts: 203
  • Joined: Sun Jan 29, 2006 6:56 am
  • Location: Chorzów, Poland

Crescendo pedal, Stepper and other mechanisms

PostSat Jul 18, 2015 6:40 am

Hello,

I was trying to implement not very complicated model of crescendo, tutti, handreg. in my organ, however I think it's impossible, but maybe I'm not right. Here's the problem:

Handregisters should be non-latching, because they need to pass the impulse further. Further, I mean to the next switch only if that register is not turned on Crescendo and only if Crescendo is enabled. It's a lock if a register was enabled by Crescendo, not by "hand". Then the same thing with Tutti. If tutti is enabled, user can't enable or disable handregisters. This lock was working, however I guess I need to add fully transparent images overlaying images which shows actual state of "engagement", because in this instrument, user always see which stops are turned on thanks to little diodes above clicky handregisters.
Then I tried to make Crescendo, I made 20 switches for 20 steps, 20 combinations without capture and memory, 20 * 46 (40 stops, 6 couplers) combination elements where I set "InitialStoreIsEngaged" to Y where I wanted to. Then I connected it to pedal, but it wasn't working. Hitting these switches do nothing. If I change "InvertStoredStateWhenActivating" it was working, obviously not how I wanted to, but it was changing the stops.
I wanted to connect reversible pistons to this mechanism, so I made 6 switches, but again they have diodes over buttons, so they should be latching, or have transparent overlay just for clicking? And then, again I broke down. I couldn't connect these switches by switch linkages to non-latching handregisters, because they're non-latching. I just wanted to pass the impulse forward.
And the last step, Tutti. I made 46 switches, where I set "DefaultToEngaged" settings, then I connected them to the stop-controlling and visible switches, by condition of Tutti button. It was working when setting to "on", but when disable it, it wasn't recalling the previous state. It was actually disable all of the registers.
To be sure, Crescendo was enabling separate 46 switches, connected by condition of Crescendo button state to stop-controlling switches. Last 46 switches of two step handregister lock were also connected to stop-controlling switches with no condition.
Is it possible to do or I want to much?
I thought maybe it's better to leave it and leave the Crescendo pedal to program by user, because there is Crescendo pedal for every organ in Hauptwerk, but can I make any default program and save it with the sample set and the users will access it when they install the organ?

On the virtual console, there're stepper increment and decrement buttons, so I assigned DefaultIO to 900369 and 900366, but they're not working. What am I doing wrong?

EDIT: "Handregisters should be non-latching", maybe they shouldn't be, but is the only solution to add fully transparent overlays, which are clickable?
Last edited by puciak on Sat Jul 18, 2015 7:29 am, edited 1 time in total.
Piotr Grabowski - Virtual Pipe Organ Sample Sets
https://piotrgrabowski.pl
Offline
User avatar

mdyde

Moderator

  • Posts: 15444
  • Joined: Fri Mar 14, 2003 1:19 pm
  • Location: UK

Re: Crescendo pedal, Stepper and other mechanisms

PostSat Jul 18, 2015 7:07 am

Hello Puciak,

I'm very sorry -- I don't really have time to go through and debug your organ definition in detail for you, but yes -- you can implement any binary logic at all within the Switch/SwitchLinkage mechanism if you think about it carefully enough (even a fully-fledged computer programming language!). Until recently, all of Hauptwerk's master combination system was implemented entirely within Switch and SwitchLinkage objects, and lots of other sample sets have similar complex mechanisms within their ODFs (e.g. the theatre organs and many of the Inspired Acoustics and OrganArt Media sample sets).

Often the trick to implementing complex mechanisms is to introduce additional intermediate (non-displayed) node switches so that states from various objects can be combined correctly to/from them. Try sketching the switches and linkages out on paper and then drawing up a logic 'truth table' to verify that the input switch states combine in the desired ways to give the desired output switch states.

Dr. Reiner Suikat (Pipeloops) provides organ definition development/consultancy services to sample set producers (for a fee, of course), in case that's of any interest: http://pipeloops.com/
Best regards, Martin.
Hauptwerk software designer/developer, Milan Digital Audio.
Offline

puciak

Member

  • Posts: 203
  • Joined: Sun Jan 29, 2006 6:56 am
  • Location: Chorzów, Poland

Re: Crescendo pedal, Stepper and other mechanisms

PostSat Jul 18, 2015 7:38 am

Thanks.

What about stepper buttons?

And is it possible to attach default organ settings to sample set (to program the Crescendo)? Also I tried to connect Crescendo pedal with that programmable default one (in manual there is information about number "5", but 5 wasn't working, even 900005). Is it possible?

Is it possible to preprogram combination with no possiblity of capturing and memorizing (only by setting "InitialStoredStateIsEngaged")? I couldn't get this working.
Piotr Grabowski - Virtual Pipe Organ Sample Sets
https://piotrgrabowski.pl
Offline
User avatar

mdyde

Moderator

  • Posts: 15444
  • Joined: Fri Mar 14, 2003 1:19 pm
  • Location: UK

Re: Crescendo pedal, Stepper and other mechanisms

PostSat Jul 18, 2015 8:05 am

puciak wrote:What about stepper buttons?


Are you definitely using the current version of Hauptwerk (v4.2.1)? There were fixes in previous versions relating to embedding Hauptwerk functions in an organ definition, e.g. this one in Hauptwerk v4.1.0+:

"Master combination system functions weren't working properly when triggered/embedded in an organ definition, and could sometimes get triggered twice (such as the MDA Salisbury stepper pistons)."


https://www.hauptwerk.com/clientuploads/documentation/ReleaseNotices/Current/HauptwerkReleaseNotice.pdf

We aren't aware of any issues with embedding functions in the current version, although if you're certain you're using v4.2.1 and have set it properly, then I will try to double-check that the relevant embedded functions are working properly on Monday.

puciak wrote:And is it possible to attach default organ settings to sample set (to program the Crescendo)?


Yes -- you just set the switches' InitialStoredStateIsEngaged attributes.

puciak wrote:Is it possible to preprogram combination with no possiblity of capturing and memorizing (only by setting "InitialStoredStateIsEngaged")? I couldn't get this working.


You can certainly set the default state of any switch using InitialStoredStateIsEngaged. Note that if the switch allows input/output then usually the attribute is only ever used the very first time you load an organ. At that point it defaults the user's preference for the switch's default state, which takes precedence from then on. Always use the design tools options to re-default all user states/preferences if you subsequently change things in your ODF, so that any ODF changes are picked up again.
Best regards, Martin.
Hauptwerk software designer/developer, Milan Digital Audio.
Offline

puciak

Member

  • Posts: 203
  • Joined: Sun Jan 29, 2006 6:56 am
  • Location: Chorzów, Poland

Re: Crescendo pedal, Stepper and other mechanisms

PostSat Jul 18, 2015 8:43 am

I'm using 4.1.1 version, so maybe I'll try to update.

InitialStoredStateIsEngaged is an element of CombinationElement and I doubt it is working because when I set combination with some elements set to 'Y", switching the switch enabling combination, does nothing.
Piotr Grabowski - Virtual Pipe Organ Sample Sets
https://piotrgrabowski.pl
Offline

puciak

Member

  • Posts: 203
  • Joined: Sun Jan 29, 2006 6:56 am
  • Location: Chorzów, Poland

Re: Crescendo pedal, Stepper and other mechanisms

PostSat Jul 18, 2015 9:54 am

I think the main problem with my mechanism is that I can't synchronize timing of switch linkages or I don't get the idea of reevaluating value. For example:

Switch 1 => Switch 3 (ConditionSwitch Switch 10, SourceSwitchLinkIfEngaged=Y, ConditionSwitchLinkIfEngaged=N, ReevaluateIfCondSwitchChangesState=Y)
Switch 2 => Switch 3 (ConditionSwitch Switch 10, SourceSwitchLinkIfEngaged=Y, ConditionSwitchLinkIfEngaged=Y, ReevaluateIfCondSwitchChangesState=Y)

and now, let's set:
Switch 10 => 0 (condition switch)
Switch 1 => 1
Switch 2 => 1
Switch 10 => 1
Switch 10 => 0
and now Switch 3 has 0 value
Why?
Piotr Grabowski - Virtual Pipe Organ Sample Sets
https://piotrgrabowski.pl
Offline
User avatar

B. Milan

Site Admin

  • Posts: 4393
  • Joined: Sat Aug 30, 2003 10:15 am
  • Location: Sarasota, FL. USA

Re: Crescendo pedal, Stepper and other mechanisms

PostMon Jul 20, 2015 10:48 am

I'm afraid we aren't able to provide further help as this is beyond the scope of our support. I believe Martin mentioned to you in the past that you can use the CODM which will handle all internal linkages automatically, or you can seek outside ODF creation assistance if you are not able to figure out what you wish to do. Sorry we cannot be of further help.
Brett Milan
Owner
MILAN DIGITAL AUDIO
Offline

puciak

Member

  • Posts: 203
  • Joined: Sun Jan 29, 2006 6:56 am
  • Location: Chorzów, Poland

Combinations don't work properly

PostFri Jul 24, 2015 11:04 am

Hello,
I'm so annoyed, I spent so much time and I guess I found a bug, or maybe that is expected behaviour. I'm using the newest Hauptwerk version.

I created combination with
CombinationTypeCode=2
CanEngage=Y
CanDisengage=Y
AllowsCapture=N

I added one CombinationElement to the Combination with InitialStoredIsEngaged=Y, Invert=N, CapturedSwitch=NULL, MemorySwitch=NULL

Then I activated combination with a switch, and it does nothing to ControlledSwitch of CombinationElement. In my opinion it is unexpected behaviour. If combination has initial store engaged, it should engage controlled switch when activated. It does nothing.

Then I set AllowsCapture=Y and add CaptureSwitch, which was default to engaged (in Switch table). Then again, activating combination does nothing. Switch was disabled, even though it was set DefaultToEngaged=Y, and InitialStoreIsEngaged=Y. Why????
Then I set Clickable=Y and it started to work......

Should it be like that? I guess I had to pack all of these switches to 1px fully transparent images and put it in a window corner and pray that nobody will click it....

Of course my will is to make combination which doesn't allow capturing, but I was curious what should I do to somehow make it working as I expect.

I can't get why even when I set Clickable=Y, the capture switch is turned off. In combination there is InitialStoredStateIsEngaged=Y, and in switch is DefaultToEngaged=Y. I reset all of the organ settings.
Piotr Grabowski - Virtual Pipe Organ Sample Sets
https://piotrgrabowski.pl
Offline
User avatar

B. Milan

Site Admin

  • Posts: 4393
  • Joined: Sat Aug 30, 2003 10:15 am
  • Location: Sarasota, FL. USA

Re: Combinations don't work properly

PostFri Jul 24, 2015 2:31 pm

Hello Piotr,

I'm not sure why you would want to do it that way? The combination system wasn't designed for that so technically it's not a bug. You can instead just do it via switch linkages which is what I imagine we would do if trying to do the same. Just create an extra node for each stop you want to be triggered then connect the stops to the node and the node to the switch.

If a combination doesnt allow capture then it must have memory switches. Clickable images have nothing to do with anything here.

When making any changes to combinations you must first delete the combination files prior to reloading, otherwise the old combination settings are still being used until new file is written.
Brett Milan
Owner
MILAN DIGITAL AUDIO
Offline

puciak

Member

  • Posts: 203
  • Joined: Sun Jan 29, 2006 6:56 am
  • Location: Chorzów, Poland

Re: Combinations don't work properly

PostFri Jul 24, 2015 7:51 pm

There're many general and crescendo combinations in organs which are not programmable. This is the behaviour I want to get.

I think I will pass and don't program these functionalities. I think that adding some sort of simple code programming to describe switch behaviour would be a nice feature, which will save a lot of time for implementing more complicated behaviours. As you said before, maybe current switch system is powerful, but for me it's very limited. It's hard to make an OR gate, there is no "bang" message which just reevaluate switch linkages even if condition switch remained unchanged, there's no way to control the order of switch linkages reevaluting.
Piotr Grabowski - Virtual Pipe Organ Sample Sets
https://piotrgrabowski.pl
Offline

puciak

Member

  • Posts: 203
  • Joined: Sun Jan 29, 2006 6:56 am
  • Location: Chorzów, Poland

Re: Combinations don't work properly

PostSat Jul 25, 2015 2:30 am

Sorry, as I see the main problem of my actions was that I haven't deleted combinations files. I was convinced that if it's not available for capture or memorize, then it's not saved anywhere. Now it changes a situation a bit. Thank you.
Piotr Grabowski - Virtual Pipe Organ Sample Sets
https://piotrgrabowski.pl
Offline
User avatar

mdyde

Moderator

  • Posts: 15444
  • Joined: Fri Mar 14, 2003 1:19 pm
  • Location: UK

Re: Combinations don't work properly

PostSun Jul 26, 2015 4:51 am

puciak wrote:As you said before, maybe current switch system is powerful, but for me it's very limited. It's hard to make an OR gate.


To OR the states of switches X1 and X2 to Y you just create standard (with all-default attributes) linkages from X1->Y and from X2->Y.

To AND the states of switches X1 and X2 to Y you can just create a linkage from X1->Y that's conditional on X2 (with all other attributes at their defaults, especially ReevaluateIfCondSwitchChangesState).

puciak wrote:It's hard to make an OR gate, there is no "bang" message which just reevaluate switch linkages even if condition switch remained unchanged


You shouldn't need that. Probably you just need to think more about whether each switch should be latching or momentary and whether you want the effects to be performed symmetrically or asymmetrically. E.g.if you want to implement combination-type pistons that just set the states of latching switches (e.g. stops or stop-nodes) then make the combination piston switches momentary and make them perform their actions using the SwitchLinkage.EngageLinkActionCode only (not DisengageLinkActionCode), i.e. asymmetrically. You can use the same method anywhere else, i.e. make your actions performed from a momentary switch that's pulsed on/off briefly, with the actions performed only via its downstream SwitchLinkage.EngageLinkActionCodes.

puciak wrote:there's no way to control the order of switch linkages reevaluting.


If all else is equal when a Switch changes state (e.g. if there are several SwitchLinkages from, or dependent upon, the Switch) then they will be re-/evaluated in the order in which they appear in the organ definition. However, if you design the mechanisms appropriately then they shouldn't normally need to dependent on that order.

(The exception might be timer/delay-type mechanisms, which are admittedly currently rather fiddly to implement, but we do have enhancement requests logged to make that simpler for sample set producers in the future.)

Anyway, we have the Custom Organ Design Module to make it fairly quick and easy for people to make conventional sample sets, specifically so that they don't need to learn the full organ definition format (which takes a long time to learn, and often involves us providing lots of support/training, which we don't have the resources for). The CODM, in combination with Hauptwerk's native master combination system, should be able to do everything you need for 99% of sample sets.

(I've merged this topic with your previous one, since they're essentially the same things.)
Best regards, Martin.
Hauptwerk software designer/developer, Milan Digital Audio.

Return to Creating sample sets / recording organs

Who is online

Users browsing this forum: No registered users and 1 guest