Re: triggering just play start / stop

From: Matthew Bockol <roue_at_cdlfn.net>
Date: Sun, 18 Sep 2022 21:11:58 -0500
Hi Alexandre,

Thanks for the detailed message.   I've trimmed by .midishrc to the
following:

dnew 0 "28:0" rw
dnew 1 "24:0" rw
tnew sonder
dmtcrx nil
dmmctx {}
dclkrx 0
dclktx {1}

When I hit play on the keystep I see the clock tick messages it's
generating, but I don't see them being passed to device 1 ( where the Uno
is ) and the uno doesn't start playing. Here's the debug log:

[0000:00]> p
[0000:00]> # it stays on 0000:00 till I hit play on the keystep ...
[0000:00]> # enabling debug here
[0000:00]> debug mididev 1
mididev_flush: 45924054: dev 1: fe
mididev_flush: 45924054: dev 0: fe
mididev_inputcb: 45925087: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_flush: 46175051: dev 1: fe
mididev_flush: 46175051: dev 0: fe
mididev_inputcb: 46177052: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_flush: 46426045: dev 1: fe
mididev_flush: 46426045: dev 0: fe
mididev_inputcb: 46427108: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_flush: 46677038: dev 1: fe
mididev_flush: 46677038: dev 0: fe
mididev_inputcb: 46678083: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_flush: 46928035: dev 1: fe
mididev_flush: 46928035: dev 0: fe
mididev_inputcb: 46929057: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_flush: 47179030: dev 1: fe
mididev_flush: 47179030: dev 0: fe
mididev_inputcb: 47180116: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_flush: 47430061: dev 1: fe
mididev_flush: 47430061: dev 0: fe
mididev_inputcb: 47431063: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_flush: 47680071: dev 1: fe
mididev_flush: 47680071: dev 0: fe
mididev_inputcb: 47681117: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_flush: 47931027: dev 1: fe
mididev_flush: 47931027: dev 0: fe
mididev_inputcb: 47931027: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_flush: 48182009: dev 1: fe
mididev_flush: 48182009: dev 0: fe
mididev_inputcb: 48183093: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message

Hi play on the keystep here:

mididev_inputcb: 48335006: dev 0: f0 7f 7f 6 2 f7
mididev_inputcb: 48345023: dev 0: fa f8
mididev_inputcb: 48419022: dev 0: f8
mididev_flush: 48433039: dev 1: fe
mididev_flush: 48433039: dev 0: fe
mididev_inputcb: 48434044: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_inputcb: 48504018: dev 0: f8
mididev_inputcb: 48584000: dev 0: f8
mididev_inputcb: 48668999: dev 0: f8
mididev_flush: 48683998: dev 1: fe
mididev_flush: 48683998: dev 0: fe
mididev_inputcb: 48685024: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_inputcb: 48753994: dev 0: f8
mididev_inputcb: 48833993: dev 0: f8
mididev_inputcb: 48919990: dev 0: f8
mididev_flush: 48935007: dev 1: fe
mididev_flush: 48935007: dev 0: fe
mididev_inputcb: 48936993: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_inputcb: 49004993: dev 0: f8
mididev_inputcb: 49084991: dev 0: f8
mididev_inputcb: 49168987: dev 0: f8
mididev_flush: 49185987: dev 1: fe
mididev_flush: 49185987: dev 0: fe
mididev_inputcb: 49186993: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_inputcb: 49253985: dev 0: f8
mididev_inputcb: 49333983: dev 0: f8
mididev_inputcb: 49418982: dev 0: f8
mididev_flush: 49436981: dev 1: fe
mididev_flush: 49436981: dev 0: fe
mididev_inputcb: 49437987: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_inputcb: 49503979: dev 0: f8
mididev_inputcb: 49583978: dev 0: f8
mididev_inputcb: 49668976: dev 0: f8
mididev_flush: 49687976: dev 1: fe
mididev_flush: 49687976: dev 0: fe
mididev_inputcb: 49689977: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_inputcb: 49754975: dev 0: f8
mididev_inputcb: 49834974: dev 0: f8
mididev_inputcb: 49919971: dev 0: f8
mididev_flush: 49938970: dev 1: fe
mididev_flush: 49938970: dev 0: fe
mididev_inputcb: 49939976: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_inputcb: 50003969: dev 0: f8
mididev_inputcb: 50083968: dev 0: f8
mididev_inputcb: 50168966: dev 0: f8
mididev_flush: 50189965: dev 1: fe
mididev_flush: 50189965: dev 0: fe
mididev_inputcb: 50190971: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_inputcb: 50253964: dev 0: f8
mididev_inputcb: 50333962: dev 0: f8
mididev_inputcb: 50418960: dev 0: f8
mididev_flush: 50440960: dev 1: fe
mididev_flush: 50440960: dev 0: fe
mididev_inputcb: 50442961: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_inputcb: 50503959: dev 0: f8
mididev_inputcb: 50584958: dev 0: f8

