23 May '13 - 12:56 *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
 
   Home   Help Search Login Register  
Pages: [1]
  Reply  |  Print  
Author Topic: Arabic Scale  (Read 809 times)
Norbert Stellberg
Posts: 70


« on: 16 Aug '12 - 07:38 »
Reply with quoteQuote

Hello,
I will programming an Arabic scale tool for Bass midi out.
Have anybody tips for me?
Programming with FineTune?
Programming with Sysex?
Any links for Delphi programming?
Any source Delphi available?
aso.................

Thanks
with best regards
Norbert
Logged
Ian @ un4seen
Administrator
Posts: 15269


« Reply #1 on: 16 Aug '12 - 15:02 »
Reply with quoteQuote

Perhaps you can use the scale tuning option (MIDI_EVENT_SCALETUNING), which allows the tuning of each note (in all octaves) to be changed by up to +/- 100 cents. Roland give the following example for an Arabian scale: C = -6 cents, C# = +45, D = -2, Eb = -12, E = -51, F = -8, F# = +43, G = -4, G# = +47, A = 0, Bb = -10, B = -49. Using MIDI_EVENT_SCALETUNING events, that would look like this...

BASS_MIDI_StreamEvent(handle, chan, MIDI_EVENT_SCALETUNING, MAKELONG(8192-6*8192/100, 0)); // set C tuning
BASS_MIDI_StreamEvent(handle, chan, MIDI_EVENT_SCALETUNING, MAKELONG(8192+45*8192/100, 1)); // set C# tuning
BASS_MIDI_StreamEvent(handle, chan, MIDI_EVENT_SCALETUNING, MAKELONG(8192-2*8192/100, 2)); // set D tuning
BASS_MIDI_StreamEvent(handle, chan, MIDI_EVENT_SCALETUNING, MAKELONG(8192-12*8192/100, 3)); // set Eb tuning
BASS_MIDI_StreamEvent(handle, chan, MIDI_EVENT_SCALETUNING, MAKELONG(8192-51*8192/100, 4)); // set E tuning
BASS_MIDI_StreamEvent(handle, chan, MIDI_EVENT_SCALETUNING, MAKELONG(8192-8*8192/100, 5)); // set F tuning
BASS_MIDI_StreamEvent(handle, chan, MIDI_EVENT_SCALETUNING, MAKELONG(8192+43*8192/100, 6)); // set F# tuning
BASS_MIDI_StreamEvent(handle, chan, MIDI_EVENT_SCALETUNING, MAKELONG(8192-4*8192/100, 7)); // set G tuning
BASS_MIDI_StreamEvent(handle, chan, MIDI_EVENT_SCALETUNING, MAKELONG(8192+47*8192/100, 8)); // set G# tuning
BASS_MIDI_StreamEvent(handle, chan, MIDI_EVENT_SCALETUNING, MAKELONG(8192+0*8192/100, 9)); // set A tuning
BASS_MIDI_StreamEvent(handle, chan, MIDI_EVENT_SCALETUNING, MAKELONG(8192-10*8192/100, 10)); // set Bb tuning
BASS_MIDI_StreamEvent(handle, chan, MIDI_EVENT_SCALETUNING, MAKELONG(8192-49*8192/100, 11)); // set B tuning
Logged
Norbert Stellberg
Posts: 70


« Reply #2 on: 17 Aug '12 - 14:24 »
Reply with quoteQuote

Thanks Ian. I think this is very helpfull.
Here is a link to BassMidiDriver, do you know?
http://www.microtonal-synthesis.com/GS_XG.html)

This  author made it with sysex events. Is it better?

How can I use other tunings, like
Tuning Scale Name
1 Agricola's Pythag Monochord
2 Agricola's Monochord
3 Aron's 1/4th Comma
4 Artusi's Monochord
5 Barnes' V&Y variation
6 Bendeler's 1/3rd Comma
7 Benderler's 1/4 Comma
8 Colonna's Irregular Just
9 De Caus' Monochord
10 Dechales' 1/5th Comma
11 Dowland's Lute Tuning

a.s.o

with best regards
Norbert

Logged
Ian @ un4seen
Administrator
Posts: 15269


« Reply #3 on: 17 Aug '12 - 18:00 »
Reply with quoteQuote

Those GS sysex messages can be used via BASS_MIDI_StreamEvents with BASS_MIDI_EVENTS_RAW. For example, like this...

BYTE sysex[]={0xF0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x11, 0x40, 0x40, 0x4A, 0x44, 0x4E, 0x48, 0x3E, 0x48, 0x42, 0x4C, 0x46, 0x50, 0x4A, 0x17, 0xF7}; // the sysex message
BASS_MIDI_StreamEvents(handle, BASS_MIDI_EVENTS_RAW, sysex, sizeof(sysex)); // send it to a MIDI stream
Logged
Norbert Stellberg
Posts: 70


« Reply #4 on: 18 Aug '12 - 17:18 »
Reply with quoteQuote

Hello Ian,
I'm a little bit stupid, Cheesy
but does this BASS Sysexmessages change the scale tuning?
with best regards
Norbert

Logged
Ian @ un4seen
Administrator
Posts: 15269


« Reply #5 on: 20 Aug '12 - 14:42 »
Reply with quoteQuote

Yes. That sysex message (and the others on the page you linked) will set the scale tuning for all 12 keys on channel 1. The sysex message is formed like this...

   F0 41 10 42 12 40 1x 40 st st st st st st st st st st st st cs F7

Where "x" is the channel number, the "st" are the scale tuning settings for the 12 keys, and "cs" is a checksum. Details can be found in the Roland specs, eg. here:

   http://media.rolandus.com/manuals/GW-8_MI.pdf

You may prefer to use the GM2 scale tuning sysex instead (also documented in the Roland specs), which allows the same tunings to be applied to multiple channels and doesn't require a checksum.
Logged
Norbert Stellberg
Posts: 70


« Reply #6 on: 26 Aug '12 - 12:29 »
Reply with quoteQuote

Hello Ian,
thank you very much.
It works phantastic.
with best regards
Norbert
Logged
Pages: [1]
  Reply  |  Print  
 
Jump to:  

Powered by SMF 1.1.18 | SMF © 2013, Simple Machines