[Done 2.7] Markers

Meow is talking about using the suggestion to use the entire alphabet. However, this wouldn’t actually change the base system if it was only used for selecting effects. We could still keep all of the parameter values pure hexidecimal. I’ve seen this done in a few trackers. (LSDJ, for one.)

Yeah… or FastTracker II, or ImpulseTracker…

Yeah, forgot about that one. Thanks for the heads up.

As phate understood me, using the entire alphabet (as apposed to a-f) would complicate things severly. Like for example, if you would put in a command of “7R” into the volume column, what would that translate to?

On the other hand, keeping the hex everywhere else and just using it as effect commands might be nice.

Well, nobody ever suggested anything else, at least I’m pretty sure I didn’t…

“In summmary, keep the effect command values up to FF (until graphical icons come along maybe), but for the effect commands themselves, we need more than 16 (0-F) definitely! If anything it’s clearer because then people will see the effect type and effect value are two seperate entities. Otherwise they’re thinking “Oh, so both types go up to F”, and thus they’re more likely to conflate the two.”

Thats is very logical and would improve the useability.

I think the, keep it to only F to not confuse is not right.

Rather have b for backwards, r for retrigg, l for loop etc. m for markers, t for tempo etc. Would make it more userfriendly because that gives each letter a more logical connection.

Though Icons would be even more user friendly, however that would requrie a whole new design, which is not worth it right now.

Hallelujah! Finally there’s someone who sees this the way I see it! Thank you! And NO graphical icons FFS! That is just stupid, who benefits from them if that cripples powerful usage of the program, even if it is made more obivous? Renoise is not a baby toy GODDAMMIT! We already understand latin alphabet and arabic number symbols, why woud we need icons?

