Resultat 1 till 19 av 19

Ämne: Hur ser MIDI-strömmen ut vid Note OFF (MIDI Running Status)

  1. #1
    konfisK
    konfisK är inte uppkopplad

    Senior

    Hur ser MIDI-strömmen ut vid Note OFF (MIDI Running Status)

    Hej!

    Det går ju givetvis att testa med valfritt MIDI-monitorprogram, men om någon här vet så slipper man ju!

    Note ON-kommandot för kanal 1 ser ju ut så här:

    0x90 0xnn 0xvv (n=note number, v=velocity)

    I och med MIDI Running Status, så kan man utesluta status-byten (0x90 ovan) i följande meddelanden, så länge det fortfarande är Note ON som skall gälla. Detta innebär att sekvensen C3 D3 E3, med velocity 64, kan skickas så här:
    0x90 0x3C 0x40 0x3E 0x40 0x40 0x40

    Även om det finns ett separat Note OFF-kommando (0x80 för kanal 1), är det vanligast att Note OFF skickas som en Note ON med 0x00 i velocity.

    Här kommer min fråga:
    Hur funkar MIDI Running Status efter en sekvens vanliga Note ON som följs av en Note ON med 0 i velocity (dvs i praktiken Note OFF). Fortsätter status att vara Note ON efter det senare, eller måste man skicka ett nytt statusbyte då?

    Som exempel kan man ju testa att stänga av C3 innan D3 tar vid ovan. Min undran rör alltså om MIDI Running Status beter sig enligt A, eller B:

    A) 0x90 0x3C 0x40 0x3C 0x00 0x3E 0x40 ...

    B) 0x90 0x3C 0x40 0x3C 0x00 0x90 0x3E 0x40 ...


    Hoppas att jag gör mig förstådd, och att någon räv därute sitter inne på svaret!

    Klas

  2. #2
    janost
    janost är inte uppkopplad

    Avslutat konto
    Enligt ditt B alternativ.

    Dvs. den skickar note off som velocity 0x00.

    0x90 0x3C 0x00 är ett note off och running status vill minimera att skicka nya status meddelanden.

  3. #3
    ulf.soderlund
    ulf.soderlund är inte uppkopplad
    ulf.soderlunds avatar
    Senior
    Så länge status-byten för meddelandena är densamma och Running Status tillämpas skickas ingen ny status-byte. Tänk dock på att vissa maskiner använder riktiga NoteOff-meddelanden som i sin tur då även kan innehålla faktisk NoteOff Velocity-information ex SCI T-8, samt att Running Status normalt sett endast tillämpas via DIN-MIDI, ej via USB-MIDI.

  4. #4
    nyd
    nyd är uppkopplad nu
    nyds avatar
    Veteran
    Enligt ditt A-alternativ. SOm Ulf påpekade, därav att de flesta tillverkare numera kör 0x00 som velocity för att markera note off, så att man vid vanligt spelande inte behöver skicka status varesig vid note on eller off.

  5. #5
    janost
    janost är inte uppkopplad

    Avslutat konto
    Citat Ursprungligen postat av nyd Visa inlägg
    This quote is hidden because you are ignoring this member.
    Enligt ditt A-alternativ. SOm Ulf påpekade, därav att de flesta tillverkare numera kör 0x00 som velocity för att markera note off, så att man vid vanligt spelande inte behöver skicka status varesig vid note on eller off.
    Ja A menade jag förstås

  6. #6
    nyd
    nyd är uppkopplad nu
    nyds avatar
    Veteran
    :-)

  7. #7
    konfisK
    konfisK är inte uppkopplad

    Senior
    Tack! Ja jag får nog kolla med den aktuella maskinen iaf. Trodde det var standard att running status skulle användas.

  8. #8
    konfisK
    konfisK är inte uppkopplad

    Senior
    Tack! Ja jag får nog kolla med den aktuella maskinen iaf. Trodde det var standard att running status skulle användas.

  9. #9
    janost
    janost är inte uppkopplad

    Avslutat konto
    Citat Ursprungligen postat av konfisK Visa inlägg
    This quote is hidden because you are ignoring this member.
    Tack! Ja jag får nog kolla med den aktuella maskinen iaf. Trodde det var standard att running status skulle användas.
    Båda med och utan running status fungerar att skicka.

    Men skall du läsa en MIDI ström så måste du tolka båda.

  10. #10
    ricard
    ricard är inte uppkopplad
    ricards avatar
    Veteran
    I varje fall i MIDI-tidens begynnelse så har jag för mig att det fanns både instrument som använde sig av running status vid sändning av MIDI-data, och instrument som inte gjorde det.

    Samt att man ibland har någon form av timeout, säg t ex att man har spelat på ett instrument och sedan efter ett tag ansluter MIDI out till en annan apparat. Den sändande apparaten vet ju inte om att mottagaren inte fått en statusbyte, och mottagaren vet inte vilken statusbyte som är den som gäller för närvarande. Därför kan det vara en poäng i att sändarens running status timar ut med typ någon sekunds mellanrum så att den skickar om en ny statusbyte i samband med nästa meddelande. Råkar man ut för ett sånt här problem kan man lösa det genom att få den sändande maskinen att skicka ett annat midimeddelande, t ex genom att röra bendhjulet en smula.

  11. #11
    janost
    janost är inte uppkopplad

    Avslutat konto
    Citat Ursprungligen postat av ricard Visa inlägg
    This quote is hidden because you are ignoring this member.
    I varje fall i MIDI-tidens begynnelse så har jag för mig att det fanns både instrument som använde sig av running status vid sändning av MIDI-data, och instrument som inte gjorde det.

    Samt att man ibland har någon form av timeout, säg t ex att man har spelat på ett instrument och sedan efter ett tag ansluter MIDI out till en annan apparat. Den sändande apparaten vet ju inte om att mottagaren inte fått en statusbyte, och mottagaren vet inte vilken statusbyte som är den som gäller för närvarande. Därför kan det vara en poäng i att sändarens running status timar ut med typ någon sekunds mellanrum så att den skickar om en ny statusbyte i samband med nästa meddelande. Råkar man ut för ett sånt här problem kan man lösa det genom att få den sändande maskinen att skicka ett annat midimeddelande, t ex genom att röra bendhjulet en smula.
    Är det inte det som activ sense är till för?
    All notes off om man inte tar emot active sense inom 250mS?
    En synt som inte tar emot en statusbyte ignorerar datat.

    Men vad jag förstår så har man slutat med active sense på nyare syntar?

  12. #12
    ulf.soderlund
    ulf.soderlund är inte uppkopplad
    ulf.soderlunds avatar
    Senior
    Citat Ursprungligen postat av ricard Visa inlägg
    This quote is hidden because you are ignoring this member.
    ...I varje fall i MIDI-tidens begynnelse så har jag för mig att det fanns både instrument som använde sig av running status vid sändning av MIDI-data, och instrument som inte gjorde det...
    Precis, kommer ihåg att inte heller gick att stega fram programmen med Program Change på en Alesis MIDIFEX från en maskin som använde Running Status...

  13. #13
    ricard
    ricard är inte uppkopplad
    ricards avatar
    Veteran
    Citat Ursprungligen postat av janost Visa inlägg
    This quote is hidden because you are ignoring this member.
    Är det inte det som activ sense är till för?
    All notes off om man inte tar emot active sense inom 250mS?
    Det är ju inte riktigt samma sak. Active Sensing är egentligen till för att klippa hängande noter om det skulle bli kabelbrott eller någon drar ur sladden. Medn att tima ut running status är för att inte det skall bli tyst när man kopplar ihop två maskiner, där den ena skickar running status och den andra inte har fått någon statusbyte eftersom man inte satte i midikabeln förrän efter den första maskinen skickat sin statusbyte.

    En synt som inte tar emot en statusbyte ignorerar datat.
    Jo, precis. Så om jag slår på maskin A, spelar lite på den, och sedan slår på maskin B, som är kopplad till maskin A via MIDI, så kommer B inte att spela något förrän A har skickat en ny statusbyte.

    Men vad jag förstår så har man slutat med active sense på nyare syntar?
    Ja jag har också hört att det är så. Jag har nog inte sett det skickas eller ens vara konfigurerbart på t ex Blofeld. Lite synd tycker jag. Rätt implementerad är den användbar i sammanhang där man riskerar att dra ut MIDI-sladden, t ex live. Man kan ju också använda Active Sensing för att på frontpanelen visa att MIDI IN faktiskt är kopplat till något även om det inte spelas något f n. Känner inte till någon kommersiell synt som gör det dock.

    Sen fanns det vissa implementationer som var dåliga, t ex DX7 som när den timade ut efter en Active Sense inte bara gjorde all notes off utan gjorde någon slags reset på tongenerering så att alla oscillatorerna hoppade ner till samma frekvens. Lät inte kul om man hade ljud med lång release.

  14. #14
    konfisK
    konfisK är inte uppkopplad

    Senior
    Jag missade att det hade kommit lite nya kommentarer här. Sammanfattningsvis känns det som att det bästa är att ta med båda alternativen (running status och utan densamma).

    Citat Ursprungligen postat av ricard Visa inlägg
    This quote is hidden because you are ignoring this member.
    ...om jag slår på maskin A, spelar lite på den, och sedan slår på maskin B, som är kopplad till maskin A via MIDI, så kommer B inte att spela något förrän A har skickat en ny statusbyte.
    Men det där är väl i praktiken aldrig något problem, vad jag förstår? Du vill väl inte att B ska spela nåt förrän du spelar nåt på A så att säga? Om jag förstår hur running status (brukar?) implementeras, så ska även den ha nån timeout, så att om man spelar två toner på synt A och sedan tar fikarast så kommer den skicka nytt status byte sen när man kommer tillbaka.

  15. #15
    ricard
    ricard är inte uppkopplad
    ricards avatar
    Veteran
    Jag vet inte om standarden föreskriver en timeout, eller många (de flesta?) implementerar en ändå, men jag har stött på minst en maskin som inte hade någon timeout (Casio CZ-101 tror jag men jag kan ha fel).

  16. #16
    PeterM
    PeterM är inte uppkopplad
    PeterMs avatar
    Veteran
    Det finns ingen timeout definierad för Running Status.
    Om man vill implementera det själv är väl en annan sak men det står inget om timeout i MIDI specen.
    Det närmaste man kan komma är:
    If Running Status is being used and a receiver is connected to a transmitter after the transmitter has
    powered on it will not play until the next Status byte is transmitted. For this reason it is recommended
    that the status be refreshed every few seconds.
    Vidare så finns det ju running status för annat än Note On, så om man t.ex. skickar andra statusbytes med stöd för Running Status och transmittern ändrar Running Status så är man ju inte i Note On-läge längre. Nästa Note On kommer då få en ny Running Status och mottagaren är med "på noterna" igen (pun intended).

  17. #17
    konfisK
    konfisK är inte uppkopplad

    Senior
    Ja för att vara en såpass enkel standard, som dessutom har använts på bred front i ca 30 år, tycker jag att det är lite märkligt att den inte tydligare dikterar var som gäller.

  18. #18
    ricard
    ricard är inte uppkopplad
    ricards avatar
    Veteran
    Timeout eller inte för running status är ju inget som påverkar kompatibiliteten, det är mer en olägenhet för användaren, och det borde ligga i varje synttillverkares intresse att ha koll på. Det stod ju dessutom i standarden i citatet ovan "For this reason it is recommended that the status be refreshed every few seconds." så det finns ju faktiskt en rekommendation att skicka en ny statusbyte med det intervallet.

  19. #19
    PeterM
    PeterM är inte uppkopplad
    PeterMs avatar
    Veteran
    Citat Ursprungligen postat av ricard Visa inlägg
    This quote is hidden because you are ignoring this member.
    Timeout eller inte för running status är ju inget som påverkar kompatibiliteten, det är mer en olägenhet för användaren, och det borde ligga i varje synttillverkares intresse att ha koll på. Det stod ju dessutom i standarden i citatet ovan "For this reason it is recommended that the status be refreshed every few seconds." så det finns ju faktiskt en rekommendation att skicka en ny statusbyte med det intervallet.
    Rekommendation ja. De kunde ju faktiskt sagt att det SKA skickas en ny statusbyte vid ett givet intervall istället, annars får vi ju fenomenet att vissa barn inte vill leka med de andra barnen. Nåja, ingen standard är perfekt och buggar (eller slapp implementation) finns ju lite här och var oavsett

Liknande ämnen

  1. Logic Pro X Midi note off
    Av ahellquist i forum Logic
    Svar: 6
    Senaste inlägg: 2016-08-24, 20:38
  2. Svar: 1
    Senaste inlägg: 2014-01-31, 16:05
  3. Opcode Music Quest Note/1 midi interface för parallelporten.
    Av midiman i forum Studioutrustning, lo/mid
    Svar: 0
    Senaste inlägg: 2013-10-07, 20:08
  4. Midi-note-nummer i list edit?
    Av Oortone i forum Logic
    Svar: 0
    Senaste inlägg: 2008-11-07, 16:16

Behörigheter för att posta

  • Du får inte posta nya ämnen
  • Du får inte posta svar
  • Du får inte posta bifogade filer
  • Du får inte redigera dina inlägg
  •