• seb-harmonik.ar

    @fishcrystals the main alternative in this case would be to use polyblep I think.
    I'm planning on making some objects to add polyblep residuals but I thought some vanilla polyblep logic already exists in some libraries, can't think of which right now. (I thought maybe https://github.com/MikeMorenoDSP/pd-mkmr/tree/master but can't see anything at 1st glance)

    you could look at these papers for more info:
    https://www.eurasip.org/Proceedings/Eusipco/Eusipco2015/papers/1570104119.pdf
    https://dafx16.vutbr.cz/dafxpapers/18-DAFx-16_paper_33-PN.pdf

    edit: actually cz synths had aliasing afaik..

    posted in technical issues read more
  • seb-harmonik.ar

    @polle if you want to use linear interpolation you can make your own linear interpolator. I feel like there might be an external to do it but can't think of it.
    linterp.PNG

    posted in technical issues read more
  • seb-harmonik.ar

    @anvlkv for [out~] it is finding it, there's no issue (you're just seeing the loader trying binaries first in the logs). So maybe you want to suppress those logs somehow (I forget right now, there might be some verbose setting either while compiling or running..)

    as for the other error, it probably has to do with how the search paths are set up (I'm not that familiar w/ libpd..). Anyways for an easy (but not best) fix I think it should work if you create the object like just [lb]

    But to me it's odd for 'else' just to sit in your .app file directly.. I would at least put else in some subdirectory (like 'extra_obj'), and set your pd path to it instead, then in your pd patch create every object like [else/out~].

    I thought the accepted place to put things like that was some subdirectory of Resources though..

    posted in libpd / webpd read more
  • seb-harmonik.ar

    true, don't try to use [expr] for everything.
    The purpose of [expr] is to evaluate mainly mathematical expressions. yes it has an 'if' function but the main purpose is simple expressions.

    so, put your loop/running sum outside of the [expr]s. you can use [until] to generate a loop

    posted in technical issues read more
  • seb-harmonik.ar

    @brendanmac it's not really common practice afaik (usually just range -1 to 1), but it could make your product more usable/accessible.
    If you want to do that I would at least use RMS, but perceptual loudness can get way more complex

    posted in Off topic read more
  • seb-harmonik.ar

    @fishcrystals It worked with .PNG files for me

    posted in technical issues read more
  • seb-harmonik.ar

    @atux midi note 60 will select the 61st image in the folder (usually sorted alphabetically)
    so you either have to add more pictures or subtract 60 before [get $1(

    edit: actually I wouldn't expect an out of range index to [list store] to trigger anything..

    posted in technical issues read more
  • seb-harmonik.ar

    here's something to get you started.. you will need to get the 'else' library for the [else/pic] object
    testpng.pd
    if you put an "images" folder in the same folder as the patch and put .pngs in it the file names will be loaded into the [list store] when the patch opens. Then when you play midi notes they get stripped of their note-offs and used to look up the nth element in the list, which is used to load the image into [else/pic]
    of course, you need to put 128 images in to cover the range of midi notes. otherwise you might want to use [clip] or some other math objects to get the notes into the range starting at 0.

    if you want to see the values at any point in the data flow a good object to use is [print] which will show the input value in the console

    Aside from the stuff in pd's included help, else also comes with a tutorial.

    posted in technical issues read more
  • seb-harmonik.ar

    @jameslo well as soon as you change the [set( message to [block~] to have a 0.5 downsampling value then that's the case. (as you can see if you hook up a timer.. the downsampled 32-block patch with [bang~] will put out bangs at the same rate as the parent patch that has a 64 sample block.)
    Actually in this situation another limitation is also due to [tabwrite~] not being able to do anything at fewer than 64-block size either afaict

    posted in technical issues read more
  • seb-harmonik.ar

    @Aliam.Sigsaly the maintainer of pdlua is Albert Gräf. The way open source software works is that one person can use the code from other projects (provided the licenses are compatible). This is called a 'fork' and it doesn't imply that the original project is being 'taken over' or 'annexed' by the fork.

    Afaik there are feature request github and discord forums/channels for plug data if you want to discuss the direction of the project (though I suppose this could also be an appropriate venue).

    Imo your expectations for an announcement on arbitrary channels for a certain library version not being supported anymore are slightly unreasonable.. I would say that if you want to be informed of plug data or development about a certain version of ophelia there are places to follow in order to do so.

    I also don't think it's productive to talk about how superior m4L is unless you're making specific feature suggestions for the project you want to use in a productive and collaborative way.

    edit: also, a great thing about open source is that if you don't like the direction of a project you are free to make your own fork and add or remove whatever aspects you wish. The maintainers have a right to include or omit features and library for whatever reason though you are of course free to make criticisms or suggestions (though I have to say your tone did come across as somewhat entitled, rather than collaborative.. for instance you could enquire why something might not be maintained anymore before catastrophizing). But if you want a certain feature without doing the work to implement it that can come across as expecting free labor or agreement on aesthetics.

    edit2: personally I disagree with alexandre's "everything in 1 lib" philosophy for else (personally I like using many different established libraries that already have equivalent objects) but he does work hard on it and those aspects have driven its adoption in plug data and many other projects. Also he probably (would have been) open to improvements for it in general if you considered them to be lacking and had made pull requests to improve it or at least given suggestions or feature requests instead of/before complaining..

    posted in news read more
  • seb-harmonik.ar

    it's simply because [bang~] doesn't go lower than 64. Unfortunately I don't think the 'stop' message to [tabrwrite~] has sub-block accuracy.
    actually, [bang~] can go lower than 64, it just can't go lower than 64 per the root patch samplerate.

    when you use downsampling you're only writing every other or every 4th sample, that's why it appears to work. for instance at .5 downsampling with blocksize 32 it gets [bang~]s at the same rate as the parent patch, but only writes half of the table because it's running half as fast.

    when at downsampling 0.25 and parent blocksize of 64 you get bangs at 1/2 the frequency of the parent, because [block~] outputs at half the speed (since the blocksize is 1/2 of the parent as well, so it's 2*1/4 = 1/2). so the subpatch gets triggered every 128 samples of the parent, and writes all of its samples until it gets retriggered (but only writes 32 samples because it's downsampled by 4x)

    posted in technical issues read more
  • seb-harmonik.ar

    like this? I don't think you'll be able to do variable # of outlets without dynamic patching (if you know of any abstractions that do so I would be interested)
    round-robin.zip

    posted in technical issues read more
  • seb-harmonik.ar

    yes but I think you have to use an antialiasing/interpolation filter of some kind afterwards
    sampling causes a (positive and negative) spectrum to repeat at multiples of the sample rate, so whenever you sample you have to put a lowpass on it both before (to eliminate the errors in the actual capture, which is irrelevant here because it's a sinewave lower than nyquist) and after (to eliminate the repeated images created by the sampling).
    normally this second filter would be the job of your soundcard/dac, but in your case you are outputting at the higher sample rate
    so here I think you need an antialiasing lowpass for the nyquist of your downsampled rate (1/8th of your output rate) after the outlet
    edit: you could also try just using [outlet~ lin] instead if you want something easy but imperfect (or [outlet~ pad] if you want it to be even more aliased). sample-and-hold and linear interpolation are actually types of crude lowpass (convolving w/ a rectangular or triangular window)

    posted in technical issues read more
  • seb-harmonik.ar

    expected, use [max~ 0] in the signal (or the writer) to clip it out.
    (or alternatively make the table 1/2 as long/only write 1/2)

    posted in technical issues read more
  • seb-harmonik.ar

    cosine and sinesum correspond to the 'real' and 'imaginary' parts of the 'real' fourier series respectively. since there is no imaginary part for frequency 0 (dc) I guess it's skipped for sinesum. see the help file of [rfft~] for some more info. (beyond that you'd have to start learning about dsp)

    posted in technical issues read more
  • seb-harmonik.ar

    @atux send the note messages directly to a [pipe f f 1000] instead of a [delay] and [timer]

    posted in technical issues read more
  • seb-harmonik.ar

    I think in this case you might not even need multiple instances (for instance you could use an array to look up the values for [expr] using the index from @oid)
    or at least split it into multiple instances later down the processing

    posted in technical issues read more
  • seb-harmonik.ar

    you could try to go through the pd source code and see how it does the drawing (and only draw those corresponding points)

    posted in technical issues read more
  • seb-harmonik.ar

    @raynovich are you using gui externals? maybe iemgui or moonlib objects? there were some incompatibilities introduced in 0.53 that caused some of those to crash
    at any rate I would try updating your externals

    posted in technical issues read more
Internal error.

Oops! Looks like something went wrong!