QL Tinkering
Re: QL Tinkering
Hi bwinlel67 and Andrew, Hope this help from QBITS Intro with the setup of QPC2 and Config file created on choices made with QBITSBoot.
Amdrew the Screen layout does take a bit of getting used to but I hope the pdf notes help explain. This is me rather than pulling up several screen Modes as I wanted to link as much as possible to create a logical flow. FONT Input and resize : SPRITE Gen then to TILE and SCREEN layouts.
The WIP sets being Actions and a final Trial Play of Created Retro Game.
Que: ALT commands do not work on my Windows PC: Is that a fault with the functions of your Keyboard mapping or the Emulaor with Euro Keyboard. Does ALT work with other Progs OK.
Thanks again for all the effort you’re making.
QBITS
Attached Info and _bmp files
Amdrew the Screen layout does take a bit of getting used to but I hope the pdf notes help explain. This is me rather than pulling up several screen Modes as I wanted to link as much as possible to create a logical flow. FONT Input and resize : SPRITE Gen then to TILE and SCREEN layouts.
The WIP sets being Actions and a final Trial Play of Created Retro Game.
Que: ALT commands do not work on my Windows PC: Is that a fault with the functions of your Keyboard mapping or the Emulaor with Euro Keyboard. Does ALT work with other Progs OK.
Thanks again for all the effort you’re making.
QBITS
Attached Info and _bmp files
- Attachments
-
- QBPIXArt_SetUp.zip
- (389.93 KiB) Downloaded 363 times
-
- QBITSPIXArt_QStar.jpg (43.42 KiB) Viewed 5170 times
Re: QL Tinkering
It's not a fault, it's a feature of Intel HD Video Driver for Windows. On newer drivers (for newer processors) the hotkey is configurable., for older it is not (you can only turn it on/off).qbits wrote: Sun Aug 11, 2024 4:46 pm Que: ALT commands do not work on my Windows PC: Is that a fault with the functions of your Keyboard mapping or the Emulaor with Euro Keyboard. Does ALT work with other Progs OK.
It is a very useful feature, especially if you use a pivot monitor, like I do.
Re: QL Tinkering
Hi Andrew,
ALT swapped for CTRL this should get over the problem with those of you using tablets etc. QBITS QLSoundSE and PIXArt files attached.
The Left/Right CTRL Cursors for TRACKER row & SCORE entry in QLSoundSE match up with CTRL UP/Down cursors used with Row swap and Symbol Note/ Rest etc.
For PIXArt in SPRITE Mode CTRL cursors control the Edit area of the current Frames where you can use @ to Fill or E to erase a coloured area. Add a new frame and Copy a whole frame or selected edit area to it and build a composite Frame from many parts.
Steve have a good vacation somewhere not to hot!
QBITS
ALT swapped for CTRL this should get over the problem with those of you using tablets etc. QBITS QLSoundSE and PIXArt files attached.
The Left/Right CTRL Cursors for TRACKER row & SCORE entry in QLSoundSE match up with CTRL UP/Down cursors used with Row swap and Symbol Note/ Rest etc.
For PIXArt in SPRITE Mode CTRL cursors control the Edit area of the current Frames where you can use @ to Fill or E to erase a coloured area. Add a new frame and Copy a whole frame or selected edit area to it and build a composite Frame from many parts.
Steve have a good vacation somewhere not to hot!
QBITS
- Attachments
-
- QBITS ATL-CTRL WIPvA32.zip
- (2.77 MiB) Downloaded 439 times
Last edited by qbits on Thu Aug 15, 2024 8:56 am, edited 1 time in total.
-
- Aurora
- Posts: 890
- Joined: Mon Nov 24, 2014 2:03 pm
Re: QL Tinkering
Hi Qbits,
Concerning beep timings : I am working on a 'rythm box', to play any drumrolls, using any tempo and/or time signatures.
The tap-lengths are any note-lengths or rests, and can beep as pitches, thuds or snares. This box will test timings critically !
When ready, I will compare the QBits method of BEEPing with my method, to see if the latter is essential or not.
The taps_per_bar must add up to the time-signature exactly, but maybe a liittle random variation would add 'human-ness' ?
Almost ready, but in need of a once-over before posting. I may have time to complete during my holiday... Regards, Steve.
Concerning beep timings : I am working on a 'rythm box', to play any drumrolls, using any tempo and/or time signatures.
The tap-lengths are any note-lengths or rests, and can beep as pitches, thuds or snares. This box will test timings critically !
When ready, I will compare the QBits method of BEEPing with my method, to see if the latter is essential or not.
The taps_per_bar must add up to the time-signature exactly, but maybe a liittle random variation would add 'human-ness' ?
Almost ready, but in need of a once-over before posting. I may have time to complete during my holiday... Regards, Steve.
Re: QL Tinkering
Hi All,
A review after the changes to QLSoundSE and I decided to add a Note sound as you pan across the keyboard in SCORE Mode.
This prompted exploring the use of a FOR loop for timing rather than using PAUSE. Implementing the change seemed to improve the timing and by chance identified a bug in my coding. The metronome setting appeared closer to real time. Taking the CPU cycle of 1x72 microseconds and after a little experimentation I set a FOR loop of 3600. My calculations might be wrong but CPU cycle time of 72micrsec/3600 is about 20msec so multiples set by the Dur and Del calculations. This arrangement seems to work and didn’t suffer from premature release when hitting a Key with PAUSE.
1431 IF ds%>7 AND Qk=0:BRead:BEEP 0,p,h,t,s,w,f,r:TDel dur:BEEP:TDel del
1444 DEFine PROCedure TDel(td):FOR z=1 TO td*3600:counter=z:END FOR z:END DEFine
Previously metronome timing was set as high as 200 now beats of 60 to 100 reflected those more typical.
I then recalled Simon Goodwin and his SuperBASIC addon's and a set of commands for Timming I think you can find then on Dilwyn’s Homepage Web site under Toolkits. T-ON, T_OFF, T_START, T_STOP, T_COUNT you need to have access and load the TIMING_cde file (310)bytes a small overhead.
So some coding..
100 addx=RESPR(310):LBYTES dev$_TIMING_cde,addx:CALL addx ......[Note: dev$ your storage device with TIMING_cde file]
1431 IF ds%>7 AND Qk=0:BRead:BEEP 0,p,h,t,s,w,f,r:TDel dur:BEEP:TDel del ...[QBITS_QLSOundSE part of PScore]
1444 DEFine PROCedure TDel(td) ...[td Time delay]
1445 T_ON:T_START
1446 REPeat lp
1447 IF T_COUNT >=td:EXIT lp
1448 END REPeat lp
1449 T_STOP:T_OFF
1450 END DEFine
Note: T_COUNT is in 20ms steps tied in with screen refresh, I think. But if you access a drive mdv flp etc this can suspend the action [by nature of the OS].
Testing My FOR loop idea on a BBQL was disastrous, the original use of PAUSE much better. The use of T_COUNT at least appeared to give a similar outcome to the 20ms of a PAUSE.
So its now over to you Steve to surprise us all!
QBITS
A review after the changes to QLSoundSE and I decided to add a Note sound as you pan across the keyboard in SCORE Mode.
This prompted exploring the use of a FOR loop for timing rather than using PAUSE. Implementing the change seemed to improve the timing and by chance identified a bug in my coding. The metronome setting appeared closer to real time. Taking the CPU cycle of 1x72 microseconds and after a little experimentation I set a FOR loop of 3600. My calculations might be wrong but CPU cycle time of 72micrsec/3600 is about 20msec so multiples set by the Dur and Del calculations. This arrangement seems to work and didn’t suffer from premature release when hitting a Key with PAUSE.
1431 IF ds%>7 AND Qk=0:BRead:BEEP 0,p,h,t,s,w,f,r:TDel dur:BEEP:TDel del
1444 DEFine PROCedure TDel(td):FOR z=1 TO td*3600:counter=z:END FOR z:END DEFine
Previously metronome timing was set as high as 200 now beats of 60 to 100 reflected those more typical.
I then recalled Simon Goodwin and his SuperBASIC addon's and a set of commands for Timming I think you can find then on Dilwyn’s Homepage Web site under Toolkits. T-ON, T_OFF, T_START, T_STOP, T_COUNT you need to have access and load the TIMING_cde file (310)bytes a small overhead.
So some coding..
100 addx=RESPR(310):LBYTES dev$_TIMING_cde,addx:CALL addx ......[Note: dev$ your storage device with TIMING_cde file]
1431 IF ds%>7 AND Qk=0:BRead:BEEP 0,p,h,t,s,w,f,r:TDel dur:BEEP:TDel del ...[QBITS_QLSOundSE part of PScore]
1444 DEFine PROCedure TDel(td) ...[td Time delay]
1445 T_ON:T_START
1446 REPeat lp
1447 IF T_COUNT >=td:EXIT lp
1448 END REPeat lp
1449 T_STOP:T_OFF
1450 END DEFine
Note: T_COUNT is in 20ms steps tied in with screen refresh, I think. But if you access a drive mdv flp etc this can suspend the action [by nature of the OS].
Testing My FOR loop idea on a BBQL was disastrous, the original use of PAUSE much better. The use of T_COUNT at least appeared to give a similar outcome to the 20ms of a PAUSE.
So its now over to you Steve to surprise us all!

