|
|||||||
![]() |
|
|
Thread Tools |
|
|
#1 |
|
HardwareHeaven Senior Member
Join Date: Jul 2004
Posts: 452
Rep Power: 0 ![]() |
Is there any metronome for Kx DSP?
Hi! Is there any effect available in the DSP that works like a metronome? This would be very cool...
|
|
|
|
|
|
#2 |
|
S-3D enthusiast
|
I don't think there is one. It might be possible to create one but it would be tricky. You would have to make some kind of precise timer with microcode. Creating this plugin is not totally impossible.
Please tell us in details what would be all the caracteristics of such a metronome. What are the controls, what does it display, what is the sound it outputs, etc. Is it adjusted in bpm, ms, something else and what range, what increments. How long does the beep last, what is it's frequency. Give all the details you can. I've never used a computer metronome so I don't really know how they work. I might give writing that plugin a try if I have enough info. I like projects that are challenging. |
|
|
|
|
|
#3 |
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,561
Rep Power: 62 ![]() ![]() ![]() ![]() ![]() ![]() |
I do not know of any such plugin. I do not think it would be all that difficult to make, but I am not sure what the advantage would be, using a DSP based metronome -vs- a software based one?
|
|
|
|
|
|
#4 |
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,561
Rep Power: 62 ![]() ![]() ![]() ![]() ![]() ![]() |
BTW: If you wanted a visual indicator on the metronome as well as the sound, then you would have to use a timer, and as such it would be a software metronome anyway. If you wanted just the sound, than you could use the speed of the chip to work out the timing, etc, but again I am not sure why this would be better than a software one. I am not saying it is a bad idea, I am just curious as to what your thinking is?
|
|
|
|
|
|
#5 |
|
Tail Razer
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0 ![]() ![]() |
I think the metrenome should have a BPM adjustment (in tenths increments if possible) up to at least 220 BPM.
making 2 tones (accented 1st beat by volume and pitch) generated by the DSP like ASynth does. And a seletable meter which dictates where the accent tone happens. Now when I dream - i dream big... so here goes. lol A tap tempo input would be nice too - tapped on pc keyboard or seltected midi input (omni or a channel) - hmm, using a midi track played to set a hardware metremnome. maybe using the KX control midi input. reading only notes and not CC's. Something I always have thought usefull - is when setting a tempo - to show a chart of all the note divisions equivelents in ms for instance - if a tempo is changed to 120 a chart would dynamically update upon tempo changing, based on a selected meter, as is as follows SELECT METER = 4/4 Whole Note = (60/120) 500 ms Half Note = (60/120)/2 = 250 ms Quater Note = (60/120)/4 = 125 ms Quater triplet note = etcc... This info is helpfull for setting delay times. But not as helpfull as a tap tempo setable delay.. hehe j/k Bu would be interesting to understand the techniques to accomplish any of the above. |
|
|
|
|
|
|
|
HardwareHeaven Senior Member
Join Date: Jul 2004
Posts: 452
Rep Power: 0 ![]() |
Cool!
![]() Well, the metronome sound could be produced via MIDI, I guess this would make things simpler: - select the note, channel, patch and volume for the beats (midi note duration time can be set to 480, I believe this will suit all needs). - global volume* (applied to the choosen channel) - tap tempo function* - start/stop function* - increase/decrease tempo knob (range 40-300)* - select meter (2/4; 3/4; 4/4, etc) *with the possibility to be controlled by kx automation. |
|
|
|
|
|
#7 |
|
Tail Razer
Join Date: Jun 2005
Location: Bernyurass, AZ - USA
Posts: 4,027
Rep Power: 0 ![]() ![]() |
I said a dsp generated tone - so its never recorded - as it could be directed to an output directly... where as a midi generated one would need to mess with the router to avoid recoding it.
But yes - either way is cool too. got some good ideas johnny. |
|
|
|
|
|
|
|
HardwareHeaven Senior Member
Join Date: Jul 2004
Posts: 452
Rep Power: 0 ![]() |
You are right, I didn't think about the routing issue. It might be better to use a DSP generated tone.
Maybe some code from the Wave Generator could be used then. Then you could adjust: -Note -Velocity It would be sooo cool to have a kx metronome!
|
|
|
|
|
|
#9 |
|
DriverHeaven Addict
Join Date: Dec 2002
Posts: 259
Rep Power: 0 ![]() |
I have created one using tones generated in microcode. Here you have the code. It has a fixed measure of 3/4+2/4, and controlable tempo.
Code:
; New microcode name "metronome"; copyright "Copyright (c) 2004."; created "09/14/2005"; engine "kX"; ; comment ""; guid "72db361a-0744-4411-8e18-ae19763b436a"; ; -- generated GUID ;Registers output out control BPM=0 control Tone=0.057595865 control Decay=0.01 control Level=.25 static sin=0 static cos=1 static time1=1 static time2=1 static compas=0 temp tmp ;code skip ccr,ccr,0x7fffffff,compas macs tmp,Tone,Tone,.25 skip ccr,ccr,0x7fffffff,0x7 macsn tmp,Tone,Tone,.25 skip ccr,ccr,0x7fffffff,0x5 macsn tmp,Tone,Tone,.25 skip ccr,ccr,0x7fffffff,0x3 macs tmp,Tone,0,0 skip ccr,ccr,0x7fffffff,0x1 macsn tmp,Tone,Tone,.25 macsn cos,cos,sin,tmp macs sin,sin,cos,tmp interp tmp,.0000138889,BPM,0.000118056 macsn time1,time1,tmp,1 skip ccr,ccr,0x180,0x6 macs sin,0,0,0 macs cos,1,0,0 macs time1,1,0,0 macs time2,1,0,0 acc3 compas,compas,0x2,0 limitn compas,0x8,0x0,compas interp tmp,.0001,Decay,.01 interp time2,time2,tmp,0 macs out,0,sin,time2 macints out,0,out,0x4 macs out,0,out,Level end |
|
|
|
|
|
|
|
HardwareHeaven Senior Member
Join Date: Jul 2004
Posts: 452
Rep Power: 0 ![]() |
Cool! Er, but how do I transform this in a DSP effect? I have no programming skills...
![]() I have no idea of what to do with this code. Where do I paste this? Do I have to compile it or convert it or something? Sorry. |
|
|
|
|
|
#11 |
|
DriverHeaven Addict
Join Date: Dec 2002
Posts: 259
Rep Power: 0 ![]() |
Right click in KX manager, and open KX Editor.
Delete all the lines, and paste the code. Press Save Dane Source button, and assure that the mesage 'File sucessfully parsed' apears. Now, save the code to a file with .da extension in any place of your disk. Now, double click in the archive for registering. |
|
|
|
|
|
|
|
HardwareHeaven Senior Member
Join Date: Jul 2004
Posts: 452
Rep Power: 0 ![]() |
"File successfully parsed" -> ok
But when I click in the *.da file I get a message saying "invalid plugin library" I'm using 3538i What should I do? Thanks. |
|
|
|
|
|
#13 |
|
DriverHeaven Addict
Join Date: Dec 2002
Posts: 259
Rep Power: 0 ![]() |
Okey, I remember that there is a bug with the CODE tags in this forum. I have uploaded the .da file to my site. Just extract and register it.
http://ciberia.ya.com/eyagos/ |
|
|
|
|
|
#14 | |
|
Long Time ***** Friend
|
Quote:
I dont know how to use this, though. |
|
|
|
|
|
|
|
|
HardwareHeaven Senior Member
Join Date: Jul 2004
Posts: 452
Rep Power: 0 ![]() |
Great!
I would suggest: - The BPM would indicate the value of Beats per Minute (it's much more intuitive than a percentage value). It can be an approximate value. With tap-tempo I get (approximate values): 10% -> 71 bpm 25% -> 115 bpm 50% -> 190 bpm 75% -> 265 bpm 100% is too fast to tap... ![]() - Adding the option of selecting the meter (2/4, 2/3, 4/4) - see below - Only the first tone is different. for 2/4 it would be a,b,a,b,a,b,a,b... for 3/4 it would be a,b,b, a, b, b, a, b, b... for 4/4 it would be a,b,b,b, a, b, b,b, a, b, b, b... - A start/stop switch. (assignable to any midi CC where 0 is off and 127 is on) - A built-in tap tempo function. algorithm for this: (60 (seconds) / (difference, in seconds, between the last monitored beat* and the one before it) = bpm) *the manual beat input could be monitored by kx automation, any assignable midi CC. |
|
|
|
|
|
#16 |
|
DriverHeaven Addict
Join Date: Dec 2002
Posts: 259
Rep Power: 0 ![]() |
The effect must be integrated into a dll in oerder to achieve some of those things:
a) True BPM indicator: Requires a dll. The values that you have measured are correct (good hear, xd). You can calculate the exact value with the formula BPM = 40+300*value% b) Option for selecting the meter: Requires a dll. c) Only first tone is different: Okey. d) A start/stop switch: Requires a dll. e) Tap tempo function: Requires a dll. f) "the manual beat input could be monitored by kx automation, any assignable midi CC" Not sure if this can be done. In any case, can you explain this better, with a practical example? |
|
|
|
|
|
|
|
HardwareHeaven Senior Member
Join Date: Jul 2004
Posts: 452
Rep Power: 0 ![]() |
c) Supposing "a" is the different tone and "b" the other tone, can you add the option of having x "b" tones to sound between each "a" tone? (For example, x can have values from 1 to 3)?
f) Suppose you assign midi CC64 (hold pedal, if I'm not mistaken) to this parameter with kx automation. Every time you pressed the pedal you would transmit the value 127, wich would count as a "tap" input. It could simply count as a tap the 127 value or any value between 1-127. Hope I have explained better this time...
|
|
|
|
|
|
#18 |
|
DriverHeaven Addict
Join Date: Dec 2002
Posts: 259
Rep Power: 0 ![]() |
Ok. Well, I think that it is possible. But I could not test it, because I have never used KX Automation in a real situation. Do you know any software that suports KX automation?
|
|
|
|
|
|
|
|
HardwareHeaven Senior Member
Join Date: Jul 2004
Posts: 452
Rep Power: 0 ![]() |
Hum, I usually use my MIDI keyboard synth connected to the midi port to send midi messages, but maybe this can help routing kx midi out to kx midi in.
http://www.midiox.com/ For sending midi messages thru kx automation... well, you could use any software sequencer, like cakewalk, for example, create a midi track, put CC64 mesages to channel 1 in it, select as port "midi out" then with midi ox route midi out to midi in But I can test this for you, it's much more simple with physical midi hardware than doing all this. I believe there's no need for you to worry with this, because Kx automation is automatically available with the plugins. All you have to do is make sure that "tap on" is activated with a midi value between 1-127, but I don't know if this can be set. I have no programming skills. edit: Just right click in your plugin and choose "assign" to see that it can already be controlled by kx automation. What I don't know is if you can change the way the sliders respond to midi messages (example: if midi value increases, slider decreases, etc). edit 2: Idiot question: Since a DSP performs calculations, can't you just add the formula 40+300*value% to the code so the result can be displayed, for example, next to the bpm slider, in a cell? Last edited by JGSF; Sep 17, 2005 at 05:43 PM. |
|
|
|
|
|
#20 | |
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,561
Rep Power: 62 ![]() ![]() ![]() ![]() ![]() ![]() |
Quote:
@eyagos What do you mean by "compasses"? |
|
|
|
|
|
|
#21 | ||
|
DriverHeaven Addict
Join Date: Dec 2002
Posts: 259
Rep Power: 0 ![]() |
Quote:
.Quote:
|
||
|
|
|
|
|
#22 | |
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,561
Rep Power: 62 ![]() ![]() ![]() ![]() ![]() ![]() |
Quote:
|
|
|
|
|
|
|
#23 |
|
DriverHeaven Addict
Join Date: Dec 2002
Posts: 259
Rep Power: 0 ![]() |
Russ, my English is very poor, and there are so many words seemed in English and Spanish, that sometimes I invent words in English.
|
|
|
|
|
|
#24 |
|
DriverHeaven Addict
Join Date: Dec 2002
Posts: 259
Rep Power: 0 ![]() |
Well, I have compiled it (for 3538i and 3538h) with all the things comented. Please, tell me if Automation works as expected.
http://ciberia.ya.com/eyagos/ |
|
|
|
|
|
|
|
HardwareHeaven Senior Member
Join Date: Jul 2004
Posts: 452
Rep Power: 0 ![]() |
Super!
Totally awesome! ![]() Automation works great! Many thanks for your time! This is all I wished for and it will be very useful for me and (hopefully) for lots of people. I just noticed something about the tap tempo function: Is not very precise, but I couldn't ask for more. Try to tap an mp3 or something, and you'll see that it has huge variations in tempo. Just for example, I was tapping an mp3 and the values kept changing between 150, 171 and 200. I do believe that it might need a more complex formula, maybe adding a -x% or +x% max. tempo variation parameter from the previous value for each transition could make it more smooth. (example: bpm 100, tapping with 2% max tempo variation from the previous value, if the tapping speed is 120, it would increase gradually from 100 with 2% increments until reaching 120.) Great work!
|
|
|
|
|
|
#26 | |
|
DriverHeaven Addict
Join Date: Dec 2002
Posts: 259
Rep Power: 0 ![]() |
Quote:
|
|
|
|
|
|
|
|
|
HardwareHeaven Senior Member
Join Date: Jul 2004
Posts: 452
Rep Power: 0 ![]() |
I'm using the tap tempo function in Ableton Live (version 4.14) to measure. I tap it with the mouse button.
The metronome is precise, I get the same tempo displayed in ableton (200 in metronome, 200,56 with manual tapping displayed in Ableton - perfect). What is not precise is the tap tempo function. Try to have two kx metronomes, one at 200 bpm playing, and tap in the other one. If I tap in Ableton or my Roland synth, ok. If I tap in the metronome, it's always at 240 (while the reference metronome is at 200). Last edited by JGSF; Sep 18, 2005 at 07:58 PM. |
|
|
|
|
|
#28 |
|
HardwareHeaven Lover
Join Date: Nov 2003
Posts: 100
Rep Power: 0 ![]() |
hi there!
I am trying to make this work in 3534f...but dane editor gives me an error in this line: limitn compas,0x8,0x0,compas says "limitn" is invalid EDIT: removing n (from limitn) gave me the working plugin
Last edited by ReWired; Mar 20, 2006 at 05:05 PM. |
|
|
|
|
|
#29 |
|
HardwareHeaven Extreme Member
Join Date: Jan 2005
Posts: 5,561
Rep Power: 62 ![]() ![]() ![]() ![]() ![]() ![]() |
I think that in older versions of kX, "limitn" was "limitl".
|
|
|
|
|
|
#30 |
|
HardwareHeaven Lover
Join Date: Nov 2003
Posts: 100
Rep Power: 0 ![]() |
probably...hm, it works well with both options, strange, isn't it?
![]() (limit or limitl) what does exactly this do? anyway, seems normal to me. with "limit" all clicks are the same. with "limitl" there are 3 different clicks. |
|
|
|
![]() |
| Thread Tools | |
|
|