• template or tutorial for custom c++ scriptnode?

    38
    0 Votes
    38 Posts
    4k Views
    griffinboyG

    @Morphoice

    Doesn't even need to be used once. There are approximations or lookup tables that can be used.

  • ScriptNode - switching between myultiple modulation signals...

    7
    0 Votes
    7 Posts
    622 Views
  • Emulating vintage DACs with bitcrusher & μ-law compression

    6
    3 Votes
    6 Posts
    751 Views
    ustkU

    @Lindon said in Emulating vintage DACs with bitcrusher & μ-law compression:

    @Morphoice yeah I tried 512 but no difference.

    Since the mu law is a weighted repartition of a signal, the ratio oscillate between linear at mu=0 toward logarithmic for higher values. So the higher mu the less impact on higher signals. All that to say the difference lies in the tiny signals like reverb trails, etc... So you can keep crushing higher signals like falling fire from hell on a nursery while enjoying delicate small signals with a warm latte

  • Wrapping Oscillator in Soft Bypass within Clone Container = Crash

    23
    0 Votes
    23 Posts
    3k Views
    CasmatC

    @HISEnberg Yeah its coming back to me now, I got it to work after leaving out tempo sync abilities... I'll do some more testing myself, but it seems to be a bug

  • trigger something with audio in a dsp network

    6
    0 Votes
    6 Posts
    507 Views
    DanHD

    @Lindon @Morphoice and the control nodes, in particular the bang node

  • Compiled Faust node breaks upon being loaded into a multichannel network

    7
    0 Votes
    7 Posts
    668 Views
    A

    @Christoph-Hart definitely something like that, see my second post where you can effectively trick it into working -- the node detects the channel count of the network on load, and doesn't react if the network channel count changes.

  • Invert a dspNetwork knob value

    5
    0 Votes
    5 Posts
    316 Views
  • Convolution Produces Silence when enabled

    4
    0 Votes
    4 Posts
    306 Views
    LindonL

    @ccbl your welcome.

  • This topic is deleted!

    1
    0 Votes
    1 Posts
    6 Views
    No one has replied
  • How to reach -inf in the core.gain node?

    11
    0 Votes
    11 Posts
    463 Views
    ustkU

    @southfieldsound you're right about 32 bit and the test I have made confirm there's still not zero bits after -1000dB, and even batman can't hear that...
    But superman could! After all, each -3dB just divide by 2 the previous factor, so you never reach 0 until the last bit can computationally handle it...

    Now to be strict, the math node does the job of nulling to death, so yeah, if you need pure mathematical silence, use this instead.
    Just pair it with a smoothed_parameter node to prevent clicks and you're against any upcoming super hero!

  • Getting an Array of ScriptNode Parameter IDs?

    Unsolved
    5
    0 Votes
    5 Posts
    231 Views
    C

    @d-healey Thank you, yes the comparison will work. For some reason, getAttribute() works with the string I pass, but not getAttributeIndex(). In any case, I've got all my answers, and thank you as always.

  • 0 Votes
    39 Posts
    3k Views
    LindonL

    @aaronventure said in How we can display the gain reduction value from the ScriptNode ( updown_comp ):

    well......
    yes the lower panel seems to be quieter, and assuming this is the "after" panel we are pretty much back where we started - the inflator is an expander - so it should be higher not lower....

    Meanwhile the skew seems to be connected to some non-existant node called unscaller, and removing that doenst seem to allow it to connect to either of the pow nodes...they seem to be from some other network:

    38e9869f-fb53-4d21-afc1-6143915a2b87-image.png
    so I cant get anything to connect to the pow nodes, and still the text display = 1.0...

    As I say I think we should just call it quits here.

    Actually I got the pow to work - bu tthe advantage over just displaying the original pre and post peaks escapes me... hey ho, lets all move on.. thanks.

    HiseSnippet 4164.3oc66rsbaajkfxFxQzdlLW7Ty9XWZ1pVHaZZBnKVJdcYYYKknZ7EVlJ1IUpDMMAZR1k.Av..JRMoRUyCyCyGz77V6i6i6mvt+A9OX2yo6F.Mn.knTbThSMrRrH59b5y09bAra1jTVfGy6vj.dTDK0vn10ZGG5xRRBiMpszAmDwLpcKyNmDjN3oCn7.i8elQsaax.DiCn96LpWOVreH0yXmShnIILOiZ0t1mhPVaoqaH97tGuC0mF3xJFxv3MgbW1y4C4oEi1d6+H22eOpG6.9PMnWa68cCCdZne3HfqtlYKiHp6Qz9rWRQvVvzn1h65wSCi6jRSYIF0t9NgdmzYP33.I7ugmv65yvGrM5.Kjb38B88PNFG03oC39d4ReBnKL0zEWSpKts4K3d77wKzI+JwDjBLz0G0VnL6csRrmsN60Ri8pfkpowRWWxR+ZyNtw7nzhYP94ll6G.1ndTPsqyJRXMVXPcymFBPDj1bH8H1dwvC4XXsQqVMHv+rxCqWu98uO4UQo7v.h8mP97DFIy5S73IQ9zSHcEtAIHjO585GAw+TVJIc.ijHXcxdeAYXn2HeFglHFuLWPR.uDWVcviIIkbLMl30siXHxiHBG4l8YoOShiz+UNs0xcxHfyxnfqQ5YIwDKd.Avl3RA8BBYDidDIHzCehlRFCrMrF3ZkFR5JgY2rUSwEDIaP9C1qnw13JYC7bF6eJ11BMOkg24Lg2FkpBD14y2auce8gOe2W9oG7Y.h1ar5lqIk6CFv.4gFqjo3vHVbJmkHEpSBGABb.oO+XMgdHCjJD4WNZHruHHf4mPFNBHFH11M.UVAlnNgFDB3FmY17YA8SGP5EFqaT0kuBt3QjusNgrrTrdt.wk+jxxSCD.MNAl2t92kIc7DxXHTCI7XVbL2SJEdrdzQ9o5DJrmXFzd1j7kJlejxTm.QevkKB234MBUVgDWPfCGx+KRP1auCJo8BCIV97iXj2xC7BGSRgcvMHrT2UZVWXuaBZlWyC5KEs14nZUrJfQTXpmOPEFDfR9rz+sDB0yiPII7gQv1mHJnXDJbkxFVLofw6CdmZp91neXV3BXMZiXZsba6kaPVuE9+k7Da6TM3NJvs2rkhydKnaYLOTwArLOzi6R88Og7mGwhOQvKwHSobQP0aLCBgJjAjGAYHc.tPIg3VsLKiPx.wMERi.aRk9T7jl0aKTvX1k3mBDpKjFwp2n.WL5l0J0+150WR.nGMk1TQ0GI2I1TR51.AsDv.auddHvt6DNJvKA1L1f.LBrmgVeorOjuBD2x9kDTAzr0WKf9qlbXRJMNsAYxgPl3FjSNbHOP7G5juVacZ0rEBu.XPG6OhQrPIkGvS4fdPNDr2LJLgKhU2ZEMzA0sTvhYQPFqTKXfuCsAsctrJDmedpPDtH3hJzIVqhdpnRZpgTdRsQbec3nTd.qPu0GUbK0uYOHDyS78sZMwwYOwGjr8QDkEyXI+SRywC3oLbRdOHkRxyX8fEzyZZU+JnHHW2B0t17MHUaHTBmzX+gEOqBq320ubLkmS6hwTDlYUVtkEtRn0AfFYXqkYPYWTnxJXpdT+DlLriH9O7eXh6.V53v3iZho7fzR.0fHjw8GMDniLGgJoM0McD3WE.A8ySKHwkXABGaklj8CDxhnXfFDNFvkMrKyCpwrAFgJUQWsjMJwyKIJ.jucC5C5PQh6jnWJW8Wy.kDKXp5SZPVVVNzg8lHpVIyPRBCdYXJ6UxcuKU+6pSldpd8pbNT4FG56Ct3UMsz4+LPzJXDHrf8TXSxADpSsbwulyt3W8Zyck1ZM.CC1G1b+pHVvrpX2P4ffEJq3J.zTQYx+RUYxc7g78wFbnZ3aX9GCB6ZaHX3h1Mt81Fe99OC7PyVFXEKRuBi8L1wPyKxpuWx7YrjiRCi.A6ogCiBCP5WaQIQ+EJhJ7VEz7WZp6xZLAPqFRzSx9RlKa1yoPsmv2MgPjn7kSgkRUMjHovdPSXvN59G.thBB8wl5CYiTRIf+mc29jBoMXakHJkG.MtOTHWFC1seVeW2xbMmMsWes0W2YUCXq+P8I1Zss13ANast1DN3LN1arlyFs1biUMDZzZOyTT5VtUaeOnxrkWVTt19PunSfGums3Qn6L+vwuE1Cj.86wfID6gq+ckzCeTYMsnVCgB35lssk5WmL8K9ktgwf8+0TO9nD8FRki2ApbSezwbuzAEZtwaOfw6OPqm0uYaiYa1KwLNSwL+i4X429OUZ4qettxEV4+52pakOX6jTVjlzs8+6e4u83gkaSW5psnYmiXiMhJrPhWAPdrGn46XpnXebFEzP14RafNcapPCxXWazzxcMiup.0DPzjRsphsiF.IuOQmGeu0J87xh+Zy17T2AUyiKTAOBQM9gfGUu.heg4tPVS2zBF75l68EWAusASI8qmEu4KDDujigNS.sdUp4SLvesE.QR8BHp82MKxgDgUgEyNHrM.uEzWEzdxqAlGZZzOz8Hzs8zIdTNn6fPX4pZy6xjeZw4VcYe1VKYQU8eAMMli60AcfrU7rlPyzApmakEiuCTpq3g+O3iZRa74ZpIsylrHCmgp9.gcR8cHNfznTTafwa.cO50BgHfZlgjHOAiphAU3J+YvZIFqcn+IQCBC3t3PRHxX8mLDpKKMi++LZxATtOtAnynDHgr2qB5..KdGenC3KgFlAJtGTzTX7IXce3FILkN30xha5l68VhWKbfPMr7s6UB.bcyR6HUc.aNTDabASCzn0NK3DlndAvODv.UQJVZQjl0MGEj.0ZBwNKwg+FAGBtJMymujKsfezP9r4FwqRMqnACih.HG.0WxRELEXMCXtRqffCwPpllQgiMZqGk8FluQTihQkHrHhf8LvPSgfanydBRb9BdvaJW4CvkzISM16dbmxYNDevf9RcmNjnxMivmZoelrh2SM9SFkFND15IzwFZloaXBwO3oFyzKRNcUNMYnddVnLuiqqbXkjU5cdNNuUSV4bmMYydqyvFkbF3ZZxMXNg9qKS+aBzOl0TLQUTVgy4HuWuJmvZU5ScKTfOF7dYw1yzWDiSOIqR4oB2O8Hvyh56xijo6XZTZqRIe.voIYJefaIUFxYp1NHm6hrAs1BpmfT4KfjdIym5CqLHxJW15l7fdhpCx42LX+XLVul.ovPjmnzFvE01.tXwFPSL1r1lOY49Ea7jOKcNb84QFkvq7NK4XFUSnaXdu0KSpEMECTPqaC3a2R9wdssZYaugsgZiwn3iy2Y+aMscZto.rsVc8GrkyVNSwIUAgw7o.tgIvByGa8QlLQEQE70C.LEf0ZsUasosylmhuNMDFeeML2TwFDX+eIfm15XOaqyhl2aioLNfFbNMN7fnQZJgsZtk.JmU2XKmMWCa.aJkvogX1NMB1PWML2FGnlHM95LbX6LFqyNOtT4n.hWA6OxgDuYQHwq5HhybFQI55Qhtk49IuAmEJQISoC0rokeqt4vPuJRwcasTb4PTkhUaAt3I5VTyrpqPKwJ+17BwJ.nJNQeAtPw5mVqsH14WQMKhtRc714hT01hlTOOmKVYa.FW3x1LOufS5EgoUaE18R48cfZwnTYGBAnjg.L0vew225L1hIP4bT8KbEIKypFhRkx7AueloYxntWX2r09Iialj+qxKCGuJsuDieh6j8whrMGp5Mz6zgVUopJfnJQc5U4Rj75RmD55PVdiysp7rVj7Yz3oqJWXEkyLitijXocpatZrpyQ0x+.jsUkiKKYo8EJca1qaPG+uWgdNCVUbVmlNSf8EOSvUk4rJKn9aQXgYtKcQSO9wUKYvDUn9UHbtx0rbeJIj2X9diKe41uWdiKe41U+FWd2iOUV+UmCacgFQfvUpF48z6f5cOdVuCpxZjnvwUWGD9d4pRiHP3JUir11umzHk22bpdtblmdtxTDYnbdYsNu2K5ENE1B48QgDaW0u4t7Gbrxdqzenxf0q9gUv509YavZm+Yv5or0q+OCVOUv5UunAqW8mmAqW8Crf00t3AqmuWQlVrKUGKpiovosWu6we+rW4ndvV+i+qi+OHyber9KU7rdKRhZItn+3eqdds2mmfqXj2+6lOOY9R0K0NggGMjJ9ctuTGKK8yPwuSN4MMeK8Xl3t.HRU86DO2KLdH4SYPJd7m3w9LtPK+2y6EZIZtuPKuxMEXgChoAIQgILa8Udp4bJ+iplNJnL3xgJAEJd6AhmFbez1YC5nOXaZPoECdtzJ8Bt1474+4w6FfGUsNhiM4qRbAgkNkOQ6Q9Ir2hGyIacDKF1Qe3OiF6A1E2RmllqcV2sG6K4c6Ywexc2d9.3LSIxKN0sC6WY1QbcB1M3XlOraTvi+FSUXvrQKuc5EgAgYmzjBC8qYow798YkyGVk.8jzTp6QEG0si290LeFMQaK1+51OGpVmFKdeqWNcg8E9pXUo85ewTxtDLF.4G8y51MxNGWuALLtHEkg.ydjjKB1mOG94IrCjGV0By39x2TtW4XRt7tL+xFiKzAky9G9Cy209Y8g4a9Cu.w3I+j9HY96MgbMNDgoj7iis7p3n9cUPigT23vCU+JXXTsORLBH2AhtDVx7E3yjScH4MLFB4DOz0s7RcJDctrHt5kEw0trHt9kEwMtrH9fKKhad9Hhkrn5WD2a.kt0dWYSV0jUsIOucYWPE4wxEcsyGIfMYOturVc7Ft.aev+H4jaKOhU2O6HQ0zKIJ6NaXr.zUBTTPXbp0xIodBHa5y6JtVs0q+RxiHNOjPt+8kGIW79zjc.dgoEGjkC6C61A35Ra500wWjK2ZPh3Duasr.D4884dazfX6.esoMdmgjG2jyFaILJzE3lidc4g34PA1tCXtG0Mbh0x4GsGPBHha0FdfYIgwjthXNDE.h28Wc7DZEg2awGQzVCbzkKHALYNCIGQc+k.wokhgH2G+NPQwGPcAkqS8gdw7HcYoiYr.RKBMviXWWbzrzWSw.hk7dq2pA7eEKH4tvpu9CUKJ4LV05xKtLDZn9P9DKZitMf+dn7DTCTiRtCwx9dZicWRWXr7AxIRKRLzWRbPBfiXsyetaiBvwaGEkzCu3JfxFurf1ec853c8zZBROazfQ9DRBTtmapi0j+8GkeG0EZcVbc0ekH.N.7dVYFDfRzIVC4vp0vdEbsf+YxJ4LYXf+Ih0IgLd.nF5BRNxRJEQBeHlpgA7nOmlfVXvCH2ZiWyTgTf2rrTzo9qtmMJ.iowQUyNE7ZCBDkmFz2mcnD7Fqg9iSOn7VxhKkCnlocSrbtik0j6Zux8kSQtGp9BiKM3cAy8JqrBLm8CIRYYLz8GIY.MBu293CGZKYQm6LAfKSkeGxjuwIyAbt9.qsm7p.l6MAlLo6jfNNJSYy00ozcZ0r0FNvPeiCLXqlq9.76qVE.q8vyiN0kBVlHoDOkY.zppoczl1QaZAeJgQBA56qgSCh15CFQbmlvIB3o6tdKzio2He+bn.GsSOpizN.AhH7TLdBrOqOCuQ7YwfDASJXfIMHk3qFpfN.CSih7O4P4iRDTdZ4Qyx.NeQE98XrVY3a.kCAisVn2Ognupvi37ZQWeXc0Ev.uOvPzUdiW1fjsbq7PCi+e.GyPZM
  • the limiter in scriptfx can't brickwall

    3
    0 Votes
    3 Posts
    235 Views
    Dan KorneffD

    There are some helpful notes in the source code:

    /* REGARDING THE MAX PEAK: This method assumes that the only important * sample in a look-ahead buffer would be the highest peak. As such, * instead of storing all samples in a look-ahead buffer, it only stores * the max peak, and compares all incoming samples to that one. * The max peak has a hold time equal to what the look-ahead buffer * would have been, which is tracked by a timer (counter). When this * timer expires, the sample would have exited from the buffer. Therefore, * a new sample must be assigned to the max peak. We assume that the next * highest sample in our theoretical buffer is the current input sample. * In reality, we know this is probably NOT the case, and that there has * been another sample, slightly lower than the one before it, that has * passed the input. If we do not account for this possibility, our gain * reduction could be insufficient, resulting in an "over" at the output. * To remedy this, we simply apply a suitably long release stage in the * envelope follower. */ /* REGARDING THE ATTACK: This limiter achieves "look-ahead" detection * by allowing the envelope follower to attack the max peak, which is * held for the duration of the attack phase -- unless a new, higher * peak is detected. The output signal is buffered so that the gain * reduction is applied in advance of the "offending" sample. */ /* NOTE: a DC offset is not necessary for the envelope follower, * as neither the max peak nor envelope should fall below the * threshold (which is assumed to be around 1.0 linear). */ /* REGARDING THE GAIN REDUCTION: Due to the logarithmic nature * of the attack phase, the sidechain will never achieve "full" * attack. (Actually, it is only guaranteed to achieve 99% of * the input value over the given time constant.) As such, the * limiter cannot achieve "brick-wall" limiting. There are 2 * workarounds: * * 1) Set the threshold slightly lower than the desired threshold. * i.e. 0.0dB -> -0.1dB or even -0.5dB * * 2) Clip the output at the threshold, as such: * * if ( in1 > thresh_ ) in1 = thresh_; * else if ( in1 < -thresh_ ) in1 = -thresh_; * * if ( in2 > thresh_ ) in2 = thresh_; * else if ( in2 < -thresh_ ) in2 = -thresh_; * * (... or replace with your favorite branchless clipper ...) */ }
  • Convolution Node - Loading sample maps?

    3
    0 Votes
    3 Posts
    310 Views
    BrianB

    @Christoph-Hart I had a feeling but I did have to ask 😆

  • Polyphonic Custom Filters (scriptnode) how?

    Unsolved
    27
    0 Votes
    27 Posts
    1k Views
    griffinboyG

    @Christoph-Hart

    I think there might be a glitch here somewhere. Another one of my projects has suddenly stopped working with my polyphonic filters. I'll do some investigations

  • DSP Compilation Failing

    3
    0 Votes
    3 Posts
    270 Views
    MorsM

    @HISEnberg Ah, there was a random parameter control with no name on it, that fixed it, cheers!

  • Reference Multiple Convolution Nodes in ScriptNode

    Solved
    11
    0 Votes
    11 Posts
    1k Views
    bendursoB

    I’ve encountered another related issue. I want to use setSampleRange for each convolution.

    However, it doesn’t work when referencing the audioslot, for example:

    const var first = ConvolutionReverb.getAudioFile(0);

    Has anyone managed to do this successfully?

  • ScriptNode Feedback After a Month of Heavy Use

    36
    6 Votes
    36 Posts
    5k Views
    A

    @Christoph-Hart Would it please be possible to make it so that the compare node (and logic_op) can be plugged into soft_bypass node's switch?

  • 0 Votes
    3 Posts
    245 Views
    A

    @Christoph-Hart It is very useful to be able to do this when crossfading different chains for example - if you move the crossfade dry wet knob all the way to 0 (or 1) you want the other network to be bypassed.

    So... how about them logic operators? 😄

  • Is the normalizer node working as intended?

    2
    0 Votes
    2 Posts
    251 Views
    modularsamplesM

    @aaronventure

    I've wondered the same. Here's the relevant code (I think) :

    Link Preview Image HISE/hi_dsp_library/dsp_nodes/CableNodes.h at 085d1a38b916fe7b8601a7a55e79991446dccc8b · christophhart/HISE

    The open source framework for sample based instruments - HISE/hi_dsp_library/dsp_nodes/CableNodes.h at 085d1a38b916fe7b8601a7a55e79991446dccc8b · christophhart/HISE

    favicon

    GitHub (github.com)

    I'm guessing the important bit is:

    void setValue(double input) { if (this->getParameter().isConnected()) this->getParameter().call(input); }

    Compared to similar nodes, this looks a bit light. Where's the conversion? or is this what double input is for?

18

Online

1.9k

Users

12.4k

Topics

108.0k

Posts