Impulse Tracker example, some of these wouldn’t be neccessary but all of them could be used in Renoise:

 Axx Set Speed.  
  
 I prefer to think of this command as "Set Frames per Row".  
 Normally, the tracker operates at around 50 frames a  
 second. If the rows were played at this speed, then a huge  
 amount of space would be required to enter the pattern data.  
 Instead, setting the 'speed' of the song will cause the  
 tracker to wait on the current row for 'xx' frames. Hence,  
 setting the speed at 50 (decimal = 32hex) will cause each  
 row to last about a second - quite a long time! The default  
 is A06. The initial speed can be set in the variables  
 screen on F12.  
  
 If two Axx commands are given in the same row, then the  
 command in the higher channel (by number) will take effect.  
  
 Bxx Jump to order.  
  
 Causes the song to jump to order xx (hex). This is often  
 used to create looping songs.  
  
 If two Bxx commands are given, then the command in the  
 higher channel will take effect.  
  
 Cxx Break to row.  
  
 The Command Cxx signifies the end of the current pattern,  
 and also that the next pattern should be played from row  
 xx (hex)  
  
 If two Cxx commands are given... you know ![:)](https://files.renoise.com/forum/emoticons/default/smile.gif)  
  
 D0x Volume slide down  
  
 The volume slide down command causes the volume of the  
 note to be reduced by x for each frame after (for that  
 row). ie. If you have a note at volume 64, with command  
 D01 and speed A06, then the final volume will be 64-5=59.  
 A note at volume 32 with command D02 at speed A05 will  
 result in a volume of 24.  
  
 For greater S3M compatibility, D0F will cause the volume  
 to drop by 15 EVERY frame, instead of just off-note frames.  
  
 Here's a full frame-by-frame description which should provide  
 greater understanding:  
  
 At 'speed' 4:  
 C-4 01 .. D04  
  
 What this does is:  
 Frame 1: Plays C-4 with instrument 1  
 Frame 2: Lowers the volume by 4  
 Frame 3: Lowers the volume by 4  
 Frame 4: Lowers the volume by 4  
  
 The next frame will be controlled by the next row of  
 information.  
  
 Dx0 Volume slide up.  
  
 Operates exactly the same way as D0x, but slides the  
 volume up by 'x'. Volumes cannot exceed 64 (checked  
 and limited internally).  
  
 For greater S3M compatibility, DF0 will cause the volume  
 to rise by 15 EVERY frame, instead of just off-note frames.  
  
 DFx Fine volume slide down.  
  
 Takes the volume down by x at the start of the row.  
  
 DxF Fine volume slide up.  
  
 Takes the volume up by x at the start of the row.  
  
 Exx Pitch slide down  
  
 The pitch will slide down with speed xx (hex). In linear  
 frequency mode, a pitch slide down by a particular value  
 will always cause the same "pitch interval" - this does  
 not occur in Amiga frequency mode. Valid ranges for xx  
 are between 0 and 0DFh (as > 0E0h will be interpreted as  
 fine slides)  
  
 EFx Fine pitch slide down  
  
 Slides the pitch down by x at the start of the row.  
  
 EEx Extra fine pitch slide down  
  
 Same as EFx, but 4 times finer. (ie. EE4 is equivalent to  
 EF1)  
  
 Fxx Pitch Slide up  
 FFx Fine Pitch slide up  
 FEx Extra fine pitch slide up  
  
 Operates in the same manner as the Exx commands, but  
 slides the pitch up. If the pitch gets 'too high', then  
 the channel is turned off.  
  
 Gxx Portamento to note.  
  
 This command requires 2 parameters: A note to slide to  
 and a speed. Example:  
  
 C-4 01 ùù .00  
 G-4 01 ùù G08  
 ùùù ùù ùù G00  
 ùùù ùù ùù G00  
  
 This will cause the note C-4 to slide to G-4 with speed 8.  
  
 You *CAN* change the sample that the note is sliding to.  
 It is a good idea to make sure that the C5Speed of the  
 samples is similar, if you want to try this! The new sample  
 will play from it's beginning.  
  
 Hxy Vibrato with speed x, depth y  
  
 Causes the frequency to osciallte with depth 'y' at speed  
 'x' which causes an interesting effect. Don't get carried  
 away with it though! If you specify EITHER x or y as 0, then  
 the previous value will be used.  
  
 Ixy Tremor with ontime x, offtime y.  
  
 Causes the volume of the instrument to remain normal for  
 x frames, then sets the volume to 0 for y frames.  
  
 Jxy Arpeggio with halftones x, y.  
  
 This causes the note to quickly cycle through three notes -  
 the note playing, a note x halftones above, and a note y  
 halftones above. This causes an effect similar to old  
 C-64 chords.  
  
 Example: C-4 01 ùù J47 will cause the notes C-4, E-4 and  
 G-4 to be cycled.  
  
 Kxx Dual command: Vibrato + Dxx (Volume slide)  
  
 Note: The vibrato could have been set with either Hxx or  
 Uxx  
  
 Lxx Dual Command: G00 + Dxx (Portamento to and Volume slide)  
  
 Mxx Set channel volume  
  
 Each channel has a volume range from 0->40h. The lower  
 the value, the softer the notes in the channel. This  
 command is convenient for making 'echoes'... you won't have  
 to modify the echoing channel from the original, except  
 for placing a M20 at the top of it!  
  
 Values greater than 40h are ignored at playtime.  
  
 N0x, Nx0, NFx, NxF Slide channel volume commands  
  
 These commands work in the same manner as the slide  
 volume commands, but operate on the channel volume,  
 rather than directly on the note volume.  
  
 Oxx Set sample offset.  
  
 This will cause a sample to be played from offset yxx00h.  
 This is useful to skip past the first part of a sample  
 which may have a loud hit, or to start a speech sample  
 half way through.  
  
 If you specify a value PAST the end of a sample, then the  
 command is ignored.  
  
 The "y" part of yxx00h is set with command "SAy"  
  
 Example:  
 ... .. .. SA5  
 C-4 01 .. O10  
  
 This will play note C-4, instrument 1 at offset 51000hex  
  
 Note to programmers: Oxx for 16-bit samples will move  
 to the xx00h*2 position in the sample - ie. the 'xx00th'  
 sample.  
  
 P0x, Px0, PFx, PxF Slide panning commands.  
  
 These work in the same maner as the slide volume  
 commands, but operate on the channel panning. P0x slides  
 the panning right, while Px0 slides the panning left.  
  
 Qxy Retriggers a note after y frames with volume modifier x.  
  
 This will cause a sample to be replayed from it's  
 beginning after every y frames. 'x' can be any of the  
 following:  
  
 Value Effect on volume each retrig.  
 0 No change  
 1 -1  
 2 -2  
 3 -4  
 4 -8  
 5 -16  
 6 *2/3  
 7 *1/2  
 8 No change  
 9 +1  
 A +2  
 B +4  
 C +8  
 D +16  
 E *3/2  
 F *2  
  
 Rxy Tremelo with speed x, depth y  
  
 This command acts similarly to the vibrato command, but  
 affects the note volume, instead of the pitch. If you specify  
 EITHER x or y as 0, then the previous value will be used.  
  
 S3x Sets vibrato waveform to x  
 S4x Sets tremelo waveform to x  
 S5x Sets panbrello waveform to x  
  
 Values for x: 0 = sine wave  
 1 = square wave  
 2 = Ramp down  
 3 = Random!  
  
 S70 Past note cut  
 S71 Past note off  
 S72 Past note fade  
  
 With the loss of 1-1 correspondence of editing channels  
 to internal playing channels, these commands provide  
 control over notes that have already been played by a  
 channel.  
  
 Example:  
 Consider the following situation, where instrument  
 1, notes C-4 & D-4 map to a looped sample, and the  
 New Note Action is set to continue.  
  
 C-4 01 64 .ùù  
 D-4 01 64 .ùù  
 E-4 01 64 .ùù <--- Use S70 here!  
  
 Ordinarily, control would be lost over C-4 and D-4, but  
 using command S70 at the point indicated, the notes C-4  
 and D-4 would be stopped immediately when the note E-4  
 plays.  
  
 Similarly, note off commands and Fadeout commands can  
 also be issued.  
  
 Note: You *MUST* be in instrument mode for these  
 to have any significance.  
  
 S6x Pattern delay for x ticks.  
  
 S73 Set NNA to note cut  
 S74 Set NNA to continue  
 S75 Set NNA to note off  
 S76 Set NNA to note fade  
  
 These options allow you to override the default NNA for a  
 particular NOTE (ie. it does not affect the instrument)  
 See section 2.5 for an explanation of NNAs.  
  
 Note: You *MUST* be in instrument mode for these to have  
 any effect.  
  
 S77 Turn Volume envelope off.  
  
 Stops the processing of the volume envelope. This is for the  
 times that you don't want to use the volume envelope that  
 you've created.  
  
 S78 Turn volume envelope on.  
  
 Sometimes, you'll decide that it's better not to use the  
 volume envelope for most cases, but you may just want to  
 use it a few times - this is the command that lets you  
 do that!  
  
 Note: You *MUST* be in instrument mode for this to work.  
  
 S8x Set panning position  
  
 Set panning position, S80 is leftmost, S8F is rightmost.  
 This is an obsolete command, provided only for ST3  
 compatibility. Use command Xxx instead.  
  
 S91 Set surround sound!  
  
 For those of you who are lucky enough to have a dolby  
 surround sound decoder (myself not included - so if ya  
 wanna send me something.....), this *should* cause the  
 sound to come from the surround speaker. This is a  
 pseudo-panning command, and issuing either Xxx or S8x  
 will cause the surround sound to be reset.  
  
 If you try and play Surround Sound on a GUS, Interwave  
 or AWE32, it will be played as a central pan.  
  
 SAy Set high-offset. Check Oxx for an example.  
  
 SB0 Set loopback point  
 SBx Loop x times.  
  
 This pattern space-saving feature will cause the pattern  
 to be looped x times back to the last SB0. Note that you  
 can only loop within the pattern! Also, each channel has  
 it's own loop-back information... so you HAVE to have the  
 SB0 and SBx in the same channel for it to operate.  
  
 SCx Note cut after x frames  
  
 This will cause a note to be immediately stopped after x  
 frames. It is similar to issuing a "^^^" in the note column,  
 just that it has a finer control over timing.  
  
 SDx Note delay for x frames  
  
 Actually, this command works like "interpretation" delay  
 for x frames. Any data - note, sample/instrument or volume  
 in the channel will not be interpreted until x frames into  
 the row.  
  
 SEx Pattern delay for x rows  
  
 This will cause a "pause" on the row for effectively x rows  
 longer.  
  
 Note that if TWO pattern delay commands are issued, then  
 the only the command in the higher channel will be considered.  
  
 Txx Set tempo to xx  
  
 Valid ranges are between 20h and 0FFh. The higher the  
 value, the faster the playback. This essentially  
 determines the time length of each frame, by the following  
 formulas:  
 Frames per minute = 24*Tempo  
 equivalently:  
 Frames per second = 0.4*Tempo  
  
 T0x Tempo slide down  
 T1x Tempo slide up  
  
 Tempo slides up and down are used to smoothly modify the  
 speed of the song. The tempo is modified by ñx every  
 non-row frame.  
  
 Uxy Fine vibrato with speed x, depth y  
  
 Same as vibrato, but 4 times finer in depth.  
  
 Vxx Set Global volume  
  
 Valid ranges are between 0 and 80h. All notes playing are  
 affected by this change.  
 Values greater than 80h are ignored at playtime.  
  
 W0x, Wx0, WFx, WxF Slide global volume  
  
 Similar to the Dxx commands, but operate on the global  
 volume. Useful when fading out songs.  
  
 Xxx Set panning position  
  
 Sets the panning position anywhere from left to right (X00  
 is left, XFF is right).  
  
 Yxy Panbrello with speed x, depth y.  
  
 What the hell is panbrello? Well, it's a word that I coined  
 late one night after a friend suggested that there should  
 be a random pan position command. I decided.. why not - I'll  
 make the vibrato/tremelo equivalent of panning! And so you  
 have here, 'panbrello.' What this does is instead of  
 oscillating frequency (pitch) or volume, it oscillates the  
 panning position about the 'set' panning position for a  
 channel. This is for you techno freaks out there who want  
 another function to stuff around with! ![:)](https://files.renoise.com/forum/emoticons/default/smile.gif)  
  
 The random pan position can be achieved by setting the  
 waveform to 3 (ie. a S53 command). In this case *ONLY*, the  
 speed actually is interpreted as a delay in frames before  
 another random value is found. so S14 will be a very QUICK  
 panbrello, and S44 will be a slower panbrello. With any  
 other waveform, the higher the value for x, the faster the  
 panbrello, like vibrato and tremelo. If you don't know what  
 I'm talking about, check out the stereo-indicators on the  
 info page (don't forget that you have to be in stereo mode!)  
  
 If you specify EITHER x or y as 0, then the previous value  
 will be used.  

Back to the topic: Why would it not be possible to make 09xx command to respond to markers if they are set in sample editor and offset samples if not? Or would the idea be to offset from marker if commands are separated? I guess the use would be for drum loop hits, so could dual function (9xy), marker(y) and offset(x) if defined, be sufficient since it would be faster to use? Or would it limit too much the use of granular command line time stretch?

Because in theory, you then have more than 26 available commands in contrast to using the alphabet.
This supplies space to also allow controlling instrument envelopes for instance or control features that are currently not yet implemented.
Using figures or characters is all a personal choice, but when it comes to crippling, characters have more limits. Using the alphabet is only a temporary solution until we again walk against a limitation.

I don’t think anyone said it would be impossible to link the xx values to markers.
Another thing i would fancy as well is attaching keys to offset positions instead of samples… this is then the solution to the lacking beatslicer as well.

I has a simple solution guys
When “user defined sample offsets” (an sample property) is turned on, 09xx will automatically switch to representing user defined sample offsets instead of the typical slices, and slices you can move around will automagically appear in the sample editor. Therefore, there’s no need for a change in the codes used to represent effects. We’ll just use the same one we’ve been using all along.

And hex codes rule, mmmkay? ;)

Dude, that’s the least work of all. Just add M. Heh.

Yeah, but it’s not really a hex code when it’s just one digit/letter… and FT2 and Impulse Tracker also rule ;)

