Jump to content
Sign in to follow this  
torstenanders

Error: there is no controller named: cc20

Recommended Posts

I would like to define a new sound set to control a particular setting of the virtual organ GrandOrgue (https://sourceforge.net/projects/ourorgan/), a very nice and flexible pipe organ simulator. After investing quite some amount of time I now got some setting that allows me to nicely control GrandOrgue from Sibelius, and I would like to reproduce that control in Opusmodus. For that, I need to send certain CC messages and program change messages depending on articulations in the score. For example, I use articulations like 'I', to set the current staff to the organ division I (usually main) or 'II" for the division II (swell).

 

Now, I might be simply missing something obvious here (e.g., a typo), but I keep getting error messages like the following when evaluating my sound set below this message, but I cannot find out what I am doing wrong. 

 

> Error: In sound set grandorgue-organ, program ped, there is no controller named: cc20

 

Can anyone perhaps see what I am missing here? Thanks a lot! 

 

Best,

Torsten

 

(def-sound-set GrandOrgue-organ
  :programs
  (:group couplers           
          Ped (cc20 127)
          -Ped (cc20 1)
          I (cc21 127)
          -I (cc21 1)
          II (cc22 127)
          -II (cc22 1)
          III (cc23 127)
          -III (cc23 1)
          G_C (cc30 127)

 

   ;; sends program change messages to switch combinations for a certain division 
   :group combinations 
          P_1 1
          P_2 2
          P_3 3
          P_4 4
          P_5 5
          P_6 6
          P_7 7
          P_8 8
          P_9 9
          P_10 10

 

          I_1 21
          I_2 22
          I_3 23
          I_4 24
          I_5 25
          I_6 26
          I_7 27
          I_8 28
          I_9 29
          I_10 30
          
          II_1 41
          II_2 42
          II_3 43
          II_4 44
          II_5 45
          II_6 46
          II_7 47
          II_8 48
          II_9 49
          II_10 50

 

          III_1 61
          III_2 62
          III_3 63
          III_4 64
          III_5 65
          III_6 66
          III_7 67
          III_8 68
          III_9 69
          III_10 70
      )
          
 :controllers
  (:group Default-Settings
          Pitch               0
          Velocity-XF         2
          Volume              7
          Pan                10
          Expression         11
          Reverb-Dry/Wet     14
          Reverb-On/Off      15
          Slot-XF            20
          Start-Scaler       21
          Master-Attack      22
          Master-Release     23
          Master-Filter      24
          Delay-Scaler       25
          Tuning-Scaler      26
          Humanize           27
          Velocity-XF-On-Off 28
          Rsamp-On-Off       29
          Dynamics-Scaler    30

 

   :group Pedal
          Pedal                  64  ; not 'Ped'
          Sustain                64
          Sost-Ped               66
          Sostenuto              66
          Una-Corda              67
          Soft-Pedal             67
      
          :group Matrix
          cc1 1
          
  ))

 

Share this post


Link to post
Share on other sites

The controllers you are using in the program are missing:

 

:group Matrix

         cc1 1
          cc20 20

          cc21 21

          cc22 22

 

This should fix the problem.

Share this post


Link to post
Share on other sites

I see -- they need to be declared in in the :controllers section. Thanks a lot! 

 

I now got it almost working. Below is my current sound set again. I had to simplify the combination symbols to I1, I2 etc (the former underscore was confusing the OMN parser).


What is missing still is support for combining articulations like II+II2 (i.e., use division II with combination 2 of that division). I can have combinations like stacc+II or leg+II2, but II+II2 is only notated, the playback does not work.

 

Here are two examples. The first one works fine, but is not actually what I need.

 

'((q c4 stacc+II) (e c4 leg d4 stacc e4 II4+leg f4 stacc) (q g4 marc -q -h))

 

The second example demonstrates the problem.

 

 '((q c4 II+II2) (e c4 leg d4 stacc e4 II4+leg f4 stacc) (q g4 marc -q -h))

 

Specifically, whether I notate II+II2 or II2+II, II is executed, but II2 is not. The later II4+leg again triggers the combination 4 fine. 

 

I had a look at a resulting exported MIDI file, and indeed in the combination II+II2 the CC message for II is output, but the program change message for II2 is not. If II2 or one of its friends is used independently or in a combination like stacc+II2 it does work, though.

 

Is there perhaps some bug in the sound set definition here that only kicks in when user-defined articulations are combined? 

 

Thanks again! 

 

Best,

Torsten

 

PS: I only define support for predefined combinations of stops instead of stops directly for multiple reasons. This is more easy to define (less symbols overall), and is independent of specific organs or chosen stop combinations -- I can change the registration (combinations of stops used at certain moments) and even the organ without changing the score (generation). 

 

 

(add-text-attributes

 ;; Setting divisions and couplings
 ;; Note: I don't notate couplers with plus (e.g., I + II), but instead simply I and II 
 ;; (Notation revised manually later in Sibelius)
 '(G_C "G.C.")
 '(Ped "Ped")
 '(I "I") 
 '(II "II")
 '(III "III")
 '(-Ped "- Ped")
 '(-I "- I") 
 '(-II "- II")
 '(-III "- III")

 ;; divisional combinations for the organ
 ;; 
 ;; Pedal
 '(P1 "P: 1")
 '(P2 "P: 2")
 '(P3 "P: 2")
 '(P4 "P: 4")
 '(P5 "P: 5")
 '(P6 "P: 6")
 '(P7 "P: 7")
 '(P8 "P: 8")
 '(P9 "P: 9")
 '(P10 "P: 10")
 ;;
 ;; I
 '(I1 "I: 1")
 '(I2 "I: 2")
 '(I3 "I: 2")
 '(I4 "I: 4")
 '(I5 "I: 5")
 '(I6 "I: 6")
 '(I7 "I: 7")
 '(I8 "I: 8")
 '(I9 "I: 9")
 '(I10 "I: 10")
 ;;
 ;; II
 '(II1 "II: 1")
 '(II2 "II: 2")
 '(II3 "II: 2")
 '(II4 "II: 4")
 '(II5 "II: 5")
 '(II6 "II: 6")
 '(II7 "II: 7")
 '(II8 "II: 8")
 '(II9 "II: 9")
 '(II10 "II: 10")
 ;;
 ;; III
 '(III1 "III: 1")
 '(III2 "III: 2")
 '(III3 "III: 2")
 '(III4 "III: 4")
 '(III5 "III: 5")
 '(III6 "III: 6")
 '(III7 "III: 7")
 '(III8 "III: 8")
 '(III9 "III: 9")
 '(III10 "III: 10")

 )


;;; TODO: uncomment when errors like "there is no controller named: cc20" are fixed
(def-sound-set GrandOrgue-organ
  :programs
  (:group couplers           
          Ped (cc20 127)
          -Ped (cc20 1)
          I (cc21 127)
          -I (cc21 1)
          II (cc22 127)
          -II (cc22 1)
          III (cc23 127)
          -III (cc23 1)
          G_C (cc30 127)

   ;; sends program change messages to switch combinations for a certain division 
   :group combinations 
          P1 1
          P2 2
          P3 3
          P4 4
      P5 5
          P6 6
          P7 7
          P8 8
          P9 9
      P10 10

          I1 21
          I2 22
          I3 23
          I4 24
      I5 25
          I6 26
          I7 27
          I8 28
          I9 29
      I10 30          
          II1 41
          II2 42
          II3 43
          II4 44
      II5 45
          II6 46
          II7 47
          II8 48
          II9 49
      II10 50

          III1 61
          III2 62
          III3 63
          III4 64
      III5 65
          III6 66
          III7 67
          III8 68
          III9 69
      III10 70
      )
          
 :controllers
  (:group Default-Settings
          Pitch               0
          Velocity-XF         2
          Volume              7
          Pan                10
          Expression         11
          Reverb-Dry/Wet     14
          Reverb-On/Off      15
          Slot-XF            20
          Start-Scaler       21
          Master-Attack      22
          Master-Release     23
          Master-Filter      24
          Delay-Scaler       25
          Tuning-Scaler      26
          Humanize           27
          Velocity-XF-On-Off 28
          Rsamp-On-Off       29
          Dynamics-Scaler    30

      :group Pedal
          Pedal                  64  ; not 'Ped'
          Sustain                64
          Sost-Ped               66
          Sostenuto              66
          Una-Corda              67
          Soft-Pedal             67
      
          :group Matrix
          cc1 1
          cc20 20
          cc21 21
          cc22 22
          cc23 23
          cc30 30
  ))

Share this post


Link to post
Share on other sites

The display of the two examples is correct.

The Ped is a default controller and can't be overwritten.

How to use controllers as program changes please check the "VSL Cello Solo" file.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×