# hit stop on the keystep
mididev_inputcb: 50624957: dev 0: f0 7f 7f 6 1 f7
mididev_inputcb: 50633956: dev 0: fc
mididev_flush: 50691955: dev 1: fe
mididev_flush: 50691955: dev 0: fe
mididev_inputcb: 50692962: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_flush: 50942947: dev 1: fe
mididev_flush: 50942947: dev 0: fe
mididev_inputcb: 50943956: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_flush: 51193942: dev 1: fe
mididev_flush: 51193942: dev 0: fe
mididev_inputcb: 51194961: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_flush: 51444940: dev 1: fe
mididev_flush: 51444940: dev 0: fe
mididev_inputcb: 51446940: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_flush: 51695934: dev 1: fe
mididev_flush: 51695934: dev 0: fe
mididev_inputcb: 51696940: dev 1: ff
[0000:01]> debug mididev 0


When I rely on midish to send the clock ticks the debug log show them being
explicitly sent:

dnew 0 "28:0" rw
dnew 1 "24:0" rw
tnew sonder
dmtcrx nil
dmmctx {}
dclkrx nil
dclktx {1}

[0000:00]> debug mididev 1
[0000:00]> p
mididev_flush: 0: dev 1: f8 fa
mididev_inputcb: 0: dev 1: fc
mididev_inputcb: 2009: dev 1: f8
mididev_inputcb: 2295: dev 1: fa
mididev_flush: 250003: dev 1: fe
mididev_flush: 250003: dev 0: fe
mididev_inputcb: 252005: dev 1: ff
mididev_inputcb: ff : skipped unimplemented message
mididev_flush: 334002: dev 1: f8
mididev_inputcb: 336020: dev 1: f8
mididev_inputcb: 336423: dev 1: 9e 27 7a
mididev_flush: 336423: dev 1: 9e 27 7a
mididev_inputcb: 340003: dev 1: 27 7a
mididev_flush: 340003: dev 1: 27 0
norm_kill: noff {1 e} 27 64: killed
mididev_inputcb: 340740: dev 1: 8e 27 0
mididev_inputcb: 344002: dev 1: 9e 27 0
mididev_flush: 355003: dev 1: f8
mididev_inputcb: 356024: dev 1: f8
mididev_flush: 376016: dev 1: f8
mididev_inputcb: 378001: dev 1: f8
mididev_flush: 397001: dev 1: f8
mididev_inputcb: 398005: dev 1: f8
mididev_flush: 418000: dev 1: f8
mididev_inputcb: 419006: dev 1: f8
mididev_flush: 439000: dev 1: f8
mididev_inputcb: 441001: dev 1: f8
mididev_flush: 460000: dev 1: f8
mididev_inputcb: 461006: dev 1: f8
mididev_flush: 480000: dev 1: f8
mididev_inputcb: 481005: dev 1: f8
mididev_flush: 500999: dev 0: fe
mididev_flush: 500999: dev 1: f8
mididev_inputcb: 502005: dev 1: f8
mididev_flush: 521998: dev 1: f8
mididev_inputcb: 523999: dev 1: f8
mididev_flush: 542997: dev 1: f8

Thanks again,
Matt


On Sat, Sep 17, 2022 at 5:41 AM Alexandre Ratchov <alex_at_caoua.org> wrote:

