Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Xavier

Pages: 1 2 [3] 4 5 ... 85
PreenFM2 / Re: midi offset
« on: December 29, 2017, 09:34:07 AM »
I see.
Osc objects are created before the midi config values are read from the USB drive.

Osc are initialized from this line :

And the USB configuration file is read just bellow :

You can try to move up the UsbKey block (line 133 to 139). Moving init block often lead to freeze because of null pointer exception ;)

Or move you frequency adjust code from init() to a Osc static method and call it from PreenFM.cpp bellow UsbKey init... line 145 for exemple.

PreenFM2 / Re: modsource idea (SOLVED)
« on: December 28, 2017, 09:18:20 AM »
or is this already possible and i'm missing how to do this?
EDIT: is lfo1 random set to frequency 0.00 the solution?
EDIT2: YES, that works, wohoo, nice!

and LFO Ksyn = 0.00

PreenFM2 / Re: midi offset
« on: December 28, 2017, 08:44:02 AM »
i don't know enough about floats and their precision, but wouldn't manipulating the array back and forth (changing tuning from 438 to 442 repeatedly for example)  introduce errors over time? 

Yes i think so.
You should keep the original frequency. Copy it in another array and point to this array.

For the calcul i would do something like
Code: [Select]
float tunedFrequencies= {  435.0, 435.5, 436....<put the list of frequencies here>.. };
float fAdjust = tunedFrequencies[ this->synthState->fullState.midiConfigValue[MIDICONFIG_GLOBAL_TUNE] / 440.0f;
for (int k=0; k<127; k++) {
    midiNoteTunedFrequency[k] = frequency[k] * fAdjust;
frequencyToUse = midiNoteTunedFrequency;

where midiNoteTunedFrequency is a new array to prevent error accumulation when many modifications defined globaly.
Code: [Select]
float midiNoteTunedFrequency[128];

I had a look and i think you can intercept when a new value is changed here :
with a
Code: [Select]
if (fullState.midiConfigValue[fullState.menuSelect] == <YOUR MIDI GLOBAL TUNING CONSTANT>) {


Don't hesitate to post any other question you have

PreenFM2 / Re: midi offset
« on: December 27, 2017, 11:15:27 AM »

You put the modificaiton at a wrong place, your global tuning is only apply to the matrix destintion part of the frequency.
And we should not add this modificaiton here because it's called all the time, the global tuning should be caluclated only once.

I think you should try to modify float*frequency which contains the frequency for each note (if not in scala mode) :

frequencyToUse is initialise to frequency here :
And when we disable the scala scale.

You should try to modify frequency with your globaltune at boot time + when we modify the global tune in the settings.



Not sure we can put the volume before the op amp beause the audio output path of the preenfm2 contains :
. The sum of 2 Dacs
. anti aliasing low pass filter integrated to the op amp.
. the op amp is single supply (0=>5v)
Adding a variable resistor here will break one of the above.
I think the meeblip use the same circuit.

So you're right, you cannot output an other synth in the same connection. Or if you do, leave the preenfm2 volume to the max.


PreenFM2 / Re: midi offset
« on: December 25, 2017, 09:19:25 AM »

Great to see custom development !!  :)

PreenFM2 / Re: midi offset
« on: December 23, 2017, 11:49:50 AM »
hi xavier,
ok almost there. i added a cnst menu entry and it is showed in the matrix source menu. can you tell me where and how i should declare the constant value? i cannot set it in the enum directly it seems.

Constant value ?  I'm not sure i understand.
What i would do is to set the source value to 1.0 here, after the loop :
Then it think (not sure) it will remains 1.0 and you don't have to worry about it.

Edited : constant value ? you want to be able to modify this 1.0 right ? Just make a few of them : 1.0, 2.0, 4.0, 8.0 ;)

PreenFM2 / Re: midi offset
« on: December 22, 2017, 01:42:10 PM »
Hi Lokki,

Yes i thought about that, and i think I have a workaround for what you want, so that you don't have to wait for a real midi offset to be implemented  ;)

Ideally we would need a constant value in the source matrix. We don't have one but we can simulate one.
Set LFO1to :
SIN 0.00 1.00 0.00
LFO1 phase : 0.00
That makes the LFO1 start at 1.00 and remains at 1.00.
You can use this in the matrix to modify the frequency of all operators :

Formula is here :

So you have freq = freq * ( 1 + matrixDest * .1)

Which means if you add a line in the matrix such as :
LFO1 -5.0 o*fq => freq = .5 * freq :  instruments sounds 1 octave lower
LFO1 -7.5 o*fq => freq = .25 * freq : instruments sounds 2 octaves lower
LFO1 10 o*fq => freq = 2 * freq : instruments sounds 1 octave higher

Save a different preset for each frequency shift you need and you're done :)


PreenFM2 / Re: mapping scala files
« on: December 14, 2017, 11:01:56 PM »
No, the preenfm2 does not accepts .kbm files.
It offers 2 ways of mapping to the keyboard thought : Continuous and Keyboard.
You can read a liitle more info in 3.4 here :

PreenFM2 / Re: Frequency
« on: December 09, 2017, 11:29:51 AM »
Even with 16 you'll get into aliasing (noise) very quickly.
It's a frequency multiplier.

If you play a C6 note (~1000Hz) with 16 you'll get 16Khz base frequency.
With all the harmonics brung by the modulation you'll very very quickly reach the limit of the 40Khz sampling rate.

40Khz sr -> frequency above 20K will be folded back bellow 20k and will create kind of digital noise.
That's maybe what you want bu i think 16 is enough for that.


PreenFM2 / Re: (compatibility?) questions
« on: November 30, 2017, 07:19:23 PM »

1) You do that with the preenfm by modifying the MI (modulation indices) between operators.
For the carrier operator (lower level, their output is the sound) you modify the MIX parameters.

2) Use the matrix and targets the o[1-6]Fq params. They are the operator 1 to 6 frequency.
Use o*Fq for all at the same time.

3) They both modify the operator frequency. Harmonic is when you want the same number of semitone bellow and above the base frequency.
The other one exists for a longer amount of time in the preenfm2 and is a simpler frequency multipler so you won't have the same interval above and bellow the main frequency.
Harmonic is the typical one to use for pitch bend source.


PreenFM2 / Re: Hiss
« on: November 28, 2017, 09:38:46 PM »

Try to maximize the bit resolution for your instrument.

Chose the number of voices you need, not more.
Try to set 0 voice to instrument you don't use.

Modify "velo" to see if a lower value improve the result. What it does is the minimal velocity will be higher so the wav bigger and the resolution better.


PreenFM2 / Re: Vishay OLED brightness
« on: November 26, 2017, 10:15:43 PM »
my tech has them in his tx802 and tx81z at full brightness and was looking to try to find where the limiting resistor that is on the rev c pfm2 PCB...   there isnt one?

What limiting resistor are you talking about ? I don't get it.

A small update : I put today a 2x40 white oled in my ambika and it works great.

I have no idea what the problem is with th 4x20 white OLD in the preenfm2. I'll update this thread if i find something.

PreenFM2 / Re: preenfm2 editor 2.08.4 (November 25th 2017)
« on: November 25, 2017, 05:08:54 PM »
Audio Unit for mac is available with 2.08.4 as well as a couple of new stuffs:

PreenFM2 / Re: Vishay OLED brightness
« on: November 25, 2017, 12:31:29 PM »
so is there a resistor that can be changed so this display is as bright as other colors?

No, white oleds are much less bright.

Pages: 1 2 [3] 4 5 ... 85