Lauchmann, newbie from germany. Tuesday, 25th December 2018, 17:41|
Err...question. So there is now the option "lf_in_mboard_mode" in the config that should take linefeed option (F12) into consideration when simply entering notes. However it doesnt do that or anything else.
subz3ro, coder from Slovakia. Friday, 21st December 2018, 16:44
Did I miss something misunderstood it's purpose or is it a bug? (Win32 2.4.24)
@Scott: If we are talking about Pattern Editor, then no, you are not overlooking anything, and it is exactly reason why the Note Recorder mode has been introduced, so it extends that simple MidiBoard mode input with possibility of multi-track note input during song playback (credit goes to DiodeMA for the idea and beta-testing of this feature :) Of course, you can still "jam" using note sounds with instrument preview capability, which is available on many places in the tracker (pretty much everywhere where's something sound-related adjustable).
Scott, newbie from Norway. Monday, 17th December 2018, 23:31
Yep, great news about a new version!
Chakotay Maquis, newbie from bong country. Tuesday, 11th December 2018, 23:39
Perhaps I'm overlooking something, but I am not able to keyboard-jam over a song playing. Only way to have audible notes when jamming, is by recording.
This is great news...I'm looking forward to it
subz3ro, coder from Slovakia. Monday, 10th December 2018, 12:47
@Chakotay_Maquis: There will be new version with BPM handling natively featured in tracker soon. Wait for the Christmas :)
Chakotay_Maquis, newbie from bong country. Wednesday, 5th December 2018, 3:05
Lauchmann, newbie from germany. Tuesday, 29th May 2018, 15:51
Im still having a problem getting an eact 140BPM out of the AdlibTracker2 SDL version.
There has been some discussion about this over on the renoise forums and it seems like the SDL version of AdlibTracker2 possibly renders .wavs slower than AdlibTracker 2 running in DosBox.
I havent tried rendering from DosBox myself but when rendering from the SDL version I got the following results :
06/56Hz renders out to .wav at 137.5 BPM
06/60Hz at around 147BPM
06/50Hz at exactly 122.5BPM
Can you recommend setting which will render samples at an exact whole number BPM, no decimal point ( doesnt have to be 140BPM )?
@subz3ro: That will be good enough. Thank you so much.
subz3ro, coder from Slovakia. Tuesday, 29th May 2018, 15:02
@Lauchmann: Ok. I will try to do this for next version then, but of course only configurable with delegated config file option, otherwise it might be interfering with preferences of other users.
Rado, another visitor from Slovakia. Monday, 28th May 2018, 23:47
@Rado: If you find a generic concept how to interpret .raw and .dro data in a form of patterns (which means particular notes, instruments and effect commands of the tracker), I can promise you it will be for sure implemented in AT2 ;-))))
Is there any chance of ADT2 loading OPL capture formats (.raw and .dro) in the future?
Lauchmann, newbie from germany. Monday, 28th May 2018, 21:21
@subz3ro: Simple, using the MBOARD to input notes is the quickest and also gives you sound output with all other channels playing aswell which is very useful so it naturally becomes the preferred way.
subz3ro, coder from Slovakia. Monday, 28th May 2018, 13:31
I often times need to try out notes at a specific line since I am still pretty bad at composing. Or even more embarrassing: miss the note I intended to play. Every attempt of correcting one of my mistakes becomes quite painful because it forces me to the next line.
Manually advancing to the next line(s) on the other hand isnt too cumbersome due to the keyboard only nature of it but I guess that goes for most trackers. Heck better yet having an option for how many lines it should advance on input. But I can see why you and others might think thats unnecessary because it slows you down when you know what you are doing.
But I really like the option to toggle linefeed for notes off just to make it easier learning making music (yes i know this is a weird place for that but it helps keeping me interrested), learn how to use FM and learn trackers in general so that I might turn linefeed back on when I get good enough at it.
@Lauchmann: It does, once you turn off the MBOARD mode. And for MBOARD mode, when there is actual sound output of the note performed, having it without "linefeed" on entering notes doesn't make much sense to me. Maybe if you explain me in more details why you want it, so I find a sense in it....... :)
Lauchmann, newbie from germany. Sunday, 27th May 2018, 15:42
Can the linefeed toggle please work on notes aswell? I am scrub at this already and having the screen rock up and down makes me sic.
subz3ro, coder from Slovakia. Thursday, 12th April 2018, 17:56
@Gaston: Does the tracker autodetect OPL3 interface on port 388? If not, force this address with command line option "/cfg:adlib_port=388". If yes, and autodetection writes "ok" (you can check this in DOS prompt screen, before the tracker fades to main screen), you may need to have you soundcard driver for DOS configured properly. Anyways, I'm not quite sure if it's even possible, as it looks like PCI card, not ISA. Perhaps there is some software emulation, which definitely sucks FM-sound-wise. You should better go along with AT2 SDL version then.
Gaston, musician from Argentina. Tuesday, 27th March 2018, 10:24
subz3ro, coder from Slovakia. Monday, 29th January 2018, 16:19
I have a toshiba tecra 8100 notebook, with win 9se, and a yamaha ds xg sound card (includes an opl chip) it's there any way to make at2 work on that machine? i get no sound from the program but i can use it to play games with soundblaster sound just ok, greetings from argentina!
@Chris Valentine: As there is quite heavy use of inline assembler, it's hard to tell what may have caused this glitch on your setup (Ubuntu x64 + DosBox). Comparison to version 2.3.52 is also not relevant, as there have been quite many changes done (code wise) since this version, UI for Instrument Control has changed too, and also recent version is compiled under whole different runtime platform. DOS version is not intended to be used under x64 operating system whatsoever, so I would recommend you to go along with SDL version and Wine frontend for Win32, if possible.
Chris Valentine, newbie from Germany. Monday, 29th January 2018, 2:01
There will be fully native x64 SDL version once.... I'm working on code rewrite to pure Pascal, it's just that the time is against this goal. Patience :-)
subz3ro, coder from Slovakia. Saturday, 20th January 2018, 2:30
Is it possible that there is some kind of bug in the DOS version G3 2.3.56 of AT2?
Check out this screenshot: https://imgur.com/a/h1PU0
I switched to the instrument control by pressing Ctrl+i. I can edit an instrument. I can also enter a name for the instrument after pressing Enter, but the name isn't saved. It also seems the whole right panel isn't drawn properly. At this point i cannot close the window of the instrument control anymore by pressing ESC or for example quit the program by using F10, i am stuck in this window. I checked the older version G3 (MidiSynth) 2.3.52, this version works without any flaws as it should: https://imgur.com/a/Q9GUW
I am using AT2 in DOSBOX 0.74 (the most recent version) under Ubuntu Linux 64 Bit. Has anyone else this strange behaviour?
Beside of that: Thanks for this great progam. Playing around with the old Soundblaster sound brings back lots of good memories.
@geomodular: I can give you answer just to your first question - would be definitely good option, but unfortunately it is not possible (and not planned too) :-)
geomodular, musician from Slovakia. Wednesday, 10th January 2018, 11:36
Hello everyone - Happy new year!
Mark Lyken, newbie from Scotland. Thursday, 4th January 2018, 15:38
I am really happy for this software, love how the OPL sounds and despite I have computer built for this software I am using SDL version instead because of computer's noise.
I have some questions to ask:
1. It is possible to change some shortcuts? I assume there is no way but I am asking anyways.
2. Maybe dumb question but I am not synthesis expert. Is there any, physical, synthesizer I could get that works similarly so I can play with it and set adlib tracker according to it?
PS: I would love to join the FB group unfortunately I am not on FB anymore. Nevermind :)
Mark Lyken, newbie from Scotland. Tuesday, 2nd January 2018, 13:50
Posting this in case it is usefull for any other Libretto 100CT users. My Libretto sound woes were solved by downloading the Windows 98 OPL3 driver from the below page. Thanks so much to the folks at the Adlib FB page. Now to learn how to use the program! http://device.yamaha.com/en/lsi/download/
I guess I could intsal Windows 95 or just MS DOS if those would provide better environments for running Adlib? I just need to work out how to wipe and instal an OS on the Libretto as it doesn't have a floppy drive or a CD drive! It does have a removable "D" drive though with a Flash Card in an adapter in the PCMCIA slot. I used this to put Adlib2 on the machine in the first place. I will read up on how to wipe and instal in the meantime.
Mark Lyken, musician from Scotland. Monday, 1st January 2018, 22:31
Happy New Year!
ATII user, another visitor from EU country. Tuesday, 26th December 2017, 5:36
I have a Toshiba Libretto 100CT that I picked up to run Adlib2.
It was working great and was enjoying listening to the modules but in a moment of utter madness I installed Windows 98 SE from a setup file on the machine and since then I can't seem to get any sound out of Adlib2.
Adlib seems to be running fine apart from that and I can see the VU meters dancing but no sound outputs.
The instal also made the volume control vanish from the toolbar which I have since fixed by replacing a SNDVOL32.exe file but no luck with Adlib2.
All other sound plays back fine when testing with the Direct Sound Tests via the DXdiagnostic tool + Impulse Tracker recognises "Sound Blaster Pro" & plays back sound OK.
I also reinstalled the Driver from Toshiba Website (Yamaha OPL3-SAx WDM) but to no avail.
It briefly flashes up "OPL3 interface recognised" when loading the program.
There was defintelly a cheery OPL icon somewhere in the Control Panel which has since vanished too.
I'm a newcomer to PC's having always had a MAC, an have even less experience with MS DOS.
I'm hoping I've somehow managed to simply mute the sound in Adlib but that may be too much to hope for!
Any help or pointers in the right direction would be great!
We are being patient for Let's Encrypt HTTPS, also.
subz3ro, coder from Slovakia. Tuesday, 19th December 2017, 11:52
@marton: It's not currently possible to build x64 binary out of sourcecode, as it contains quite much of inline x86 assembler code. However, it's being rewritten in pure Pascal for SDL version line, so it will finally fix the stack alignment problem with new Linux distros, and be portable over every platform allowing FPC compiler and SDL library :-) Just be patient, I don't have as much time as I would like to do it quickly.
marton, newbie from czechia. Tuesday, 12th December 2017, 18:04
If you have FB account, and you are not yet subscribed to AT2 User Group, I'd highly recommend to do so for latest news about AT2 (link to it is in section Contact & Links).
subz3ro, coder from Slovakia. Sunday, 17th September 2017, 12:41
Is there any guideline for compiling under Linux? I'm not the best at this and never have done any pascal compiling... I'm on 64 bit, that's why I'm asking.
thanks in advance
@Chakatoy: No offense man, but I think you should maybe slightly improve your knowledge about reducing fractions:
chakotay, another visitor from US. Saturday, 16th September 2017, 23:16
(140 BPM x 4 / 60) x 6
you reduce to
140 BPM x 4 / 10
and result is precisely 56 :-)
Anyway, you should know that this is (as I said earlier) pure mathematics. AT2 replay routine works with tempo in Hz, so (with speed factor 6) it does 56 times per second a 6 frame cycle before advancing to next row. This is repeated 4 times per one beat then...... as you can see, there is no division :-))) What we're playing here is just numbers and units representation.
O.K I will try it and get back to you.
subz3ro, coder from Slovakia. Saturday, 16th September 2017, 20:21
My idea is that there would be an accumulative rounding error based on the fact that
(140 BPM x 4 / 60) x 6 = 55.999999 ... not 56
Like you said, basically slight drift in timing over time.
Sorry I'm not trying to be annoying
@Chakotay: Look, apparently this our discussion leads to nowhere... I'm giving you here again calculation formula you requested at the very beginning.
Chakotay, musician from US. Friday, 15th September 2017, 22:04
(140 BPM x 4 / 60) x 6 = 56 Hz
In my opinion, with 56 Hz at speed 6, it *should* match your desired scenario -> 140 Beats Per Minute with beat in every 4th row, from pure mathematical point of view. The fact is that I haven't tried it, as I'm not using audio mastering software which requires speed to be exclusively in BPM with AT2. As you do need this, please go ahead and try it out, there is no other way to find out if it works. I think it's no big deal to write perhaps just one looping pattern that will be playing for 2 or more minutes to check out behavior in your software. I would also kindly ask you to get back here and give feedback whether it works or not, if you decide to do this (even though if you say it's like that with other trackers using TEMPO and SPEED configuration, we can't expect it to be anyway else). Good luck and thanks.
I guess its close, but not exact, because adlib tracker deals with whole number Hz but 140BPM would require divisions of 1 Hz, like 2.33333333Hz, or 9.33333333Hz.
subz3ro, coder from Slovakia. Thursday, 14th September 2017, 11:47
70 BPM is equal to 1.1666666667 Hz
140 BPM is equal to 2.3333333333 Hz
280 BPM is equal to 4.6666666667 Hz
560 BPM is equal to 9.3333333333 Hz
Maybe its possible to get exact BPM for 60BPM, 120BPM, 240BPM? Whole number Hz, without dividing up 1 Hz?
60 BPM is equal to 1 Hz
120 BPM is equal to 2 Hz
240 BPM is equal to 4 Hz
480 BPM is equal to 8 Hz
960 BPM is equal to 16 Hz
Chakotay, another visitor from US. Thursday, 14th September 2017, 3:25
"Beats Per Minute...A rate of 60 bpm means that one beat will occur every second."
If this is so, I don't see any reason for 140 BPM not being treated correctly with tempo 56 Hz and speed factor 6 though ;)
subz3ro, coder from Slovakia. Tuesday, 12th September 2017, 16:03
Adlib Tracker is awesome but the subtle out-of-sync effect you mentioned will give me alignment problems in my sampler - sequencer. Its like that with famitracker, nanoloop, LSDJ, Pulsar, NTRQ as well.
Beats Per Minute...A rate of 60 bpm means that one beat will occur every second.
AdlibTracker2 as a VSTi would be so cool.
Sorry to trouble you.
@Chakotay_Maquis: I've put the complete calculation formulas there. As you can see, with SPEED setting of 6, it's exactly 140 BPM played at 56 Hz without any loss of information during calculation of values. Of course with some other SPEED settings (like with 2 in second example here), this may not be true, as TEMPO parameter in AT2 has no floating point precision. However, if these 140 BPM in other software is treated at 597.333338 Hz, as you say, then of course you will have some subtle out-of-sync effect with long playing tracks anyway (and in any case).
Chakotay_Maquis, musician from US. Tuesday, 12th September 2017, 0:59
As of using AT2, this is really up to you mate... no worries about criticism or need to apologize ;) AT2 was designed and developed mainly and particularly for DOS operating system, which has no good support for high precision timers... therefore there is no floating point precision in AT2 (except 18.2 Hz workaround for compatibility reasons with HSC format) ;) Actually, it would be possible to implement high precision timer for SDL version line, but this would need significant effort to manage it correct way, so compatibility between DOS and SDL version would stay intact. Currently I don't feel like I'm going this way, but maybe later, when I have again motivation and time for doing such major changes in AT2 :-)
Thanks for your time and your help. I really appreciate it.
subz3ro, coder from Slovakia. Sunday, 10th September 2017, 1:50
I'm really sorry I have one last question so I can decide whether I will use adlibtracker2 or not.
It seems like, using those formulas a perfect 140BPM pattern is not quite possible in AdlibTracker2.
A perfect 140BPM is 597.333338 Hz (http://www.convertalot.com/hertz_converter.html).
For the first formula I got 55.999999Hz, not quite 56Hz.
For the second formula I got 18.666666Hz, not quite 19Hz.
I am I right in thinking that adlibtracker2 can get very close to a perfect 140BPM, but not to exactly 140BPM?
If it cant do exactly 140BPM, what exact BPMs are possible (with no decimal places)?
Sorry I'm not criticizing adlibtracker, I love it. I just need to know how to get exact BPM values out of it if I'm going to put the time into getting good with it.
@Chakotay_Maquis: Ok, to avoid further confusion, here are 2 examples of calculation for TEMPO and SPEED values to reach 140 BPM with 4 rows per beat advance - one for using of slower and one for using of faster song effects...
Chakotay_Maquis, musician from US. Monday, 4th September 2017, 2:29
(for using slow effects):
(140 BPM x 4 / 60) x 6 = 56 Hz
i.e. SPEED value = 6 and TEMPO value = 56
(for using fast effects):
(140 BPM x 4 / 60) x 2 = 19 Hz
i.e. SPEED value = 2 and TEMPO value = 19
Calculation formula being used:
[(Tempo desired in BPM x Rows per beat) / 60] x Frames per row = Tempo in Hz
P.S. Please keep in mind that SPEED value is hexadecimal while TEMPO value is decimal in AT2 (I know it may be a little bit confusing, but there are reasons for it to be like that ;)
What SPEED / TEMPO setting should I use in AdlibTrackerII to get patterns playing at EXACTLY 140BPM?
BitPusher, musician from USA. Friday, 28th July 2017, 9:39
I need to get rendered samples of AdlibTrackerII patterns looping at exactly 140BPM so I can use them in Renoise and add more layers with other synths and sampled instruments.
I love the 4operator adlib FM sound.
Well thank you sir. I just hope it helps somebody.
subz3ro, coder from Slovakia. Thursday, 27th July 2017, 16:07
@BitPusher: I will put your ZIP to Special program packages section with credit to you. Thanks :o)
BitPusher, musician from USA. Wednesday, 26th July 2017, 22:39
Subz3ro, I don't exactly know how to do that :(
subz3ro, coder from Slovakia. Tuesday, 25th July 2017, 14:41
I have however put the pre-compiled binary for DOSbox-X, the latest release of AT2, and a very simple readme into a zip file and put them on my web server. I have also linked both the file and your website at
As for this little zip package, it is here:
It is simple and works as of MacOS Sierra 10.12.6
Simply unzip, and follow the directions in my readme. I have given explanations for both those who do and those who do not know anything about DOSbox.
@BitPusher: That's some really cool news, though. Would you be able to prepare some pre-configured (standalone) MaxOS X package with AT2 for beginner users, which I will put to download section? I think many Apple-only users would appreciate it.
BitPusher, musician from USA. Tuesday, 25th July 2017, 10:25
I have awesome news Mac users: This can work in DosBox after all.
subz3ro, coder from Slovakia. Thursday, 20th July 2017, 15:51
Not the original DosBox, but an SVN build I downloaded found in the DosBox WIKI called DOSBOX-X. I am running MacOS Sierra 10.12.5 and right out of the gate, I was able to load up the most recent build of Adlib Tracker II and it works just fine. I hope this little discovery helps some other Mac users out there. I'm excited because I didn't want to have to buy a copy of Windows just to use that OS' version of DosBox.
Now comes the fun part, learning how to work in AT2 :)
@BitPusher: Original? :-) Is there already somebody else in addition, who I don't know of? :-)
BitPusher, musician from USA. Wednesday, 19th July 2017, 17:52
As for the screen... this is fatal crash of Free Pascal runtime routine, not really possible to tell what's going on there, as this is probably not even coming to particular AT2 code yet. Do you have all necessary memory management (e.g. HIMEM, EMM386 under MS-DOS) installed and correctly configured? If so, does this (Page Fault with CR2 register dump) happen to both MS-DOS and FreeDOS? If so, we are probably running out of possibilities for this particular DOS version on your current setup. Last thing you can try (if you really insist on using DOS) is to go along with the older version (it's placed in special packages - version 2.3.52), this one has been compiled with different Pascal compiler and is using different DOS extender, so there is possibility it might work. Of course, you will miss few new features and latest optimizations, but at least it's something to start with. But as you've mentioned sound is not working on your setup under DOS, I think the best option for you is using SDL version for Windows. The OPL3 emulation used is really decent one, it can give you time to look around for different setup to run DOS version, or perhaps stick with it :-)
A response from the original coder himself, thank you subz3ro.
subz3ro, coder from Slovakia. Monday, 17th July 2017, 16:47
I got the same message running the exe directly as well as with the /debug flag, but that said, I uploaded a screen capture here:
What do you think?
@BitPusher: Hello and welcome :) First of all, run AT2 with command line option /debug so we can see where it actually crashes (as you say) during startup. You might eventually have to pause the screen during startup process to see the information flow (in case the program ends with crash screen).
BitPusher, musician from USA. Sunday, 16th July 2017, 9:12
subz3ro, coder from Slovakia. Monday, 5th June 2017, 15:39
I'm Queue, otherwise known as BitPusher from BitPusher2600.net
I have made chiptunes with the Atari 2600, and the Nintendo Gameboy, as well as assorted bass music for car audio purposes.
Right now, I'm obsessed with reliving some old memories with good old DOS but the truth is, I've been pretty much all Apple since that's what I had as a child. Having been born in the 80's though, I've been around :)
Anyway, I have two possible environments to work with and no matter what, I can't get AT2 to run, can anyone help?
#1: Mac desktop or MacBook, I have Dosbox well configured. I have been able to run pretty much anything I've thrown at it just fine, but AT2 (the latest release) crashes at boot. It also seems that the specialized version of Dosbox offered in the downloads section is only for Windows.
#2: I happen to have an old 2.20ghz Pentium 4 HP tower laying around, but no copy of Windows. I have successfully (and natively) been able to install and run both FreeDOS as well as actual MS-DOS 6.22 which is surprising since this machine has USB peripherals and SATA drives. That aside, the integrated Intel sound chip won't work in either case no way no how. Also, AT2 crashes on boot there as well.
While I want to begin learning AT2, I am not wanting to blow $100 on a copy of an operating system (Windows 10) I would otherwise have zero use for. So, any other suggestions for me guys? Thank you so much for your time.
iron hedgely, another visitor from senkaku. Saturday, 3rd June 2017, 19:30
Yeah, it is a bit confusing in DiodeMA's formula, I thought you will probably ask this question :) FRAMES PER ROW = SPEED value in the tracker; it's actually a diminishing factor 1 to 255 (FF) for TEMPO (which corresponds to actual name in formula, i.e. how many times per second [Hz] you are advancing song).
It's useful for pattern effects like tone portamento, note retrigger or such... so you know how many time frames out of tempo you have available for the effect.
ROWS PER BEAT in formula means how many pattern rows are necessary for reaching the one with actual beat command, like in, if you consider having beat in every row, you can discard this value from calculation formula (Btw, you can start with turning on line marking with Alt+M in the tracker and then change the marking setup with Alt+L, and this will for sure give you idea what's going on here :)
Framerate in SDL version has nothing to do with sound, it's actually refresh rate of the screen.
Hope that helps.
Thanks. It sounds like everything I aim to do with adlib tracker II will be possible.
subz3ro, coder from Slovakia. Thursday, 1st June 2017, 11:15
Sorry to bug you with this but I have one more question...
diode milliamp facebook post gives these formulas for calculating true BPM:
How to calculate tempo in a tracker:
[(Tempo desired in bpm x Rows per beat)/60] x frames per row = Tempo in Hz
If you start with Tempo in hz:
[(Tempo in Hz x 60) / rows per beat ] / frames per row = Tempo in BPM
By "frames" does he mean ticks, or frames as in "framerate". If framerate, then is the framerate in the emulation of adlib tracker II 60Hz? If it is 60 frames per row, the equation doesnt work for me.
So if the BPM I want is 140 (597.333338Hz)
[(597.333338Hz) x 60 = 35840.00028
/ 4 rows per beat = 8960.00007
/ 60 frames per row = 149.3333345?
Iron hedgeley, musician from senkaku. Wednesday, 31st May 2017, 1:49
1) yes (it's also written next to download link, btw)
2) I'm not sure if I understand your question, but you are giving BPM nowhere directly (if you are asking this), it's as with "others", in particular, 2 values - song tempo and speed; it's quite trivial to calculate BPM from them, though... description is here: https://www.facebook.com/diodemilliamp/posts/10102922797332740
3) "as great" is very relative, but OPL3 emulation in latest SDL version is (dare I say) the best available :-) and in my opinion, very very (...) close to hardware OPL3; you will have to check it yourself anyway (it will cost you nothing more than a little bit of time for download and try)
Can Adlib tracker II render patterns / tracks / songs to .wav when using the emulated OPL3 version?
subz3ro, coder from Slovakia. Friday, 5th May 2017, 12:32
Is the speed true BPM (so that I can use those rendered .wavs in a multi-software project), or is the Speed of the track based on framerate like aome of the others? (famitracker etc).
Is the emulated OPL3 as great sounding as the hardware one?
@Dmitry: Hi. This GitHub mirror was a relict from the times we had project sources running on Google Code and it was about going down (I just deleted it so there is no more confusion). For time and effort reasons, I've decided not to continue delegated site for source code, so the only place where to download the recent source code is in the Downloads section here on home page.
Dmitry, coder from Russia. Thursday, 4th May 2017, 15:11
subz3ro, coder from Slovakia. Wednesday, 12th April 2017, 16:53
It would be nice to add a link to your github mirror:
I've noted you haven't updated it since 2015... :( Could you give it a try?
@geomodular: Vitaj :) ... and don't forget to join our user group on Facebook (link is here on page in Contact & Links section)
|< << Page 2 of 20 >> >|