Yeah well - FIRST THINGS FIRST.

(for the purposes of this post, UDO = User Defined Offsets)
I’d rather be able to assign my offsets rather than having to determine which fine resolution offset a hit resides at, and then remember that number, and then type that undoubtedly long number every time I want to trigger the offset. At least with UDO
I could do this:

0900
0900
0901
0900
0903
0902
0900
0904
0902
0900
0903
0900
0901
… and so on

And then, if I decide that the offset at 0902 is slightly off, all I have to do is drag a marker instead of recoding my entire effect column. There’s no need to keep the old 09xx functionality when user defined offsets are turned on, because why would you ever use both at the same time? We could even make UDO* allow for markers to use whichever hex code you want, so that your old tracks already using 09xx commands could have a finer control, while not needing a massive change to adopt the new system.

Well, the reason behind using alphabets and numbers for command symbols is that they can be accessed directly from keyboard. Icons could be binded into alphabets so they could be entered with standard computer keyboard, but that would be just unneccessary. Getting rid of tracker-style commands is a big no-no for me because of the intuitiveness and fastness of it. I rather just hit M for marker than click-select anything.

Yes there is. Some people might want to do offset-timestretch for a marker range (then 9xx would offset inside marker range) or want to offset some of the drum hit away from a loop for example. There would have to be also settings, maybe automatable , that would control what happens when playback reaches next marker. (for example Mxy, where x=SliceEndAction and y=number of marker, decoupled with note plays sample from marker y)

