interesting feature?

Started by habys, April 25, 2006, 18:47:17

Previous topic - Next topic

habys

Hello, I think this is the right place to ask this,
I always dreamed of this feature:

Imagine if you could select a block from a pattern, and change how many beats it contained.





Concerning fitting extra notes in a small space, you could just change the color of the affected selection, and when you click on it somewhere, the extra notes could appear. That would probably be easier than trying to scale the graph in that section.

I know this is insanely complicated and I can't even begin to imagine the prerequisite programming necessary to scale the program to use two or more internal timers going at the same time, but doesn't it sound cool?

Anyway this is my first post here, Modplug rules! I have been tracking since Scream Tracker ]I[ and it and Impulse Tracker were the lights of my life! haha, anyway thank you for this insane program, I have been dreaming of a way to play polyrhythms besides scaling the two rhythms besides each other and dividing the BPM of the song to match!
--------------------------------
And I do hope that you have
a Sound Blaster Pro because
I tried to make this song
as much stereo as possble.

Sam_Zen

This would indeed be very complicated, because it would mean assigning different clocks to different channels in a pattern. And it is i.m.o. not necessary too. Polyrhythms can be realised anyway.
Forget about the BPM thing, it just gives confusion in these matters.
Just use mathematics to define the length-number of a pattern. A matter of common denominator.
So in the case of a polyrhythm of 5 and 7 the basic patternlength would be 35 steps.
Your request is in fact one for more resolution in editing. So in this case you could change the pattern-length to 4 x 35 = 140. And of course adjust the playing speed accordingly to keep the same song-length.
0.618033988

LPChip

And don't forget you can note-delay notes (SDx) to move them down in ticks.

(eg. if the speed is set to 6, each row has 6 ticks. by setting SD4, you start the sample/instrument to be played at the 4th tick.
"Heh, maybe I should've joined the compo only because it would've meant I wouldn't have had to worry about a damn EQ or compressor for a change. " - Atlantis
"yes.. I think in this case it was wishful thinking: MPT is makng my life hard so it must be wrong" - Rewbs

speed-goddamn-focus

Quote from: "LPChip"And don't forget you can note-delay notes (SDx) to move them down in ticks.

(eg. if the speed is set to 6, each row has 6 ticks. by setting SD4, you start the sample/instrument to be played at the 4th tick.
Well, that would be the 5th tick.

LPChip

Quote from: "speed-goddamn-focus"
Quote from: "LPChip"And don't forget you can note-delay notes (SDx) to move them down in ticks.

(eg. if the speed is set to 6, each row has 6 ticks. by setting SD4, you start the sample/instrument to be played at the 4th tick.
Well, that would be the 5th tick.

Well spotted! :)

SD1 moves it to the 2nd tick
SD5 to the 6th tick
SD6 doesn't work, as there isn't a 7th tick, which is the same as moving down the note. :)
"Heh, maybe I should've joined the compo only because it would've meant I wouldn't have had to worry about a damn EQ or compressor for a change. " - Atlantis
"yes.. I think in this case it was wishful thinking: MPT is makng my life hard so it must be wrong" - Rewbs

rewbs

I personally don't like the idea of 2 or more channels of a given pattern playing at different speeds simultaneously, since this breaks the simplicity of the concept of a pattern, imho. However being able to zoom in/out of a whole pattern to edit at different resolutions would be cool.

LPChip

Quote from: "rewbs"I personally don't like the idea of 2 or more channels of a given pattern playing at different speeds simultaneously, since this breaks the simplicity of the concept of a pattern, imho. However being able to zoom in/out of a whole pattern to edit at different resolutions would be cool.

Oh, that feature would be so cool!!!

you set a pattern length of 128 rows, and it shows rows 0,2,4,6,8... (64 rows) or every 4th row, 0,4,8,... (32 rows)

I can see the potential with this feature if you assign this to a key.

If you do so, please make sure that zooming in, will keep the cursor in place (not that with zooming the the pattern jumps to the top position)

I can imagine putting the speed to 1, and increases the patternsize to 6, then zoom in 6 times, to have a high resolution grid :D
"Heh, maybe I should've joined the compo only because it would've meant I wouldn't have had to worry about a damn EQ or compressor for a change. " - Atlantis
"yes.. I think in this case it was wishful thinking: MPT is makng my life hard so it must be wrong" - Rewbs

Louigi Verona

Zooming into the selection is a wonderful idea. It can work as "expand pattern" thing.

Snu

Quote from: "rewbs"However being able to zoom in/out of a whole pattern to edit at different resolutions would be cool.
DEFINITELY!
or even just being able to change the font size...
i would absolutely love it if i could fit 64 rows on my screen, its 4 STINKIN ROWS off at 1280x1024, hate that (tho if the buttons and such above the pattern editor were movable and had a better use of space, this wouldnt be a problem).
actually, if i turn off the vu-meters, and the show plugins, i can fit all but ONE row... aaaaaargh.

Blulum

QuoteOh, that feature would be so cool!!!

you set a pattern length of 128 rows, and it shows rows 0,2,4,6,8... (64 rows) or every 4th row, 0,4,8,... (32 rows)

I can see the potential with this feature if you assign this to a key.

If you do so, please make sure that zooming in, will keep the cursor in place (not that with zooming the the pattern jumps to the top position)

I can imagine putting the speed to 1, and increases the patternsize to 6, then zoom in 6 times, to have a high resolution grid

I agree, having an expanding/collapsing or zoomable pattern view is a great idea.

Sam_Zen

An expansion in the way to present the pattern view would be quite nice.
After all, I consider the pattern tab as the main tab while working.
0.618033988

habys

Breaks the simplicity of a pattern? What a dismissal. I am completely aware of SD_ and Q__ and just as aware of their limitations.

The purpose of this request is that it makes the tracker more flexible than you can imagine. The reason that I have used trackers most of my life is not for nostalgic reasons, but because they offered the most freedom and best interface for a music writing application that I have experienced. They just always seemed to suit me. Or perhaps I just need to learn new software. My friends seem to really enjoy Cubase, any long time trackers given it a try?
--------------------------------
And I do hope that you have
a Sound Blaster Pro because
I tried to make this song
as much stereo as possble.

LPChip

Quote from: "habys"Breaks the simplicity of a pattern? What a dismissal. I am completely aware of SD_ and Q__ and just as aware of their limitations.

The purpose of this request is that it makes the tracker more flexible than you can imagine. The reason that I have used trackers most of my life is not for nostalgic reasons, but because they offered the most freedom and best interface for a music writing application that I have experienced. They just always seemed to suit me. Or perhaps I just need to learn new software. My friends seem to really enjoy Cubase, any long time trackers given it a try?

I've done some midi sequencing, but its not the same. One of the first things you'll start missing is the nice overview you have with a pattern. Sequencing is based on a per instrument track, instead of a per quantity track. You can easilly work on several instrument parts in a tracker. Thats what I really mis in any sequencer.
"Heh, maybe I should've joined the compo only because it would've meant I wouldn't have had to worry about a damn EQ or compressor for a change. " - Atlantis
"yes.. I think in this case it was wishful thinking: MPT is makng my life hard so it must be wrong" - Rewbs

Sam_Zen

2 habys
A living eel in your hand is a very flexible thing but quite hard to control.
As LPChip stated, overview is a very importing thing, the survey. You confirm this with "most freedom and best interface" and "always seemed to suit me". Well, I would say, what more do you want ?
0.618033988

yrk

Quote from: "Blulum"
QuoteOh, that feature would be so cool!!!

you set a pattern length of 128 rows, and it shows rows 0,2,4,6,8... (64 rows) or every 4th row, 0,4,8,... (32 rows)

I agree, having an expanding/collapsing or zoomable pattern view is a great idea.

But not without problems... How will it impact editing a selection? Imagine being "zoomed in x2" showing rows 0,2,4,6... Now you select from row 0-2 and copy it and paste it starting at row 4... What should happen (and why)?

* Rows 0 and 2 copied to 4 and 6 respectively - rows 5 and 7 are unchanged.
* Rows 0, 1 and 2 copied to 4, 5 and 6 respectively - row 7 is unchanged.
* Rows 0, 1, 2 and 3 copied to 4, 5, 6 and 7 respectively.

It's a varation of the problem with the lo/med/hi feature that hides FX columns... I hardly ever use it because I can't see what I'm doing. I move something around and suddenly the FX commands don't line up anymore...

Anybody who has worked a lot with pixel-based graphics knows that working at zoom levels less than 100% is a pain on images with a lot of thin (e.g. 1 pixel) lines because then tend to fade or disappear...

This is basically the same problem we have in spades...

In my opinion, simple "zooming" is not a good approach and maybe it tries to solve the wrong problem...

In my experience, when tracking, most of the tracks and notes fit well into a certain "timecode"... E.g. 4 bars / pattern and 16 rows / bar. This means  that I can easily play note at any 16th part of the bar. If I'm doing simpler music, maybe I'll be using 1/8 notes and settle for only 8 rows per bar...

Say I'm using 64 rows / pattern in 4 bars (so down to 1/16 notes)... This is fine 95% percent of the way but there's still the odd place where I need a few 1/32 notes in the melody... There are basically 3 ways I can solve this...

1) Expand the entire pattern and halve the speed...
Upside: Consistency - I get no "funky" exceptions in my "pattern rhythm"...
Downside: Huge impact on the rest of the pattern because I need to fill FX commands into all the new empty rows and also modify some FX parameters. I also waste a lot of screen space on empty rows.

2) Use SDx commands...
Upside: No impact on other stuff. "Pattern rhythm" stays the same...
Downside: I'm pretty limited in what I can do... Even if I use multiple channels to play notes at different ticks in the same row, I've still "lost" the FX column to the SDx command... (there are other drawback as well...)