QBITS
Last edited by qbits on Thu Aug 15, 2024 11:21 am, edited 1 time in total.
-
- Aurora
- Posts: 890
- Joined: Mon Nov 24, 2014 2:03 pm
Re: QL Tinkering
Hi Qbits,
The method I used with my Keyboard demo was to base timing on the QL DATE function. First start when a second ticks....
Then ajust the 'Wait' function: Count the number of FOR loops used until DATE ticks again. On my machine, one sec counts around 1E6 loops.
On other machines you will get different 'sec' numbers, depending on processor speed and multitasking overheads, all equivalent !
So theoretically, you can time accurately to say 1/64 sec, reducing that figure to compensate for slight gaps to distinguish notes...
I am going to load DATA for Beethoven's 'Pathetic' melody soon, in trilled duo mode, so all can hear the results. Regards, Steve.
The method I used with my Keyboard demo was to base timing on the QL DATE function. First start when a second ticks....
Then ajust the 'Wait' function: Count the number of FOR loops used until DATE ticks again. On my machine, one sec counts around 1E6 loops.
On other machines you will get different 'sec' numbers, depending on processor speed and multitasking overheads, all equivalent !
So theoretically, you can time accurately to say 1/64 sec, reducing that figure to compensate for slight gaps to distinguish notes...
I am going to load DATA for Beethoven's 'Pathetic' melody soon, in trilled duo mode, so all can hear the results. Regards, Steve.
Re: QL Tinkering
Hi Steve,
I tried something along these lines, but thought the result to variable to improved upon PAUSE across different platforms. Re-run them to day the first result is with QPC2 ruining on my Desktop, second with QL2K at times 100 and then at QLBB ie speed = 1
QBITS
I tried something along these lines, but thought the result to variable to improved upon PAUSE across different platforms. Re-run them to day the first result is with QPC2 ruining on my Desktop, second with QL2K at times 100 and then at QLBB ie speed = 1
QBITS
-
- Aurora
- Posts: 890
- Joined: Mon Nov 24, 2014 2:03 pm
Re: QL Tinkering
Hi Qbits,
Not surprising that your routine gets unreliable results : You need to first wait for the QL clock to tick :
Insert the line : 1888 d=DATE: REPeat r: IF d<>DATE: d=DATE: EXIT r
That should improve things.
I also use an ajust_timer routine to allow for multitasking and other overheads, called from time to time.
All the best, Steve.
Not surprising that your routine gets unreliable results : You need to first wait for the QL clock to tick :
Insert the line : 1888 d=DATE: REPeat r: IF d<>DATE: d=DATE: EXIT r
That should improve things.
I also use an ajust_timer routine to allow for multitasking and other overheads, called from time to time.
All the best, Steve.
Re: QL Tinkering
Hi Steve,
For QLSounds I now have three Timing options which all create 20ms delay at the lowest denominator ie an original speed BBQL .
The two options PAUSE and use of T_ON,T_START,T_COUNT,T_STOP,T_OFF both produce 20ms Delays across a wide range of platforms.
However, Steve your use of DATE to create a FOR loop TIMER method has the advantage of shorter Delay setting if use on higher speed platforms. This third method may prove more useful with QPC2 QSound Playbacks.
QBITS
For QLSounds I now have three Timing options which all create 20ms delay at the lowest denominator ie an original speed BBQL .
The two options PAUSE and use of T_ON,T_START,T_COUNT,T_STOP,T_OFF both produce 20ms Delays across a wide range of platforms.
However, Steve your use of DATE to create a FOR loop TIMER method has the advantage of shorter Delay setting if use on higher speed platforms. This third method may prove more useful with QPC2 QSound Playbacks.
QBITS