> Hi,
>
> I don't know how works your hardware, but let me summarize how this is
> handled by midish
>
> There are 3 protocols:
>
> - MIDI clock: there's a start/stop signals and clock ticks (1/24-th of
>   quarter note). They are sent by the master clock source (sequencer)
>   and allows slave sequencers to start synchronously and to stay
>   synchronized. There's no tempo concept, the clock tick rate defines
>   the tempo.
>
>   midish may generate these (if "dclkrx" is nil, the default) or
>   follow a master clock (if "dclkrx" is set). MIDI clock information
>   is transmitted to all devices in the "dclktx" list.
>
>   If all of your equipment supports MIDI clock, you could setup the
>   keystep as "dclkrx" and put all other devices in the "dclktx" list.
>   Then type "p" in midish. Playback won't start, midish will wait the
>   keystep to send the start & clock signals. Tempo changes in the
>   midish project will be ignored as well, midish will follow the
>   keystep clock.
>
>   So when you push the "start" button, everything starts and, most
>   importantly, stays in sync.
>
> - MIDI machine control (MMC). These messages correspond to bare
>   buttons on MIDI control surfaces. A sequencer receiving a MMC start
>   will act as if it's start button was pressed.
>
>   As you want to control everything from the keystep interfacee, I
>   recommend to disable transmission of MMC (run "dmmctx {}")
>
> - MIDI time code (MTC). This similar to the MIDI clock, but uses
>   seconds instead of musical time units (like 1/24-th of quarter
>   notes). It's used to synchronize a MIDI sequencer to audio/video
>   equipement.
>
>   Basically, the sequencer receives MTC and uses it as time reference
>   to generate the MIDI clock. It's controlled by dmtcrx and
>   disabled by defaut.
>
>
> On Fri, Sep 16, 2022 at 01:02:17AM -0500, Matthew Bockol wrote:
> > Just another addendum...
> >
> > I ran debug mididev 1 to see what was being sent/received:
> >
> > without dclkrx 0 where the Uno and Volca start their internal sequences:
> >
> > [0000:00]> debug mididev 1
> > [0000:00]> p
> > ... starts immediately ...
> > mididev_flush: 0: dev 1: f8 fa <-- signal to the USB to MIDI device to
> start
> > mididev_flush: 0: dev 1: f0 7f 7f 6 2 f7
> > mididev_flush: 333997: dev 1: f8
> > mididev_flush: 396997: dev 1: f8
> > mididev_flush: 459995: dev 1: f8
> > mididev_flush: 521994: dev 1: f8
> >
> > I believe it's the f8 fa message being sent on dev 1 ( the usb to midi
> that the
> > volca and uno are listening to ) that triggers them to start playback.
> >
>
> seems correct, as "dclkrx" is not set, midish is the master clock source
> and it starts immediately.
>
> >
> > Verses with dclkrx 0
> >
> > [0000:00]> debug mididev 1
> > [0000:00]> p
> > ... nothing happens till ...
> > mididev_inputcb: 87842193: dev 0: f0 7f 7f 6 2 f7 <-- hit start on
> keystep
> > mididev_inputcb: 87852194: dev 0: fa f8
> > mididev_inputcb: 87922192: dev 0: f8
> > ...
> > mididev_inputcb: 89257164: dev 0: f8
> > mididev_inputcb: 89342162: dev 0: f8
> > mididev_inputcb: 89422160: dev 0: f8
> > mididev_inputcb: 89507158: dev 0: f8
> > mididev_inputcb: 89572156: dev 0: f0 7f 7f 6 1 f7 <-- hit stop on keystep
> > mididev_inputcb: 89583156: dev 0: fc
> >
> > Where I see a fa f8 message coming from the Keystep ( dev 0 ) but it's
> not
> > being passed out to dev 1 so they don't start.
> >
>
> seems correct, midish waits for the start signal and starts and sees
> the clock ticks.
>
> you need "dclktx {1}" for the clock information to be forwarded
>
> > This is with dclktx { 1 } and various permutations of dmtcrx 0 / dmmctx
> { 1 }.
> >
>
> To summarize, AFAIU, you need these:
>
> dmtcrx nil      # disable MTC, just in case
> dmmctx {}       # disable MMC to not disturb any device
> dclkrx 0        # make device 0 the master: receive start/stop/spp/clock
> dclktx {1}      # transmit start/stop/spp/clock to device 1
> p
>
> at this point pressing start on the keystep should make device 1
> start. Make sure it's not already started.
>
> If it doesn't work, could you send me the output with "debug mididev 1"
> as you did?
>
> Once this works, you could setup the "fmap" rules so that the voice
> events flow between devices
>
> Alexandre
>
>
Received on Mon Sep 19 2022 - 04:11:58 CEST

This archive was generated by hypermail 2.3.0 : Tue Sep 20 2022 - 01:30:01 CEST