Autor
| Meridian 3.0 beta - Suggestions for the future
|
GuyveR800 msx guru Mensajes: 3048 | Publicado: Julio 09 2003, 23:57   |
Yeah, I was thinking... Latok is asking for new features around the clock 
We've already got more features than we could ever dream off! All these years of MoonBlaster in all its carnations begin to seem like torture ^^; |
|
Latok msx master Mensajes: 1734 | Publicado: Julio 10 2003, 01:15   |
I'm just enthusiastic......And I know these things can be implemented fairly easy....Michiel already did it before......And I spoke about it with him on the phone several times already......  |
|
Latok msx master Mensajes: 1734 | Publicado: Julio 10 2003, 01:15   |
Not talking about pitchbending here, though. That's pretty hard, so I've understood....
|
|
GuyveR800 msx guru Mensajes: 3048 | Publicado: Julio 10 2003, 03:30   |
Pff, yeah, pitchbend on MIDI totally sucks eggs ^^;
|
|
MichieldeVries msx novice Mensajes: 19 | Publicado: Julio 11 2003, 22:43   |
Little update
Scolling while playing works fine now. It was a hard job anyway coz scrollbars are processed within a window and the scrollbar that scrolls the tracks..... is not in a window, but on the main screen. But anyway.... it works.
It scrolls behind the play window and really looks cool |
|
Latok msx master Mensajes: 1734 | Publicado: Julio 11 2003, 23:10   |
Michiel, you rule. But you know that  |
|
MichieldeVries msx novice Mensajes: 19 | Publicado: Julio 16 2003, 23:40   |
Another update,
The following has been implemented:
* Steppositioner when playing. Moves in a clipped way behind windows.
* <STOP> halts at the current page and step and lets the editor stay on that position
Now it's time to implement the modulation and pitchbending for the Opl4. Both
controllers have their own difficulties.
When modulation is established, what should modulate? The Opl4 has three parameters
to perform modulation: Amplitude modulation depth , frequentie modulation depth and
the modulation frequency. Question is: which parameters should be updated when
changing modulation from zero to 127 (max)
The pitchbending is problematic too and will claim a lot of processing-time. For MIDI devices it is not that hard, coz the device processes all pitchbend data. Meridian only sends the data, and that's all. For the Opl4, each note should be evaluated if there is any bending on the channel. If there is, the pitchbend value (-8192..+8191) must be converted to frequency data for the Opl4. Another problem is RPN nr 0: the bendpitch range. Usually, the setting for each channel is +2, that means that pitchbending at +8191 will result in 2 semitones up.
But.. I still have made a routine that computes the frequencies very fast.
Yes, I know, it is a bit techno talk, bit insiders know what this is all about.
I noticed that a lot of MIDI-files are played back very slow at some parts of the song. I looking for some other improvents in the play-routine to minimize these slowdowns.
|
|
snout online
 msx legend Mensajes: 4992 | Publicado: Julio 17 2003, 00:19   |
Very nice to see Meridian advancing so quickly. I think wolf can help you a lot with the modulation-stuff. If you decide to put your source codes online (like you did with Meridian 2.x) maybe you can ask people to browse them through in order to spot things that can be optimized?
|
|
wolf_
 msx legend Mensajes: 4781 | Publicado: Julio 17 2003, 00:38   |