Offset command has more usages than plain beat slicing, lets keep that in mind. Also vV has a point about binding keys and markers, although then ability to play different pitches is lost.

You’re misunderstanding entirely… I’m proposing that you place your markers once, then use keyboard effect commands to place them in the pattern. I tell the sample editor that 0901 should be my kick and 0902 should be my snare … etc. Placing drum hits on the pattern with Point-and-click would suck ass.

Think “just like 09xx, except with the ability to customize where the offset is”

That sounds like a logistical nightmare from a developer’s point of view. Does that mean if I have user defined offsets turned on, that 09xx only works inside the last triggered slice? Seriously? You have to be kidding me. :huh:

Yes, lets restrict it to 16 slices. Wonderful reasoning. How about we keep using note-off instead, mmkay?

I’m well aware.

Read: Optional.

Now we are speaking of totally different things, so lets quit this discussion here.

Think “just like 09xx, except with the ability to customize where the offset is”

hm this is correct, it would be impossible because many slices could be playing at same time on same channel. Of course if it would be restricted to one slice per channel, using only effects column for slice triggering, I don’t see why this would be so hard to do. It would be like offsetting the offset beginning, same thing but in predefined range. You have to be kidding me in that you really don’t get it.

Note offs have completely different function than determing what will sample playback do when it reaches slice end. One option could be “note off”. Restricting to 16 slices would also allow triggering slices from volume/panning columns, which would allow layering them inside one channel. I think it is a rare situation where more would be neccessary or at least practical.

