First mcjMidiLoad Beta Available - Midi File loader script for Daz Studio

1356710

Comments

  • mCasualmCasual Posts: 4,607
    edited December 1969

    ruphuss said:
    sorry casual as I do not know where else I could ask you this

    matanim works fine but the animation in the surface tab is not save able in a studio 4.7 szene

    any help ?

    to address this problem

    in the thread here

    http://www.daz3d.com/forums/discussion/46023/

    or on my site here

    https://sites.google.com/site/mcasualsdazscripts4/mcjanimatsave

    i posted a special script to save/load the material animations using Daz 1,2,3 and 4

    in fact if someone animates materials using midi/music they'll need to use it too

    ---
    in the image below, by animating the vertical offset of a filmstrim image

    nyandemo.gif
    400 x 400 - 699K
  • mCasualmCasual Posts: 4,607
    edited March 2015

    while i'm at it i'll add fingering helpers

    side-side

    lift ( section 1 of the finger only

    curl ( all 3 segments of the finger)

    curl tip ( sections 2 and 3 of the finger )

    ...

    there it is, almost ready for the rollout

    - - -

    since i often spend time selecting fingers 1,2,3,4 and Bending all 12 knuckles

    i include a Tab , to do it faster!

    -- unfortunately DS4.7 shrinks my cute little hand icons

    notsocuteanymore.jpg
    671 x 468 - 87K
    sliders.jpg
    747 x 465 - 64K
    fingahz.jpg
    1901 x 764 - 248K
    side.jpg
    1920 x 1080 - 438K
    pianah2.jpg
    1512 x 756 - 447K
    Post edited by mCasual on
  • mCasualmCasual Posts: 4,607
    edited March 2015

    the hand pose script can be found here

    http://www.daz3d.com/forums/discussion/54267/

    and/or here

    https://sites.google.com/site/mcasualsdazscripts5/mcjhands

    if you have trouble downloading the installation zip package
    here's a link
    https://sites.google.com/site/mcasualsdazscripts5/mcjhands/mcjHands.zip?attredirects=0&d=1

    even available for DS 1.8 !

    dsds2.jpg
    474 x 450 - 93K
    Post edited by mCasual on
  • ImagoImago Posts: 5,148
    edited December 1969

    I can't wait to try the complete kit!
    I think it can be extremely useful for many different purposes!
    Keep the good work!

  • KeironKeiron Posts: 413
    edited December 1969

    Hi Casual

    I've just installed the Hand Script and it works great

    Thats a dificult problem sorted, very well done

    Thank you for all of your hard work much appreciated

    Kind wishes

    Keiron

  • Eustace ScrubbEustace Scrubb Posts: 2,698
    edited December 1969

    I paid good money for a plug-in to do this in DS2 & 3 (HandGrip), and it wasn't updated, either. Now you're giving it all to us for free?

    I salute you! Thank you!

  • ImagoImago Posts: 5,148
    edited December 1969

    I tried the script and it's very useful.
    But I think there are an error on some label: Twist wrist seems to bend it and Bend wrist seems to twist it... I'm worng?

  • mCasualmCasual Posts: 4,607
    edited December 1969

    I tried the script and it's very useful.
    But I think there are an error on some label: Twist wrist seems to bend it and Bend wrist seems to twist it... I'm worng?

    it's something i said i'd do yesterday but i'll do today

    this script was designed for piano hand poses
    so the rotations are aligned with the shoulders ( chest ) of the figure
    When playing the piano the hands point in front of the figure
    so the wrists bend perpendicular to that
    One advantage of that is that the fingers don't go sideways and off-keys
    ( as could happen with the usual wrist bend )

    so today i'll add a mode where the wrist bend is a wrist bend

    note that the shoulders movementsare also designed
    for cases where the shoulders are bent almost 90 degrees

    itshard.jpg
    960 x 540 - 306K
  • mCasualmCasual Posts: 4,607
    edited December 1969

    here you can see, in pianist mode, the arms twist around a perfectly vertical axis
    so the pianist hands move horizontally

    in non-pianist mode, the arms will twist around the shoulder segment

    respinnit.gif
    480 x 320 - 759K
  • mCasualmCasual Posts: 4,607
    edited March 2015

    and the new version

    coming up this afternoon

    with have an "other hand" button !

    you could stay all day in the script ! hours of fun

    tictoc.gif
    1228 x 548 - 220K
    Post edited by mCasual on
  • Eustace ScrubbEustace Scrubb Posts: 2,698
    edited December 1969

    I have to wait a few more hours, don't I? :(
    ;)

  • mCasualmCasual Posts: 4,607
    edited March 2015

    I have to wait a few more hours, don't I? :(
    ;)

    i'd say, less than 35 minutes from now.

    gotta test it in DS4.7 and/or ds4.8 and ds1.8 and 2.3

    Post edited by mCasual on
  • mCasualmCasual Posts: 4,607
    edited March 2015

    DS4.8 test conclusive

    but pushing the publishing deadline ... 40 minutes from now

    so i can add saving/reloading your two settings, the step angle and the piano checkbox

    1:37 - the script will also save/restore the settings in the "fingers" tabs
    i reviewed and corrected the rotation directions so they match the arrow in the little thumbnail images
    i still have to check DS1 and DS2 compatibility.

    1:54 - gotta fix the fingers rotation too for Left/Right rotation inversion issues

    toctic.gif
    640 x 360 - 174K
    Post edited by mCasual on
  • mCasualmCasual Posts: 4,607
    edited March 2015

    last issue to fix is the wrist bend icons

    ( DS 1.8 doesn't seem to allow text+icon on buttons )

    my DS2.3 was recently sort of uninstalled and i have to wait for the content scan to end !!!

    while we wait, enjoy this on-hold classic https://www.youtube.com/watch?v=xRqI5R6L7ow

    ....

    DS2.3 check, check

    lastissue.jpg
    1053 x 523 - 213K
    Post edited by mCasual on
  • mCasualmCasual Posts: 4,607
    edited December 1969

    oops we were not even on the right thread !!

    anyway, the new mcjHands is ready !!

    https://sites.google.com/site/mcasualsdazscripts5/mcjhands

    direct link to the download ( it's the little blue down-arrow you know )

    https://sites.google.com/site/mcasualsdazscripts5/mcjhands/mcjHands.zip?attredirects=0&d=1

  • KeironKeiron Posts: 413
    edited March 2015

    re new mcjHands

    Hi Casual

    This is superb

    Very easy to use

    Very well done

    Many Thank's

    Your a Star

    CEGC Chord Left and Right

    PS She can Boogie with this LOL

    Left hand Pinki c1 then Thumb c2, move Pinki e1 then Thumb e2, move Pinki g1 then Thumb g2, move Pinki a1 Thumb a2, move Pinki a1# then Thumb a2# move Pinki g1 then Thumb g2 return to begining

    or just c1 move e1 move g1 move a1 move a1# move g1 return to begining

    Keiron

    Keyboard_fingers_c_chord_1.jpg
    1071 x 602 - 294K
    Post edited by Keiron on
  • ImagoImago Posts: 5,148
    edited December 1969

    Amazing work as always!
    With this new script, posing hands is matter of second! I never reached this speed in my workflow posing hands!
    Thanks very much!

  • mCasualmCasual Posts: 4,607
    edited December 1969

    well i'm back from the usual digression mcjWindowWall, mcjWallDoor, mcjIsoSurface3 ....


    the next objective is to post the Midi-Loader tool

    this loads the midi music data into a "midi" node in the Daz Studio scene

    i just have to make sure i understand the midi tempo/timebase messages correctly

    objective 1 : mcjMidiLoader ( today?)

    the second objective is to post the script specifically tailored to the mcjWurzkeil keys animation

    objective 2 : mcjWurzkeilPlaysMidi

    third objective is to post the script which helps animate the wrist positions of a figure while playing keyboard

    objective 3 : mcjPianist

    fourth objective is to post the script which lets you animate everything else, for example, the drum playing demos,
    color organs, laser harps, bouncing balls etc etc etc etc

    objective 4 : mcjMidiAnim

    i also plan to make a more universal keyboard animator

    objective 5 : mcjKeyboardPlaysMidi

    -------

    figure 1 - new assistant Zoé at the Wurzkeil

    Zoé.jpg
    1280 x 720 - 610K
  • KeironKeiron Posts: 413
    edited March 2015

    Hi Casual

    Welcome back

    Found this

    MIDI Time Signature and BPM

    In this guide I'm going to explain how MIDI files keep time. There's quite a lot of information about MIDI time keeping on the internet but I found that usually the sources said the same thing as each other and didn't provide much context. Here I've tried to provide some context of how each of the following numbers would be used in practice.
    MIDI Time Signature:
    Type: Meta Message value: 255 (0xFF)
    Sub Type: Time Signature Message value: 88 (0x58)
    Message Format: FF 58 nn dd cc bb
    The time signature is important for several reasons. Firstly it's vital to properly notate a piece of music. For MIDI editing software like Finale it's important to be able to retrieve the standard sheet music time signature. The software would need to know the time signature numerator and denominator to lay the music how the author intended i.e. where to put the bar ends.
    [nn] Numerator The numerator represents the numerator of the time signature that you would find on traditional sheet music. The numerator counts the number of beats in a measure. For example a numerator of 4 means that each bar contains four beats. This is important to know because usually the first beat of each bar has extra emphasis.
    [dd] Denominator The denominator represents the denominator of the time signature that you would find on traditional sheet music. The denominator specifies the number of quarter notes in a beat. A time signature of 4,4 means: 4 beats in the bar and each beat is a quarter note (i.e. a crotchet). In MIDI the denominator value is stored in a special format. i.e. the real denominator = 2^[dd].
    [cc] MIDI ticks per metronome click The standard MIDI clock ticks every 24 times every quarter note (crotchet) so a [cc] value of 24 would mean that the metronome clicks once every quarter note. A [cc] value of 6 would mean that the metronome clicks once every 1/8th of a note (quaver). Be warned, this midi clock is different from the clock who's pulses determine the start time and duration of the notes (see PPQN below). This MIDI clock ticks 24 times a second and seems to be used only to specify the rate of the metronome - which I can only assume is a real metronome i.e. a device which makes a tick noise at a steady rate... tick, tick tick...
    [bb] 32nd notes per MIDI quarter note This value specifies the number of 1/32nds of a note happen every MIDI quarter note. It is usually 8 which means that a quarter note happens every quarter note - which is logical. By choosing different values it's possible to vary the rate of the music artificially. By putting a value of 16 it means that the music plays two quarter notes for each quarter note metered out by the midi clock. This means the music plays at double speed.

    MIDI Tempo:
    Type: Meta Message value: 255 (0xFF)
    Sub Type: Set Tempo Message value: 81 (0x51)
    Message Format: FF 51 tt tt tt
    This meta message signifies a change in the tempo of the music. This is given by a change in the number of beats per minute (BPM) of the piece.
    [tt tt tt] Micro seconds per quarter note The tempo is given in micro seconds per quarter beat. To convert this to BPM we needs to use the following equation:
    BPM = 60,000,000/[tt tt tt]
    Pulses Per Quarter Note (PPQN):


    In MIDI notes are measured in pulses rather than in time. The note start time and duration will be a discrete number of pulses. Pulses per quarter note can be found in the header part of the MIDI file and specifies how many midi pulses make up one quarter note. This is useful for determining note values - if the current PPQN is 96 and a note's duration is 48 we know that it's a quaver. It's also vital for determining the rate at which the MIDI file should be played. The tempo tells us how long each pulse should last. The BPM measures how many quarter notes happen in a minute. To work out the length of each pulse we can use the following formula: Pulse Length = 60/(BPM * PPQN)

    Post edited by Keiron on
  • mCasualmCasual Posts: 4,607
    edited March 2015

    keiron said:
    ... Pulse Length = 60/(BPM * PPQN)

    thanks, now i'm more confident the midi-loader will work on any midi file, even on ''Take 5''

    oops wait wait ... getting doubts ... i picked 96 as the PPQN .... but they say the "header" so maybe the PPQN is the number 384 in the MFILE statement

    yes indeed

    also the midi pulse is 460.8 Hz in this case

    ---------------

    . o O( i think i should never let a midi rendition of a Spice Girls song play in loop more than 10 times )

    instead let's be done with it and play the real thing https://www.youtube.com/watch?v=FA5jsa1lR9c

    the MV is 1996 btw

    unrelated.jpg
    1920 x 1080 - 948K
    Image1.jpg
    1920 x 1080 - 304K
    Post edited by mCasual on
  • KeironKeiron Posts: 413
    edited December 1969

    Hi Casual

    Keep up the great work

    OK so I like the Spice Girls to LOL

    Keiron

  • mCasualmCasual Posts: 4,607
    edited March 2015

    keiron said:
    Hi Casual

    Keep up the great work

    OK so I like the Spice Girls to LOL

    Keiron

    well actually 2become1 i like because i find it comedic, but i like Viva Forever, plus i see they've got animations in the MV! https://www.youtube.com/watch?v=3wkuqRFXNvI

    itstrue.jpg
    1920 x 1080 - 1M
    Post edited by mCasual on
  • mCasualmCasual Posts: 4,607
    edited December 1969

    unfortunately color properties animation keys are integer based and don't seem to have interpolation control
    so the script has to create 1 key per keyframe
    plus the fact that DS4 doesn't save materials animations
    so the color animation option will be there but necessitate more care
    ( there's also ERC-like solutions and UV tricks )

    UNFO.jpg
    1920 x 1080 - 1M
  • mCasualmCasual Posts: 4,607
    edited March 2015

    what i will call "transfer tables" This table define which animation is triggered by which midi note

    for my tests i used a text file which i edited in Excel

    but you'll have a viewer-editor right in Daz Studio

    in this case all the 61 keys of the wurzkeil keyboard get X-Rotated by
    0 degrees when the note is off
    and
    7 degrees when the note is On at full volume

    i'll add an option where a note is Off when the volume is 0 and On when the volume is non-zero

    ---
    Fig 2 shows the table i used to animate the Ambient Strength of the notes

    the property name "0/ Ambient Strength" is a typo!

    but anyway, it shows that you'll be able to animate any "strength" type of material-property or the UV tiling/offset

    Fig 3 shows the table i used to animate the diffuse color of the notes

    you can see color codes for black, white and red

    ---
    you know, it would be possible to actually activate a midi synth instead of animating things in the scene
    but i wont get in that !!! stop me
    ( soft synth, real synth, speech synth, vst plugin synth , kinect, theremin, etc etc etc )

    colo.jpg
    992 x 564 - 328K
    ambi.jpg
    992 x 576 - 335K
    lowah.jpg
    960 x 568 - 316K
    Post edited by mCasual on
  • KeironKeiron Posts: 413
    edited March 2015

    Hi Casual

    "you know, it would be possible to actually activate a midi synth instead of animating things in the scene
    but i wont get in that !!! stop me", no go for it
    How about using a colourful suit on Victoria or Micheal to control your MIDI Keyboard LOL

    Ah just thought "you could make a new shaped instrument like a number of multi legged spiders" each could play an octave range

    "Your making a program with endless fun"

    Just think of all the Keyboards up to 88 keys you could animate by rotating the keys or up and down
    Piano's, Keyboards, Organ's, Handheld Keyboards, Accordians, Sax, Trumpets, Drums, Strings it's endless

    Changing the colours, great fun you could animate the Daz Suit to Music LOL very cool

    Great job

    Keiron

    Post edited by Keiron on
  • mCasualmCasual Posts: 4,607
    edited December 1969

    mcjStorePose : one of the midi tools will let you save animation snippets as a script file ( similar to a pose preset )

    Last time, we saw you can animate

    -named properties ( ex: XRotate )
    -material colors ( ex: Diffuse Color" )
    -material strengths ( ex: "Ambient Strength" (

    there will also be

    - (name/label) morphs ( ex: Blink Right" )

    and there will be

    -scripts

    In the animated gif example below, the script to run upon a note being played
    is the Hi.dsa script, which happens to be an animation snippet recorded earlier
    using mcjStorePose

    parlayvoo.gif
    480 x 270 - 457K
  • KeironKeiron Posts: 413
    edited April 2015

    Hi Casual

    Great Idea linking MIDI to an Animation Sequence

    Since were gifted with two thumbs and eight fingers you would possibly have no more that 10 occurences at one time, unless you can also use your toes LOL

    I did wonder if I should have used 24 FPS or 48 FPS instead of 30 FPS, as I though that may be easier to sync the MIDI clocks to the VIDEO together

    You can usually Quantatise the played notes to force them to play exactly to the exact notes in a Bar, this looses some of the way someone plays but for animation it may not need to be so precise

    This may be worthy of a read

    re MIDI timing and Song Pointer Info

    http://recording.songstuff.com/article/MIDI_sync/

    Kind wishes

    Keiron

    Post edited by Keiron on
  • mCasualmCasual Posts: 4,607
    edited April 2015

    keiron said:
    ... timings ...
    Keiron

    in fact in my most recent test i was noting that if someone plays note very fast
    ( used https://code.google.com/p/virtualpiano/ )

    then, the way my script is set up, i can lose keyframes , because my test animations
    start 5 frames before the note sound arrives ( she hits the keyboard on the 5th frame
    Animation clips are clashing

    so that's one issue i'll address somehow

    about quantization, i'm not sure yet if i'll force notes to happen on exact movie frames

    daz studio allows keyframes to happen between movie frames

    note that one could render movies at 120 frames per second, and add motion blur
    the result would be a 24, 25 or 30 fps video where we could perceive what happens between frames

    --------

    maybe i'll make the note-hit happen on exact frames
    or have this as an option

    ----

    just now realised the v in the midi messages is velocity not volume
    i was counting on the fact that so far v was always 0 for the midi-off events
    but i see a midi file here with

    0 Meta SeqName "MidiPiano Record File"
    0 TimeSig 4/4 0 8
    0 KeySig 0 major
    0 Tempo 500000
    0 Meta Copyright "MidiPiano.net"
    0 Meta TrkEnd
    TrkEnd
    MTrk
    0 Meta TrkName "Record Track"
    0 PrCh ch=1 p=0
    0 PrCh ch=1 p=0
    1249 On ch=1 n=76 v=80
    1615 Off ch=1 n=76 v=64
    2022 On ch=1 n=72 v=80
    dingadinga.gif
    480 x 270 - 809K
    Post edited by mCasual on
  • mCasualmCasual Posts: 4,607
    edited April 2015

    there will be an 88 keys version of the Wurzkeil ... soonishingly

    onyermarks.jpg
    1920 x 783 - 799K
    wu.jpg
    1920 x 1080 - 1M
    Post edited by mCasual on
  • KeironKeiron Posts: 413
    edited April 2015

    Hi Casual

    Now thats a cool, 88 key keyboard thank you

    "just now realised the v in the midi messages is velocity not volume
    i was counting on the fact that so far v was always 0 for the midi-off events
    but i see a midi file here with "

    Note off can be 0 or 64 or on other models 0 to 127
    It looks like there are 3 bytes

    Byte 1
    starts with a 1
    sss= type Note off= 8n, Note on = 9n
    nnnn=channel
    1sssnnnn

    Byte 2
    starts with a 0
    leaving 0 to 127 for Notes
    0nnnnnnn

    Byte 3
    Starts with a 0
    Leaving 0 to 127 for Velocity
    0nnnnnnn

    or maybe in text you could use if text = "on" then y=1
    if text = "ON" then y =1
    if text = "off" then y = 0
    if text = "OFF" then y=0

    then use y for up and down or rotate

    For safety it's wise to send a note OFF to all channels just in case a midi data gets lost and a note gets stuck
    in Animation case for the Instrument maybe all keys etc should be set to there start position at the end of play

    MIDI Note-on Message
    The MIDI note-on message is used for turning on MIDI notes. The note-on message is a channel message and is consequently restricted to one of 16 pre-defined MIDI channels (i.e., numbers 0 through 15). The basic format of the MIDI note-on message is shown below:

    Most-significant Nibble Least-significant Nibble Byte 1 Byte 2
    1001 MIDI channel [0 - 15] Key Number [0 - 127] Velocity [0 - 127]

    MIDI Note-off Message
    The MIDI note-on message is used for turning a currently playing MIDI note off. When the note is turned off, it is just like an instrumentalist releasing a note. Hence, when the note is released, its sound should start decaying according to the timbre of the currently sounding instrument. One thing to keep in mind is that you need to know the key-number and the MIDI channel that were used when turning the note on. Turing a note-off that isn't currently registered with the MIDI synthesizer as being on will have no effect.

    Most-significant Nibble Least-significant Nibble Byte 1 Byte 2
    1000 MIDI channel [0 - 15] Key Number [0 - 127] Velocity [0 - 127]


    MIDI Channel: In the General MIDI specificiation, MIDI channel 9 is reserved for the use with percussion instruments. In this context, a percussion instrument means an instrument that has no note-setting or pitch setting. For instance, a Low Floor Tom is a percussion instrument in this context, while a Timpani is NOT a percussion instrument. The Timpani is not considered to be a General MIDI percusion instrument because you can specify a pitch. All of the remaining channels (0 through 8, 10 through 15) are reserved for use with pitched or non-percussion instruments.

    Key Number: For pitched instruments (i.e., non-percussion instruments), the key-number specifies the piano-key number. The General MIDI specification assigns the number 69 to A440 (i.e., the international standard that assigns a pitch of 440 Hertz for Middle-A on the standard piano keyboard). Before General MIDI, different mappings were supported by different manufacturers. For percussion instruments the MIDI key value is used for specifying the instrument number. Again, General MIDI specifies a list of standard percussion instrument table. That table assigns a specific instrument number for each MIDI key value.

    Velocity: The velocity specifies the volume or force, with which the note is played. The concept here comes from a keyboard. The faster that one strikes a piano keys, the louder the note will sound. Additionally, the timbre or instrument quality will change along with the velocity. More expensive MIDI synthesizers will change the timbre of the played note as the velocity in the note-on message changes. In my experience, only the most feature-rich computer-based MIDI synthesizers/sound-drivers will vary the timbre with the velocity. Notice the primary limitation! Once a note is played, there is no way of chaning the velocity. As I'll discuss is a future article, there are ways of modifying the channel-volume, but there is no way of changing the volume of an individual note.

    Post edited by Keiron on
Sign In or Register to comment.