apply the midi modulation level to the modulation depth.. uhm.. can't you describe in some instrument definition whether you want to modulate freq or amp?
If you can make a way to change the frequency as well... would be nice.. having the same modspeed all the time makes it sound boring.. robotic... etc.
|
|
MOA msx freak Mensajes: 152 | Publicado: Julio 17 2003, 00:46   |
Quote:
| When modulation is established, what should modulate? The Opl4 has three parameters
to perform modulation: Amplitude modulation depth , frequentie modulation depth and
the modulation frequency. Question is: which parameters should be updated when
changing modulation from zero to 127 (max)
|
I can only say:
Amplitude modulation = not what Moonblaster does (sounds to me like "tremolo" but the actual effect might be much cooler!)
Frequency modulation = yup... this is the depth of the modulation. MB uses frequency.
Modulation frequency = the speed of the modulation.
As I can remember, you could define your own modulations in MB. This means that the mod. frequency is at a constant speed (60Hz? What would that be in midi... I'd experiment  ) and the frequency of the sound (the pitch) will change according to the modulation pattern as editted in MB.
AFAIK Remco just changes the pitch of a wave. He doesn't use the hardware modulation of the OPL4. But hey... I might be totally wrong
To stay in MIDI terms: aren't modulation depth and speed separate MIDI commands? tremolo is also a MIDI command (or controller... whatever), so just write these values to the hardware registers (scaled when needed). I'll check some of my MIDI docs when I'm at home.
Quote:
| The pitchbending is problematic too and will claim a lot of processing-time. For MIDI devices it is not that hard, coz the device processes all pitchbend data. Meridian only sends the data, and that's all. For the Opl4, each note should be evaluated if there is any bending on the channel. If there is, the pitchbend value (-8192..+8191) must be converted to frequency data for the Opl4. Another problem is RPN nr 0: the bendpitch range. Usually, the setting for each channel is +2, that means that pitchbending at +8191 will result in 2 semitones up.
But.. I still have made a routine that computes the frequencies very fast.
Yes, I know, it is a bit techno talk, bit insiders know what this is all about.
|
Sounds like you only have a frequency table for semitones (i.e.: midi key -> frequency)... Adding some frequencies in-between might help you (a higher precision table, making the table larger... i.e. interpolate between semitones). 128 fine-tune steps between semitones might do.
You don't have to be precise with the -8k to +8k midi pitchbend range. Just estimate which of the 128 finetunes to pick, depending on pichbend sensivity (the 2 semitones you mentioned would result in: 8k divided by (2*128) steps = midi pitchbend units worth one step (32 units = 1 step, in this case).)
In programming terms:
- note = active note
- finetune = curr pitchbend range (converted to signed tune units) + mod. range (when not handled by hardware, converted to signed tune units)
- current frequency = myTable[note*128+finetune]
The frequency table might be too large for MSX (at least larger than 16kB)... especially when 32-bit frequencies kick in. For my GBA player I have a 16-bit frequency table and a 32-bit frequency table (seperated to save space). 32-bit will hardly be used by the way, since it's way too far off from middle-C. But some composers use it.
You might do some calculations in real time, but I'd say: make a [8-bit,] 16-bit and 32-bit table and put 'm in seperate 16kB banks. Then write some routine which knows how to access the table.
Hope that helps! |
|
MOA msx freak Mensajes: 152 | Publicado: Julio 19 2003, 01:00   |
It's pretty unclear where this topic continues... I keep on going to the old topic, just to click "the new topic is here". Anyway, I found some C(++)-code which I used to create linear frequency tables for my XM player for GBA. Maybe you can put it to good use:
Quote:
|
// create a frequency table - used during development of soundengine to generate LUTs
void create_freq_table(void)
{
#define NOTE_RANGE 118
static const char notes[] = "C C#D D#E F F#G G#A A#B ";
FILE *pFrqFile;
// create frequency table
printf ("- Creating xmfreq.cppn"  ;
pFrqFile = fopen("xmfreq.cpp","w"  ;
fprintf (pFrqFile, "// freq.cpp - generated by xm2agbn"
"//n"
"// C 0 = 128n"
"// C 1 = 256n"
"// etc.n"
"n"
"#include <agb.h>nn"
"const u32 snd_freq_table[] = {n"  ;
for (u32 note = 0; note <= NOTE_RANGE; note++)
{
fprintf (pFrqFile,
"// Note %2.2s%1.1d, Finetune -128 .. -1n",
¬es[(note % 12) * 2],
note / 12);
for (s32 ft = -128; ft < 0; ft++)
{
int freq = (int)(8363.0*pow(2.0,double(6*12*64 - (10*12*64 - note*64 - ft/2.0)) / double(12*64)));
/*
fprintf (pLogFile,
"note: %2.2s%1.1d ft: %5d freq: %5dn",
¬es[(note % 12) * 2],
note / 12,
ft,
freq);*/
fprintf (pFrqFile, "%5d,", freq);
}
fprintf(pFrqFile, "n"  ;
}
fprintf(pFrqFile, "};nn"  ;
fclose(pFrqFile);
}
|
(Please run on a PC to generate the table... I know it's messy code... but it was just one-shot-stuff, dude)
|
|
MOA msx freak Mensajes: 152 | Publicado: Julio 19 2003, 01:02   |
(hmmm... all I get is an error when posting my stuff... how nice!)
code tags seem to work really well. NOT!
so I used [quote] instead.
Damn... that seems to remove backslashes... and more... JEEZ!
p/s: I finally found out where this topic can be found; it's in SOFTWARE! I think development fits the topic better, though.
|
|
snout online
 msx legend Mensajes: 4992 | Publicado: Julio 19 2003, 01:08   |
/me hides
|
|
MOA msx freak Mensajes: 152 | Publicado: Julio 19 2003, 01:33   |
You should!
(damn, can't find you... wanna kick your arse!) |
|
POISONIC msx professional Mensajes: 883 | Publicado: Julio 20 2003, 00:58   |
may be sound like stupid
i own a
turbo-r fs-a1gt
with:
moonsound
msx audio
novaxis scsi hd 2gb
4 mb mapper
is it posible to send midi data to my pc? with meridian3.0?
i never used the program before.
i mean if i play on my nms keyboard would it be posible to send that data to my pc
with midi?
it would be a nice feature becouse u could use a msx as a multi fuctional wave table synth with sampler and fm synthesis this stil sounds cool.
greetz poisonic
please mail me if you know more to oisonic@hotmail.com'>poisonic@hotmail.com
|
|
|
|
|