How to get correct list of filter modes from Engine.getFilterModeList()
-
I am quite new about HISE,
and I am trying to populate a combo items with the list of the Engine.getFilterModeList() that returns an object.
I was not able to find a way to get the filter modes list as an array of items (or at least the object keys, that should be something like State_mode_name in camel case).
So I tried to set the combo items manually with an order mapped thru a slider set to the Filter->Mode. I found out that the Modes are 0 thru 17, where the Filter mode (no filter selected) is in position 15.
But even setting the items manually with the following list (created manually)://Combo has processorId = Filter1 //Combo as parameterId = Mode reg FILTER_MODES = [ "Biquad LP", "Biquad HP", "Low Shelf EQ", "High Shelf EQ", "Peak EQ", "BiQuad LP Rez", "SVF LP", "SVF HP", "Moog LP", "1 Pole LP", "1 Pole HP", "SVF Notch", "SVF BP", "Allpass", "Filter mode", "Ladder 4Pole LP", "Ring Mod" ]; Combo.set("items",FILTER_MODES.join('\n'));
from the interface the combo selection doesn't set the correct value for the corrispondent filter. Items are correctly listed as the array order. Index order seems to change every time I compile.
Any idea ?
Thank you. -
@swina
I think the easiest way is to hard code it.
Here is a snippet:HiseSnippet 1199.3oc0W0jaiaCElJwZPsZ6fLEEEX1QjUNEAAVwNINcPQ8+wFichRbZlhtY.MEcLQnIcjnlYLJBPW1yQOIE8BzE8BziPWz8sjRxwJIpJIdPA5nE158yG4Ge7w2ixwSfI99BOfg0oylR.Feh4fYb43FiQTNnaSfwSM6i7kDOXjp5ylh78It.CiUOPqvHeNP3ye9M0QLDGSVnB.NSPwjdzIT4BsNUeIkwZibImRmjv6xU6hE7FBlHPwmUMKBlhvWfNmbHR61JlfNH+w.iuzrDwc6JUP6TtTIbk8qf2CipPv1C2q31nQtkpPbG5VdmxHfwSZ4RkBuARjj3qFz5B2YCFKdKOZBNi5SGxHZAav.0LGoFzXLk45LO33C.F4bVDpVMJT84l8otzq0uHjsVnA3BDICZFqjEkreDTxHAkxEQomYN.6QmJWXQymO1rKWsCNBo1aRRkHeAq7W4LaHTdvkaMAcAosmR3ZDE1sXwMgpe13EVVp8GeI7MHOXaJS4fM7qgg4KacNQ1ZzHBVVX8XSqqAP4LJm.GEvwRpfCEb7jgQNLfvTtqmXOAq.VLYpfqnvlpgmEP1v5Grx6+VpDOtPjBnRQdLxm.s+J0a4imls7IxZRoGcXfjTnzlv8Uyqx7POB5hWLGx1YBwtXZXJkIlcSCR4LgrWZP1IalscZX1MaLkRCydYiobZXpjIlJoAY+LgjZb1tX1TKULYmCrSpXxNIH0Hsc1IAoFosyNKH0Hs88jFj9B5dxCtc9lKYDJfICA4QjAd7P6WYck5j57J.pCxMleVrv525z55anmk3yrMPL1PUE5B+aGp0E.Rbx+PgjbDuP3Iaqqrf21znQoZKdvXDuTMq6g3kEvB7fICIdIqqncTUy7lEhexCqPLNJNkvQAuKmJOZJIVtsf4pKvpe+tksAwAZcA7XFpbUFV9ds3x2pMfgh5h2Ant5Z52J5BBWHIa7B91tMQRz7gTM5pYbJwSR0KLilj2n5BG0gHuYSh+ERwzPei2mUK9GEAd20S9uvpN6Zge7xpTIYhZJ+YSanifQf8brheqii0fyZqUn+KV5viNsQmv2p6XUiwz8lr5KDmq8qN8x.jah25jPG7jVeuUuidEbPmV8ZCacrUmtGzYgjSqZuT+euZMa15DXYmi50ROTmz8vCf8OpIXBRsJLMVK7FI2oQppEtvMfgj2rut9FOwFT4X2nYptgI2mJmkbi4QzruXlM6enT7YlN5VloywURgipbl+K3X7Uj9TynKErff4La+cK68gJ9vuOT9n4+yLU4dylNVvo3nL3PRj2LtlYFWmE.Z6QtLfvwKhV+zuW83jaupvbhygqW83.DaQz8O90m+a0pSmJXHu22H+i31oYkd7ElWunfuO4w4dXaR2SkvGbNsdm4CG99by3McnNX+gCuep4w+OfrmHBjT948QpaxnqPeXvjApOHDSTDkyILecU6Uz8QijKpk0DZ.g6FJ72pmXi1ZYiXi1yMpp8i8DuFG08Ue94iB0n3DO7SMyq9lWkLz91sZAfIpur60X7MGp6.b6kEXokEX4kE3NKKvcWVf6sr.qb+.0e3cs.oXRTNL.z2oU3UiLLZwQprwvzYv+.H8HqtD
-
@Oli-Ullmann Oooo that's nasty.
I recommend using the method from the docs. - https://docs.hise.audio/scripting/scripting-api/engine/index.html#getfiltermodelist
HiseSnippet 1174.3oc0W0saaaCElJNpn1aqncnX.6pQ3qTFxbsSyOMnHaIwIdMXKINycECnKnfhhJhKzjdRTswXn2sK186EXuK6IXXuH6MX6PJYK4DiTGWLfVeggN+xOd3geGotwJJKIQEibp8zgCXHmOzs2PoNpcDgKQGrGx4NtGRRzrXblpcGNfjjvBPNNU9ZiBmpKhr+9muZWhfHorBUHzyTbJ6a4845Bsc29a3BQGR.6o79k7d0sOfpjsUBUJfmJtMQCHzyImwNhXbaAWzSHIQHmO20m32jPCCWeE+GE1b0UVaEe+UCVEz3uwlatY3ZsHq8vMnTjys1OfqUw8zDMKAR5tpfg8hTuRls.Oimv8ELiPKTOXkyTiZGwEAcGUbRPHmE6VTppjUptu6g7.9X8Ekr6ZMfKhnbQyYgqCRstAPxoDjVLCR2ysGMlOPWXwfmOv8.IbBFRfylxPIyWzB+dE21JvCotQex4rNwfv3H7VuYykwveK83Z0fymDMtCW.Fag2Ba6UZbFSueXHip8pmapN3blugVEGpBft.PbK79xy3RlIlNSXxaJgj.9+7IyPicDByNX4Kk4FGKYcUB1S3mE0cZ1MF5EwDgmN45XZtrqScHyXSn0WFW238jB1Xqe53hPaUee0tpKLkgQUOXSApGnjffW8wdXpFiEZjv.abMquI2kvPieRwkd0+QY8ktr+l7GqDsIBgObkvybKI2btIygCWJfJKNLUR0bkDeUu7niP2x3WRDorkp8K0vvuG7.L03qu5hLCIXRLCmnIwZt7L7q35HbKqqBEkHvbY.6BXmacF+E3VO1Zz9GOD6kY+K2B2bIqtrkIeoRSXXcDKOIZEFpaVEDpNERtLsuOP3DFq5aUWtgfDGSF1Xb1x62LEocz5Xtepl4MRoIhx8AIO2thmtTFXecsWWqTw5HklcrzyTRpBVvW1TX3TskWZEr3oZ1PwEecA5ksaKcfXcDtROIOwslMdBZVqXIGUxCjb8wCX4xcTh.y8eyyWkUAk2Ka3WxQH3p1xtb2b1kQsUHdfgbYbWFxtEJOQ.88GrGQSFkLHuvZMfAMUlsjydrWBiGxntp5tGK4bsZf0271TXaOiK8EHGWm+DVzglG1CdnOwpqB7n81Fx4ybGcEu13620JtbCSltBgJPkqBRED8j76lIe4FfCyIHUMDmxDtdX45vMfzu40R5OqP7dtc4ZZzzw3BSAivQz+GXLeT4G4lMfn.fK514Gl24hMm84hUyV+O1ElMLbPjRxoYrCVPT0Mmp3ZdsFDpSL6mSYRZQ05296sOo7wqgboPd4sOAXwJpt+wuV4u1YW9.kfD+1V4uAukx00d7Iti2T32l93EmsCo2.kyL2SaNYd+Auepa9gN1Tre+A22w8j2A.62oRMu5wgDXptgH+nz98fOLfx.fJkLQhgbeAy.qL4lFYCf5wjAVg+E9karkQ1I2XqQFgQDzX0KnYi4L2etsUCfIo8SNpBe6CHiuxjMX5B7F9uv7EFkS0UBbk4MvGNuAt57F3ZyafqOuAtw7F3idyAZ9.rcR0p9Y8vHzgc229lHNN6KIP2nscF8e6ZeODB
-
@d-healey
ha ha :-) Yes, that's true! But isn't it just as much hard coding in the end, since you also fill the filterNames array manually? It's just a different way... It even seems like more effort to me.And I'm having a problem with Engine.getFilterModeList(). I get 18 filter modes:
filterModeList.Allpass
filterModeList.HighPass
filterModeList.HighShelf
filterModeList.LadderFourPoleHP
filterModeList.LadderFourPoleLP
filterModeList.LowPass
filterModeList.LowShelf
filterModeList.MoogLP
filterModeList.OnePoleHighPass
filterModeList.OnePoleLowPass
filterModeList.Peak
filterModeList.ResoLow
filterModeList.RingMod
filterModeList.StateVariableBandPass
filterModeList.StateVariableHP
filterModeList.StateVariableLP
filterModeList.StateVariableNotch
filterModeList.StateVariablePeakBut the filter only has 16 modes... Or am I misunderstanding something here?
-
@Oli-Ullmann said in How to get correct list of filter modes from Engine.getFilterModeList():
But isn't it just as much hard coding in the end,
Maybe, but it's more readable, you're not just looking at magic numbers. Also if Christoph adds new filter types in the future it won't mess up your list.
@Oli-Ullmann said in How to get correct list of filter modes from Engine.getFilterModeList():
And I'm having a problem with Engine.getFilterModeList(). I get 18 filter modes:
Maybe there are other filter types that can be enabled via pre-processor, or perhaps some were removed, or maybe there is another filter effect that makes use of the extra modes, I'm not sure.
-
@d-healey
As a developer I am always trying not to "hardcode" options that are going to probably get an update, but in this case my problem was to associate them to a combo items with a correct index in order to work without any hardcode. If you use a normal knob with any value from 0 to 100 and you set the parameterId to the Filter->Mode it works correctly. There is also the problem that "Filter mode", that means no Filter mode selected has to be added to the combo's items in a position that doesn't make sense (see pict below). -
@d-healey
Yes, you're right. That's definitely the cleaner way! :-) -
I recommend staying away from the filter module entirely, and instead create your own setup in Scriptnode using svf_eq for lp, hp, ls, hs, peak, svf for allpass, notch and bandpass, and then maybe one pole, ringmod and moog on their own.
svf node also has lp and hp, and they're the same ones that are in the Filter module, and they're busted.
https://forum.hise.audio/topic/9788/hise-filter-display-inconsistencies
There's no point in using non_svf versions of lp, hp, ls, hs, peak as they will introduce some minor noise and produce zipper noises if you automate them.
To sum it up: the best filters in HISE at the moment are in the svf_eq node and allpass, notch and bandpass in the svf node in ScriptNode.
-
@Oli-Ullmann
Hi, thnak you !
I will start studying and create something with Scriptnode (yes I too noticed that the Filter module create some glitches when change some parameters, and it happens also with the VST compiled used in different DAWS).
I didn't try the standalone if it has the same problems.