3) Momentarily halve the speed (e.g. playback speed x2) and add a few extra rows to the pattern...
Upside: Flexibility - I can add number of notes at any density...
Downside: Still some impact on other channels during the speed change. Also there are irregularities in the pattern, e.g. a bar with an extra 1/32 note in it will be 17 rows instead of 16, which means that copy/paste now requires lots of hand-fitting afterwards...

I usually go with the 3rd solution but it's a bit of a pain to work with...

The basic problem is that a pattern is locked in a specific "timecode"... E.g. 16 rows per bar...

I think a more useful approach would be to "hide empty sub-rows"... Explanation:

Define which rows are major (always shown) and minor (potentially hidden) in your patterns. E.g. for straight rock (which is mostly 1/8's) you would have all even rows (0,2,4,6,...) as major rows and odd rows (1,3,5,... e.g. odd 1/16 notes) as minor rows... Add a hotkey for toggling between hiding unused minor rows and showing all rows and we're almost there... Almost but not quite...

The reason it's not enough is that in terms of FX commands - there's a big difference between an empty row and a non-existant row. For example, if you expand a speed-6 pattern using vibrato to speed-3 pattern with every other line empty, it won't sound the same. So what we need is a way to not only leave a channel row empty but to make disappear - at least as far as the player is concerned...

For example say we have the following pattern data:


01 | C-5 01 .. ... | C-4 02 .. H81
02 | D#5 01 .. ... | ... .. .. H00
03 | G-5 01 .. ... | ... .. .. H00


Let's say I want to add an F between the D# and the G... I expand the patter and add it:


01 | C-5 01 .. ... | C-4 02 .. H81
02 | ... .. .. ... | ... .. .. ...
03 | D#5 01 .. ... | ... .. .. H00
04 | F-5 01 .. ... | ... .. .. ...
05 | G-5 01 .. ... | ... .. .. H00


But now there are "holes" in my vibrato because I added some extra rows...  But what if I could tell the player to simply pretend like the extra rows weren't there in the places they aren't needed? Let's assume that the '~' note would do that and let's call it a "void" note... Then I could add void notes where I don't need the extra rows:


01 | C-5 01 .. ... | C-4 02 .. H81
02 | ~   .. .. ... | ~   .. .. ...
03 | D#5 01 .. ... | ... .. .. H00
04 | F-5 01 .. ... | ~   .. .. ...
05 | G-5 01 .. ... | ... .. .. H00


Now the player would simply treat row 01 like it had twice as many ticks and skip directly to row 03 (and the same for row 03 - 05 in channel two but not channel 1 where row 4 is used)... Also, since row 02 is not used at all, it can be hidden without problems...

The biggest advantage is that apart from the introduction of void notes, the internal pattern format does not have to changd. Each pattern still has a fixed number of rows. Some of them might just be hidden. Also, void notes would be generally useful because they could save you from typing a lot x00 commands and would help compress patterns on-screen a lot...

Another nice side effect is that 'expand pattern' could automatically fill void notes in the newly created rows leaving the new patter sounding exactly the same as the old one...

So actually, let's scratch the pre-defined major/minor rows in the actual patterns becuase any row that contains void notes for all channels is automatically a candidate for being hidden. Let's introduce default patterns or pattern templates instead. Let's say I'm doing a shuffle song. Each quarter note is really a triplet where the middle note is mostly unused:


01 | C-5 01 .. ... |
02 | ... .. .. ... |
03 | C-5 01 .. ... |
04 | C-5 01 .. ... |
05 | ... .. .. ... |
06 | C-5 01 .. ... |
07 | C-5 01 .. ... |


Why not hide all the unused rows? Let's say I define define a major/minor sequence of 3 rows that repeats troughout the pattern; major-minor-major. This would then by default produce pattern data for new patterns as such:


01 | ... .. .. ... |
02 | ~   .. .. ... |
03 | ... .. .. ... |
04 | ... .. .. ... |
05 | ~   .. .. ... |
06 | ... .. .. ... |
07 | ... .. .. ... |


Meaning the the middle row in each triplet would by default be all void notes and thus a minor row...

Coolness, eh?

The major difference between this way and the original proposal is that it does not change the internal format of patterns. E.g. no funky stuff with one channel playing 7 rows while the other plays 9...

The major difference between this and the "zoom" feature is that this way you wouldn't loose visibility of what you are doing... You always see all your notes and FX commands...

The beauty of this approach is that it really is fairly simple... Only two things are needed:
* A way of saying "this row in this channel should not change anything" - as opposed to an empty row (see above)....
* A way of hiding rows where all channels are like that...
while (1) { fork(); }