Try harder.

What are the options? To bind or not? Not exclusive to command-triggering? Then why not. Would be the same than to slice it up into samples.

That was farily obvious to me in the first place… that’s why I felt the need to clarify my position.

My view of user defined sample offsets is quite simply adding functionality to 09xx that allows you do adjust where the offset starts from, instead of being forced to use the offsets that Renoise assigns, which is currently based on 256 uniform slices. I don’t think it needs to get any more complex than that to be amazingly useful.

there is something like markers in the .wav format already. it would be cool if Renoise could import those.

so… I really think it’s something different from 9xx, and I’d rather see a new effect than being restricted to one method per sample.

Huh? It’s just a matter of subtraction and division, what does “logistics” have to do with it?

If you supply the slice AND the 9xx, applying it to the slice would rock IMHO – using M00 could mean “keep using the last marker”, so using only 9xx would apply to the whole sample, and MXX + 9xx would apply to the slice. This way you could get great resolution for freaky stuff without having to chop something up into separate samples. You’d get best of all imaginable worlds. And it perfectly fits into the “paradigm” of tracking, see ghost notes.

Ok… I concede that 09xx would work well inside of slices… WE NEED MOAR PATTERN EFFECTS!!!

Why can’t we just introduce another 2 characters to the pattern effect column? :P

00xxyy = Oldschool Renoise pattern effects

xxxyyy = New, higher resolution pattern effects

:panic:

That would rock! Maybe even a little dot, like xxx.yyy? or just a pixel of space, a different color or something…

The leading zeroes could be faded out (when zero).

Seriously… playing (9xx) with individual hits of a drumloop, or individual words/sentences of a speech sample, without having to worry where one slice begins or ends (once you set the markers in the sample editor)… aww yeah! I’m just frustrated I didn’t come up with that… I guess I’m a big fand of non-destructive “editing”.

.wav markers! with labels even, which could get flaunted shamelessly wherever appropriate.

boy oh boy.

Excellent idea!!! I support that idea as well. Great one BYTE!

Now I understand xxx would represent the effect name, therefore giving the possibility of 256 different effects (I would’ve said 4096, but then remembered that the first letter goes to the DSP commands). But still, 256 possible effects should be sufficient.

But, with the yyy option, sample offsets would be accurate to 4096 markers. Which would result in not needing a precise marker command.

I’m guessing other commands could look like:
0B0001 (rev, for)
0E0062 (retrig)
02006C (pitch dwn)
1f0001 (dsp fx1 on)
and so on?

Please don’t add icons. I like the idea of having numbers and letters scrolling instead of icons. I thought when FLStudio added the ability to label the mixer tracks with little icons that it’s looked silly and unnecessary (go see for yourself). If I’d want to see icons move vertically, I can just scroll up and down in one of my folders.

I still want user defined offsets, as with my earlier mentioned example.

I’m all about Byte’s UDO idea. Hell, the standard 09xx effect would basically be the same as 256 evenly spaced UDOs. This would be great too, because you could turn the functionality on and off for individual instruments.

How could this possibly be a bad idea? In practice, it doesn’t change anything at all for those who still want to use the old 09xx command.