• Recording MIDI internal notes

    11
    0 Votes
    11 Posts
    227 Views
    hisefiloH

    Engine.getUptime was the problem. This one below works.

    HiseSnippet 2144.3oc4Y80baabDGPRHIjIQIYlL8k9xE8DTrJLokLkT8zwRhTJR0V+IBRJJSmVMPfG.QD3cvGNHaZO9qQ+nzm6zOA8w9wveCZ28N.R.QZYNJMcTa4XKIr+41c+s6s2dfGI39zzTtvvr9ICRnFlelk6.lrW6ddQLi85XX9qs78RjYB5AbIM8hrT4UWvnu7hFNMM1ZPhWZJsqgo4reGpfYs4LTed2S2xK1i4SGQxv3LdjO84Q8ijindzFOKJNdGutzSh5WR5U1XOeNqMOlmAN2rVMLR77uxKjdfGJ1LVF65k1yv7asZ73VT5pKGzsq2xK2sUqVqu15qrdSufFq3cYyVquxiVY0Gs1pAFlez1cijbgqzChDCy41h2cfaO9KYZCbVTZzkwT7glFtfk0j2gG2ECQjpQ6dQwcOp.0RMLLsNZDFNqFC+Zq8i5FMj9Hr7KULHiznL.ZNSU2a1JtWyxtWiRt2DboYK4RebQZU4RwdCnBkqLu0960YOhlR0LY6LgfxjtzWjQqjAe2SyYch.xEko+bNOYalG3dcKSFW8KAQcSnUYXN6TGqMu0X0.CqchhoXbaV7.HMFiPQRGOomg4arVaMG1Isd1Zs6c5Z643z6TQmKctLriSu0dvCV+jSZ8ia9SmGt+flO9zffC+8thceF0k17jCudyiW87v04u9kWsdnfdkeauf3ya88mEF+CsNL9X2K4qDJV4zlu90x1as9yNe2PmfyWc4WQOd2vsbbLP+YXMqoIVk6FEx7vsTPI4AY82xChjRfyA79Q.eL6UP7q2nCkMN4ubCD3APTHKuOSmMp.3mP6mvGQ3OsgQoZj4z0HekkquHJQNhCBhep0dLIUD3AUBkqRzxZX92rZyAAXRm9dWQ2Q.OLTA6VMZrDA9whOod8fLluLhyHbF1J4Pl8h0eS8Z0eacxMYEDLQdngD73XpXhrQnUbaJZyx5eIUrD4Zu3L5PAA.nZ0n0zUM5qi6RBxY6whjGlPYuu1EF4fE7Wmtmp3DvxbZfbITgLBcAyNzqglk5DSMqNzzqj7DioNqU25XpOWzkJlTRaFqZVf2mJIZoH+NRQRzqa2sxjRNydAMuEVhzrA9eLGFwhiXzxPqVnB.1mCkYLXcJiwCI5jRk1KHouRtPNexSIK3BAVteDwBWf7aIEVFrXMIteAKvAebaVHXcmPp7zDjtMJP8ZQAD6bqUCLWMrqCZpyPZ1AdwoTTPMc+ddrPZWkpustV4uoP6ZfVi5Shx7VHn0dCth4gYau3Xrsl8MBeDgzvJt.SFTQNHj93aASQY94hnJbTYLLRKXg87ya46j.+1twhfbkolB5Zi9E.NE.43gcIODCg5BZHoblpwSTjDEYUfze3OBB9vGR9Npj3AbBnB7zEhjSj8nJefjnbBmbPrjaA5qFKAy8kRPKT9LrETdxMQS.5wVJ1wQo.DhYeFMdIBCnMra.Ml6GIGrDIgmFgZgfLA9.z8hI8GU54KnPKh8g8YvjH6hCFnpRPY6iHEtkztuit+VYFHkCT1ydjoKKvY4Ngcg2TlYasaam69UrHf5oRu9I1i1c3BOBmHtCWrOLaUjKjEXcSsKhNx2BUdPO47koTjxmpHkOLR4N4sqKy41BU96OZd3Cqg0AwTVnrGgGnpJvEfXGwHo5PZwkH8f5Fk+2Okzjjphskfz7OASlhESCfAFIwQWAUcokBs70sbSj2CLovlxQ5cGgIOH2tUfZnRzIIKsmc+bxinv0a7FqJ9F8kvd.pFWC2f4jaGnGlfBiVvTcFqrwlJwQQrW.5THEYT8OwlCZ.Rlp22BpEvEDaJAf8gqOtvnEoNQoCOhFIVSomBTFAT59x508EWB722C165SihKggeeFzqfJ1BpyPfLGRskoKt3XNutZz9EWtDYEnu43BDDCvWd05yA3zdjm+j7.5pwBHnCVJOl5jHhXR6qb5lg9NpvHb0Ol5oOInt9y6YLFU5H2A.LZS3b7fH+HuXEL8lb36axOKIr3zIEF9l5HPN5XFMqhzyPNkO5BN6pF.A0FZwPFWP29Z3LgQJpS.LVQBP3w5BylASkACkspRD3eEcHGFyKQJV0vQaVgcdLFdjEn63mCS9MiZ+u3SvEV2tNesAPpYI8anO78+SG7yblbuBDUpFga97Q3zyHXDAip8I4yuYn73xC2aLEZ+QV39hBcsLU5cWl2D807QM.v5C6suBsVcvXCJ9CioZAxcXk5+4JpO9.uvkn4cyhwaBU9l036eHmAj6qL0KdeDFzYdPkqf9uqqaOst3WYcTjzu2j8wYlfOhkJ+B3i4ujhO2Z6f.pubjCNm0Nm+Kyajnr4mWa9O0xE5gn5RnL9uR8L4G7tlBiHxnBD7ts2vzeeZeCSIS8aX5PeIX9Sf1jovI4UdwGtz9Qm.kwoks1oov8cou3XLaVldaNbi9Iw5cOcGHHmnNt3KDPUVrYedFqx84u4aKYtoqM0G3EWM28tWb0+ErY2zrjO9EZe7is1b2NtGmuIW82vQj3b7IzpUv6yY7jdbVje4z6wToHJLjJJ6wSLL1TJg6e0NSbckp9NTe35X2jpV3wo7bJ3ZkIiS2O1xMjv+3urgKLZck8d+3e8XJLWTZkcSa6ygTB8NB629q4qxaY81JM9bKcPRT60u+cHv7E9mNKb+yA+LKU5+9J98EV4Ei2aAv4sx2abeEBu04Pl8+smC4XdlDtgCbaHQDNr4AY8cgi+8o4WyAuCf4L3Q35maTL8rKk0U8v+D9jyrI9rYNylEL+OhM564K3W3quI.1e7STTf3lo9pFpYsO9Lo432enObP9E99UWpwT7Q2UEW9tp3J2UEe7cUwV2UEW8tp3ZeXEw4r1LSx6q2ZZXr+Qaq+RrLG9ErYNqw+BzCBbcE
  • Add Expansion Sample Maps to ComboBox

    6
    0 Votes
    6 Posts
    168 Views
    d.healeyD

    @marcrex Looks like you're just hardcoding everything currently. You need to instead use the expansion handler to give you a list of installed expansions, loop over those and grab the bits of data you need in order to populate the combo box.

  • Polyphonic Aftertouch?

    38
    0 Votes
    38 Posts
    950 Views
    MorphoiceM

    @Lindon no worries.

  • Software for Animation Sprites....

    42
    0 Votes
    42 Posts
    8k Views
    OrvillainO

    @Chazrox No problem!

  • double notes get stuck

    3
    0 Votes
    3 Posts
    107 Views
    SimonS

    @Morphoice The solution I used was to keep track of all note on events, then if you ever receive two note ons in a row on the same note you know you've received some illegal MIDI.

    It's pretty easy if on noteOn you check and store the event ID to an array (or MIDIlist I suppose) like

    onNoteOn { if (events[Message.getNoteNumber()]){ Console.print(You've just received some illegal MIDI!); } else { events[Message.getNoteNumber()] = Message.getEventId(); } } onRelease { events[Message.getNoteNumber()] = undefined; }

    How you handle the lawbreakers is up to you, but at a minimum it's best to stop everything on that note, as this situation breaks the assumption that every note on will have a corresponding note off.

    In my case I'm using artificial events, so stopping them all is easy. I don't actually know how you'd go about stopping the normal events.

    Give Synth.allNotesOff() a try, I know that doesn't affect notes with a timestamp in the future but I assume it works on stuck regular events.

    It would be nice if we got this built in similar to setfixnoteonafternoteoff

  • Including .JS files in new projects.

    9
    0 Votes
    9 Posts
    103 Views
    d.healeyD

    @Chazrox Yes, in the folder name in the file path, not the file itself.

  • The worlds most annoying bug

    14
    1 Votes
    14 Posts
    477 Views
    C

    @iamlamprey This is very strange, and I imagine very frustrating. Perhaps @Christoph-Hart has an idea.

  • FFT display crashes & waveform range adjustment

    16
    1 Votes
    16 Posts
    936 Views
    Adam_GA

    you guys are the best :D @ustk @clevername27

  • Custom AHDSR LAF

    3
    0 Votes
    3 Posts
    103 Views
    ulrikU

    @tiesvdam I don't think you can get rid of it, I solved it by painting the path in a panel, and removing the "extra line" parts by manipulating the path string
    The moving ball is from the envelope floating tile but the rest is a painted panel

    it involves converting the path to string - remove certain strings - convert it back

    I hope there is a better way to do it, but I don't know if there is any.
    Anybody knows how to do it in a less cumbersome way?

    this is part of the string manipulation, p is the path

    var a = p.toString().split(" "); var ax = parseInt(a[6]); var ay = parseInt(a[7]); var acx = parseInt(a[4]); var acy = parseInt(a[5]); var dx = ax + (parseInt(a[14])-ax)*0.95; var dy = parseInt(a[15]); var sx = parseInt(a[17]); var sy = parseInt(a[13]); var rx = parseInt(a[22]); var ry = this.getHeight()-3; var str = a.join("\n"); var path = Content.createPath(); path.fromString(str); g.setColour(Colours.chartreuse); g.drawPath(path, path.getBounds(1), 1.0);

    paintedahdsr.gif

  • MacOS Packages Issue

    16
    0 Votes
    16 Posts
    1k Views
    M

    @DanH Worked! Thanks man

  • External sidechain?

    21
    0 Votes
    21 Posts
    755 Views
    Dan KorneffD

    @Christoph-Hart Can we get the default name of the sidechain to be the name of our HISE project?
    Right now, an external sidechain is named "External Sidechain (+bus)" which can get confusing if you have 2 different plugins made with HISE on the same channel.

    HISE_SidechainName.png

  • Pulse Width Modulation + Wavetable Synth

    1
    0 Votes
    1 Posts
    37 Views
    No one has replied
  • Broadcaster attachToComponentValue triggered at init... Normal?

    3
    0 Votes
    3 Posts
    49 Views
    ustkU

    @d-healey Oh ok good to know. It might need a "skipping change on init" like for the callbacks...

    I just found an easy solution for my use case using mouse events instead:

    const var bc = Engine.createBroadcaster({ "id": "bc", "args": ["component", "event"], "tags": [] }); bc.attachToComponentMouseEvents(componentsToTrack, "Clicks Only", ""); bc.addListener("this", "md", function(component, event) { if (event.mouseUp) Console.print(component.getId() + " " + component.getValue()); });
  • 0 Votes
    3 Posts
    69 Views
    DanHD

    @d-healey Ah I had it in a midi script processor - doh!

    Thanks!

  • Viewport Styling Methods?

    5
    0 Votes
    5 Posts
    269 Views
    d.healeyD

    @Casmat said in Viewport Styling Methods?:

    One question, should you use just one panel in the viewport or generate a new panel for each list item you have in the viewport?

    If it's a simple list then one panel.

    If each item in the list needs an interactive element then use child panels.

  • XY Pad Display Buffer?

    15
    1 Votes
    15 Posts
    384 Views
    ulrikU

    @rglides Thanks

  • Apache License 2.0 or MIT licensed sound generator

    3
    0 Votes
    3 Posts
    206 Views
    Robert PuzaR

    @d-healey thank you

  • 0 Votes
    10 Posts
    554 Views
    R

    @d-healey it's a 1 to 1 relationship in this case so I think I might be ok. I'll test it in the morning and see if it works for me though. I appreciate both your input and replies, thankyou

  • Midi Controller VST built in HISE... thoughts??

    2
    0 Votes
    2 Posts
    113 Views
    VirtualVirginV

    @jBam said in Midi Controller VST built in HISE... thoughts??:

    Seems promising in terms of basics (HISE can send midi out). So does that mean I can link a parameter to a midi out function and have it send ANY midi message like Cc, rpn, nrpn, sysex... or is it Cc only??

    So as it stands, HISE built apps or plugins can only send note on/off (with velocity), CC, pitch bend, aftertouch and MPE.
    Other messages such as program change, MIDI Clock, MTC, MMC and SysEx are not supported at the moment.
    I added a feature request here to make additions to support all message types:
    https://forum.hise.audio/topic/11665/fr-support-for-all-midi-message-types?_=1740115136462

  • Help me understand VCF keytracking.

    8
    0 Votes
    8 Posts
    363 Views
    griffinboyG

    @Morphoice

    You can map it to a function of best fit using python / matlab.
    Ask chat gpt how to do this from a table of data.

    Alternatively you could create a lookup table of accurate values.

    I didn't realize you were going for analog tracking, that's a different case to digital, yes.
    The tracking lookup only happens once per note, so you don't have to worry about efficiency here. Envelopes by comparison need optimization as they are applied per sample.

18

Online

1.8k

Users

12.2k

Topics

106.1k

Posts