Author |
Message |
Inventor
Stream Operator
Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
|
Back to top
|
|
|
Antimon
Joined: Jan 18, 2005 Posts: 4145 Location: Sweden
Audio files: 371
G2 patch files: 100
|
Posted: Sun Nov 02, 2008 2:01 am Post subject:
|
|
|
Interesting note sequences. I like the kick drum sound.
/Stefan _________________ Antimon's Window
@soundcloud @Flattr home - you can't explain music |
|
Back to top
|
|
|
kijjaz
Joined: Sep 20, 2004 Posts: 765 Location: bangkok, thailand
Audio files: 4
|
Posted: Sun Nov 02, 2008 3:12 am Post subject:
|
|
|
I have one idea for the melody generation.
I'd like to try this:
create an array which contains a serie of notes of a melody / motif / riff
for example,
[0, 10, 12, 0, 5, 7, 3, 3] @=> int melody1[];
if started on C, would be note C Bb C' C F G Eb Eb
then, the generated notes from your sequencer can be mapped to choose notes from this sequence.
or to reset / restart index for reading from the sequence.
with this, we can play more with a particular set of notes, not just chromatic scale. |
|
Back to top
|
|
|
Inventor
Stream Operator
Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Sun Nov 02, 2008 4:59 am Post subject:
|
|
|
Thanks, I kinda like the songs that this thing generates. Interesting idea, kijjaz, that would lend itself very well to playing scales on the guitar. From what I've learned, you study the scales because the notes of the scales sound good togther, then you practice various techniques of playing the scale notes in various sequences to create songs.
I'm not sure what the mapping would be, I'll have to think of that, but anyway what I would do is put a scale in your array and then index the array with the boolean sequencer somehow. I'll have to think about ways to do the mapping, coolness. _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
|
kijjaz
Joined: Sep 20, 2004 Posts: 765 Location: bangkok, thailand
Audio files: 4
|
Posted: Sun Nov 02, 2008 12:49 pm Post subject:
|
|
|
Yes, I guess that would do the trick nicely.
I'm thinking about these ways, they can be implemented seperately:
- having a BaseNote value which is the root of the riff it's playing,
but have the mechanism in the program shifting this BaseNote value around for chord-change effect
- start index from 0 and increase by 1, when it reaches the end of the array, restart it at 0
and have some conditions from the boolean sequencing setting the index's position/speed/reset
(this would play the riff out clearly, but it'd be rearranged)
- having more complex rhythm, duration of the notes.
this should depend on creating another function then sporking it and letting run simultaneously.
rhythm (durations) can be put into an array.
- the guitar can play both sustained and staccato (short) notes.
shorter notes can be created by noteOff(velocity) sooner.
- adjusting guitar's pluck position by conditions from the boolean sequencer for different timbers each stroke.
- applying damping to the guitar sound for the 'mute' effect on guitar
etc.. i think these things would become handy and fun to play with / listen to ^_^ |
|
Back to top
|
|
|
kijjaz
Joined: Sep 20, 2004 Posts: 765 Location: bangkok, thailand
Audio files: 4
|
Posted: Sun Nov 02, 2008 1:30 pm Post subject:
|
|
|
hi.. Inventor, these example is what i've been trying to practice myself for creating some of the effects i'm referring to.
Code: | // guitar riff modification technics
// Copyright 2008 by Kijjasak Triyanond (kijjaz@yahoo.com)
// This software is protected by GPL version 3
140.0 * 2 => float BPM;
minute / BPM => dur beat;
Mandolin s => Dyno compressor => LPF s_lpf => SinOsc od => dac;
pi => s.gain; // Drive Gain
compressor.compress(); // set as compressor
.25 => compressor.thresh; // set threshold
s_lpf.set(1900, 1.5); // set lowpass filter as amp EQ simulation
1 => od.sync; // set od as sine overdrive
[0, 0, 12, 0, 0, 0, 12, 0, 0, 7, 10, 12, 6, 5, 7, -2] @=> int melody1[];
[1.0, 1, 1.5, 1.5, .5, .5, 1.5, 1.5, .5, .5, .5, .5, 1, 1, 1.5, 1.5] @=> float rhythm1[];
32 => int BaseNote;
int i1, i2;
while(true)
{
melody1[i1] + BaseNote => Std.mtof => s.freq;
// play legato (long) or staccato (short) notes
if(i2 % 4 != 1)
{
.8 => s.noteOn;
rhythm1[i2]::beat * .95 => now;
.8 => s.noteOff;
rhythm1[i2]::beat * .05 => now;
}
else
{
.5 => s.noteOn; // play softer, and shorter
rhythm1[i2]::beat * .4 => now;
.5 => s.noteOff;
rhythm1[i2]::beat * .6 => now;
}
// move plucking position
if(i2 % 3 == 0)
{
0.1 => s.pluckPos;
}
else
{
1.0/3 => s.pluckPos;
}
(i1 + 1) % melody1.cap() => i1;
(i2 + 1) % rhythm1.cap() => i2;
} |
Code: | // guitar riff modification technics
// Copyright 2008 by Kijjasak Triyanond (kijjaz@yahoo.com)
// This software is protected by GPL version 3
140.0 * 2 => float BPM;
minute / BPM => dur beat;
Mandolin s => Dyno compressor => LPF s_lpf => SinOsc od => dac;
pi => s.gain; // Drive Gain
compressor.compress(); // set as compressor
.25 => compressor.thresh; // set threshold
s_lpf.set(1900, 1.5); // set lowpass filter as amp EQ simulation
1 => od.sync; // set od as sine overdrive
[0, 0, 12, 0, 0, 0, 12, 0, 0, 7, 10, 12, 6, 5, 7, -2] @=> int melody1[];
[1.0, 1, 1.5, 1.5, .5, .5, 1.5, 1.5, .5, .5, .5, .5, 1, 1, 1.5, 1.5] @=> float rhythm1[];
32 => int BaseNote;
int i1, i2;
while(true)
{
melody1[i1] + BaseNote => Std.mtof => s.freq;
// play legato (long) or staccato (short) notes
if(i2 % 4 != 1)
{
.8 => s.noteOn;
rhythm1[i2]::beat * .95 => now;
.8 => s.noteOff;
rhythm1[i2]::beat * .05 => now;
}
else
{
.5 => s.noteOn; // play softer, and shorter
rhythm1[i2]::beat * .4 => now;
.5 => s.noteOff;
rhythm1[i2]::beat * .6 => now;
}
// move plucking position
if(i2 % 3 == 0)
{
0.1 => s.pluckPos;
}
else
{
1.0/3 => s.pluckPos;
}
if (i1 % 3 == 2) 68 - BaseNote => BaseNote; // change root note of the riff sometimes
(i1 + 1) % melody1.cap() => i1;
(i2 + i1) % rhythm1.cap() => i2; // messing around with rhythm index
} |
Code: | // guitar riff modification technics
// Copyright 2008 by Kijjasak Triyanond (kijjaz@yahoo.com)
// This software is protected by GPL version 3
140.0 * 2 => float BPM;
minute / BPM => dur beat;
Mandolin s => Dyno compressor => LPF s_lpf => SinOsc od => dac;
pi => s.gain; // Drive Gain
compressor.compress(); // set as compressor
.25 => compressor.thresh; // set threshold
s_lpf.set(1900, 1.5); // set lowpass filter as amp EQ simulation
1 => od.sync; // set od as sine overdrive
[0, 0, 12, 0, 0, 0, 12, 0, 0, 7, 10, 12, 6, 5, 7, -2] @=> int melody1[];
[1.0, 1, 1.5, 1.5, .5, .5, 1.5, 1.5, .5, .5, .5, .5, 1, 1, 1.5, 1.5] @=> float rhythm1[];
32 => int BaseNote;
int i1, i2;
while(true)
{
melody1[i1] + BaseNote => Std.mtof => s.freq;
// play legato (long) or staccato (short) notes
if(i2 % 4 != 1)
{
.8 => s.noteOn;
rhythm1[i2]::beat * .95 => now;
.8 => s.noteOff;
rhythm1[i2]::beat * .05 => now;
}
else
{
.5 => s.noteOn; // play softer, and shorter
rhythm1[i2]::beat * .4 => now;
.5 => s.noteOff;
rhythm1[i2]::beat * .6 => now;
}
// move plucking position
if(i2 % 3 == 0)
{
0.1 => s.pluckPos;
}
else
{
1.0/3 => s.pluckPos;
}
if (i1 % 8 == 7) 68 - BaseNote => BaseNote; // change root note of the riff sometimes
(i1 + i2) % melody1.cap() => i1; // messing around with melody index
(i2 + 1) % rhythm1.cap() => i2;
} |
Code: | // guitar riff modification technics
// Copyright 2008 by Kijjasak Triyanond (kijjaz@yahoo.com)
// This software is protected by GPL version 3
160.0 * 2 => float BPM;
minute / BPM => dur beat;
Mandolin s => Dyno compressor => LPF s_lpf => SinOsc od => dac;
pi => s.gain; // Drive Gain
compressor.compress(); // set as compressor
.25 => compressor.thresh; // set threshold
s_lpf.set(1900, 1.5); // set lowpass filter as amp EQ simulation
1 => od.sync; // set od as sine overdrive
[0, 0, 12, 0, 0, 0, 12, 0, 0, 7, 10, 12, 6, 5, 7, -2] @=> int melody1[];
[1.0, 1, 1.5, 1.5, .5, .5, 1.5, 1.5, .5, .5, .5, .5, 1, 1, 1.5, 1.5] @=> float rhythm1[];
32 => int BaseNote;
int i1, i2;
while(true)
{
melody1[i1] + BaseNote => Std.mtof => s.freq;
for(int iter; iter < Std.rand2(1, 2); iter++)
{
// play legato (long) or staccato (short) notes
if(i2 % 4 != 1)
{
.8 => s.noteOn;
rhythm1[i2]::beat * .95 => now;
.8 => s.noteOff;
rhythm1[i2]::beat * .05 => now;
}
else
{
.5 => s.noteOn; // play softer, and shorter
rhythm1[i2]::beat * .4 => now;
.5 => s.noteOff;
rhythm1[i2]::beat * .6 => now;
}
}
// move plucking position
if(i2 % 3 == 0)
{
0.1 => s.pluckPos;
}
else
{
1.0/3 => s.pluckPos;
}
if (i1 % 5 == 4) 76 - BaseNote => BaseNote; // change root note of the riff sometimes
(i1 + 1) % melody1.cap() => i1;
(i2 + 1) % rhythm1.cap() => i2;
} |
I think this kind of ideas can work very well with your enormous outputs from your boolean sequencer.
Description: |
starting point, playing the riff normally. |
|
Download |
Filename: |
20081103GuitarRiff-01.ck |
Filesize: |
1.35 KB |
Downloaded: |
626 Time(s) |
|
|
Back to top
|
|
|
Kassen
Janitor
Joined: Jul 06, 2004 Posts: 7678 Location: The Hague, NL
G2 patch files: 3
|
Posted: Sun Nov 02, 2008 2:09 pm Post subject:
|
|
|
I like it a lot, Les. I hope you'll extend it with some song structure and maybe more lyrics some day. Maybe it's a weird suggesting but did you think of trying a detuned sax with this? I'm experiencing it as quite "no-wave"-ish and no-wave works with sax.
http://en.wikipedia.org/wiki/No_Wave _________________ Kassen |
|
Back to top
|
|
|
Inventor
Stream Operator
Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Sun Nov 02, 2008 3:27 pm Post subject:
|
|
|
Thanks guys! I know what I'll be doing tonight! Adding some No Wave sax and kijjaz's code to the strat program, for sure. I had never even heard of No Wave, and it sounds cool.
But I cannot call it mine alone since kijjaz has made so many contributions. You know, I see a trend. kijjaz makes the bits and pieces, then I stitch them together into an application based on the boolean sequencing framework. Nice combination, don't you think?
I will work on it some more soon. Maybe I will call it "Know Wave", for "Kijjaz No Wave".
"Let's make noise for peace!" - kijjaz _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
|
Kassen
Janitor
Joined: Jul 06, 2004 Posts: 7678 Location: The Hague, NL
G2 patch files: 3
|
Posted: Sun Nov 02, 2008 3:50 pm Post subject:
|
|
|
No-Wave style sax is quite hard to describe (actually it could be argued that No-Wave itself is impossible to define...). Erm... imagine a saxophonist who is quite good at making a sax make all sorts of noises but not at all influenced by traditional sax playing. It's mostly in the rhythm and the timbre, these are repetitive distorted and often borderline a-tonal but still "musical". We're talking about a lot of noise but noise made by musicians with more control over their instrument then the average punk guitarist.
I'd hook up STK's Saxophony to your riff generators, then tweak the member functions until you start wondering "is this still a sax?", that should about do it ;¬).
So far for the music-history lesson.... go whatever you think feels right but I think a angle like that could be more exciting then going with more plain strings and edging towards a sort of "minimal wave" sound, I've become a bit tired of that, even if there are of course very interesting pieces in that style as well. _________________ Kassen |
|
Back to top
|
|
|
Inventor
Stream Operator
Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
|
Back to top
|
|
|
Kassen
Janitor
Joined: Jul 06, 2004 Posts: 7678 Location: The Hague, NL
G2 patch files: 3
|
Posted: Sun Nov 02, 2008 6:29 pm Post subject:
|
|
|
I love it! _________________ Kassen |
|
Back to top
|
|
|
kijjaz
Joined: Sep 20, 2004 Posts: 765 Location: bangkok, thailand
Audio files: 4
|
Posted: Sun Nov 02, 2008 9:04 pm Post subject:
|
|
|
Inventor, thanks.
Wow.. No-Wave is that kind of thing. i love the idea.
i found myself playing around with a sax and get some weird sounds.
i've just listened to KNoW .. ohhh
nice jam in there!! wow. heheh i like how they respond to eachother in the patch. |
|
Back to top
|
|
|
Inventor
Stream Operator
Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Mon Nov 03, 2008 12:49 am Post subject:
|
|
|
KNoW = Kijjaz No Wave
To hear the songs I made with this generator prior to adding the sax, go here:
http://virb.com/inventor
It starts on the fourth song, which is the second album called "Boolean Sequencing", but you might like the first three songs from the "Paranoid Schizophrenia" album also.
I will continue to add new songs once I have enough for another album.
Maybe later tonight I'll add the scales... _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
|
Kassen
Janitor
Joined: Jul 06, 2004 Posts: 7678 Location: The Hague, NL
G2 patch files: 3
|
Posted: Mon Nov 03, 2008 9:36 am Post subject:
|
|
|
Les, my radio-show is only a small one on local radio (but it has internet streaming as well)... and it's in the middle of the night... but if you send me stuff you can be on the radio; I like your music. _________________ Kassen |
|
Back to top
|
|
|
Inventor
Stream Operator
Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Mon Nov 03, 2008 10:40 am Post subject:
|
|
|
Kassen wrote: | Les, my radio-show is only a small one on local radio (but it has internet streaming as well)... and it's in the middle of the night... but if you send me stuff you can be on the radio; I like your music. |
Woohoo, Kassen, you made my day! To be on the air half a world away in the middle of the night would be fantastic! I'll send you all of my current songs, though that will be a few separate emails. Yipee! _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
|
radarsat1
Joined: Mar 14, 2008 Posts: 85 Location: Montreal
|
Posted: Mon Nov 03, 2008 12:20 pm Post subject:
|
|
|
Kassen wrote: | (but it has internet streaming as well)... |
url? |
|
Back to top
|
|
|
Inventor
Stream Operator
Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Mon Nov 03, 2008 1:08 pm Post subject:
|
|
|
Hey Kijjaz, I just arranged for you to receive a free Guitar Motion Sensor. Cool! Check your private messages on electro-music.com. _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
|
Inventor
Stream Operator
Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Mon Nov 03, 2008 2:12 pm Post subject:
|
|
|
So, um, what I have not yet figured out is how to represent a scale as an array of MIDI notes. I'd like to use Kijjaz's proposed technique of having a basenote and the array contains relative notes that form the scale. Any scale will do. Could someone who understands this describe it or post such an array? I'd appreciate it, as I cannot proceed without it. Thanks in advance. _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
|
kijjaz
Joined: Sep 20, 2004 Posts: 765 Location: bangkok, thailand
Audio files: 4
|
Posted: Mon Nov 03, 2008 2:48 pm Post subject:
|
|
|
some standard western musical theory scales:
Major Pentatonic [0, 2, 4, 7, 9]
Minor Pentatonic [0, 3, 5, 7, 10]
Lydian Mode [0, 2, 4, 6, 7, 9, 11]
Major scale (Ionian mode) [0, 2, 4, 5, 7, 9, 11]
Mixolydian Mode [0, 2, 4, 5, 7, 9, 10]
Lydian Mode [0, 2, 3, 5, 7, 9, 10]
Aeolian Mode [0, 2, 3, 5, 7, 8, 10]
Phrygian Mode [0, 1, 3, 5, 7, 8, 10]
Locrian Mode [0, 1, 3, 5, 6, 8, 10]
(Ascending) Melodic Minor [0, 2, 3, 5, 7, 9, 11]
Harmonic Minor [0, 2, 3, 5, 7, 8, 11]
example blues scale within 7 notes:
[0, 3, 5, 6, 7, 9, 10], [0, 2, 3, 5, 6, 9, 10]
[0, 3, 4, 5, 6, 7, 10], [0, 3, 4, 6, 7, 9, 10]
i'll post a way to generate midi note from an input note and these scales later.
now gotta sleep ^_^. take care all. |
|
Back to top
|
|
|
Inventor
Stream Operator
Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Mon Nov 03, 2008 3:28 pm Post subject:
|
|
|
Thanks, kijjaz, that was SOOO helpful! I have already begun coding it up! Should have something in place tonight. _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
|
Inventor
Stream Operator
Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
|
Back to top
|
|
|
kijjaz
Joined: Sep 20, 2004 Posts: 765 Location: bangkok, thailand
Audio files: 4
|
Posted: Mon Nov 03, 2008 9:32 pm Post subject:
|
|
|
I give you this function for using the scale arrays easily:
Code: | fun float NoteToMidi(int key, int note, int scale[])
{
0 => int octave;
if (note < 0) // quite a Brute-Force way to count octave from note
{
while(note < 0)
{
octave--;
scale.cap() +=> note;
}
} else
{
note / scale.cap() +=> octave;
note % scale.cap() => note;
}
return (key + octave * 12 + scale[note]) $ float;
}
// test code
[0, 2, 4, 5, 7, 9, 10] @=> int MixolydianMode[];
for(-10 => int i; i < 10; i++)
{
<<< i, NoteToMidi(60, i, MixolydianMode) >>>;
} |
|
|
Back to top
|
|
|
Inventor
Stream Operator
Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Mon Nov 03, 2008 10:31 pm Post subject:
|
|
|
Thanks kijjaz, I put that in my program, it works great. _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
|
Inventor
Stream Operator
Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
|
Back to top
|
|
|
Inventor
Stream Operator
Joined: Oct 13, 2007 Posts: 6221 Location: near Austin, Tx, USA
Audio files: 267
|
Posted: Tue Nov 04, 2008 4:24 am Post subject:
|
|
|
Does anyone have a good hi-hat model that I can add to the program? Thanks. _________________ "Let's make noise for peace." - Kijjaz |
|
Back to top
|
|
|
|