RS232-Midiplayer und passender USB-Treiber

ZX-Team Forum
moggy
User
Beiträge: 81
Registriert: 09.09.2011, 16:30

Re: RS232-Midiplayer und passender USB-Treiber

Beitrag von moggy » 27.05.2018, 12:51

Hi Siggi.

The stop start continue codes are really for synchronising multiple midi units to a common clock.

I'm assuming you have a way to stop the song at a given point then restart it? If that is the case then rather than sending a reset message when this key is pressed just send an all notes off message to all 16 channels this should silence the synth module and allow it to retain its channel settings and pick where you left off upon restart.

I understand the problem of drones being silent upon restart and unfortunately this is the nature of the beast when using players, as the midi event that triggered the original drone will be near the beginning of the song and upon pausing-silencing-restarting, until it meets another note like the original it will remain silent.

Songs that have notes played in fairly quick succession give the impression of coming out of a pause situation ok when in fact it is only this quick note trigger rather than a long drone that makes the song sound normal upon restart

For example if you remember the Pink Floyd song Shine on you crazy diamond that we tried well put this into media player and let it play long enough to set up its instruments and start the drone then stop it. move the slider along to a further point in the song and you will find that until another drone note is triggered the original drone will be silent.

Benutzeravatar
siggi
User
Beiträge: 2419
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: RS232-Midiplayer und passender USB-Treiber

Beitrag von siggi » 27.05.2018, 14:41

So my current solution is to let the sound (and the drones :wink: ) go on during PAUSE ...
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html

Datenkraken bitte nicht füttern!

moggy
User
Beiträge: 81
Registriert: 09.09.2011, 16:30

Re: RS232-Midiplayer und passender USB-Treiber

Beitrag von moggy » 27.05.2018, 20:10

siggi hat geschrieben:
27.05.2018, 14:41
So my current solution is to let the sound (and the drones :wink: ) go on during PAUSE ...
In theory I suppose so.

But the short duration type of notes IE piano,guitar etc will decay very quickly until new note information updates them plus not all drones will play continuously. depending on which instrument produced the initial drone, some sounds (the synth pad sounds in particular) will die after a short period.

Remember that each note has duration data that dictates it's length IE play violin drone note for 3 minutes for example. when you stop or pause and send an all note off message unless it can read that note again it will have to wait for the next note to come along and continue playing.

Benutzeravatar
siggi
User
Beiträge: 2419
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: RS232-Midiplayer und passender USB-Treiber

Beitrag von siggi » 27.05.2018, 21:12

Ok, I will give it a try (after the "Tatort" is finished :mrgreen: )
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html

Datenkraken bitte nicht füttern!

Benutzeravatar
siggi
User
Beiträge: 2419
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: RS232-Midiplayer und passender USB-Treiber

Beitrag von siggi » 27.05.2018, 22:58

Hmmm. If I understood right:
If I do nothing (except sending nothing)
- a short note will continue and die after its normal life-time
- a continuous drone will live forever

If I send "all notes off"
- a short note will die immediately
- a continuous drone will also die immediately

So I think, the first solution is better ...
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html

Datenkraken bitte nicht füttern!

moggy
User
Beiträge: 81
Registriert: 09.09.2011, 16:30

Re: RS232-Midiplayer und passender USB-Treiber

Beitrag von moggy » 28.05.2018, 12:24

siggi hat geschrieben:
27.05.2018, 22:58
Hmmm. If I understood right:
If I do nothing (except sending nothing)
- a short note will continue and die after its normal life-time
- a continuous drone will live forever

If I send "all notes off"
- a short note will die immediately
- a continuous drone will also die immediately

So I think, the first solution is better ...
The drone will only continue forever depending on the instrument making that drone sound.

If say the drone is the string section or an organ sound then no problem the note should "hang" until new data changes it, however some shorter drone sections are performed using the synth pad section and these die after relativity short time but last longer than piano notes for example.

What also can occur is that if the drone sound is the only one used in the song at a certain pitch and would normally die off say about mid way through the song you will find upon restart that because that drone track contains no more note data for that particular sound it will hang forever and whilst the rest of the song is playing different notes/chords etc the drone will hang on that same continuous pitch and sound dreadful(which is why we have all notes off/reset etc).

To be honest one of the worse sounds in the world is the drone section of a song "hanging" whilst the rest of the track is silent. To my mind a pause control is over complication, just start the song again. :wink:

Benutzeravatar
siggi
User
Beiträge: 2419
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: RS232-Midiplayer und passender USB-Treiber

Beitrag von siggi » 28.05.2018, 12:54

moggy hat geschrieben:
28.05.2018, 12:24
To be honest one of the worse sounds in the world is the drone section of a song "hanging" whilst the rest of the track is silent. To my mind a pause control is over complication, just start the song again. :wink:
The current implementation is: pressing "A" (abort) leads to "pause mode" (music is halted, tone is still on). The user then has the choice to press A again (Abort: midi-reset/sound off and player terminated) or C (Continue) to continue playing.

So if he paused at a bad location (e. g. when playing such a song http://hhgproject.org/entries/disasterarea.html ), he is able to stop manually to cancel the "noise" (and restart(*), if wanted).

:mrgreen:
Siggi

(*) Restarting within the player itself would be too complex, because the external mass storage driver then must support a "SEEK 0" or a "reopen" of a file. That would make adaption to other mass storage system (e. g. ZxPand :wink: ) more complex ...
Currently only 2 small m/c routines (read one byte from file/request next block of bytes from file system driver, write one byte to serial) would be sufficient to support other serial/mass storage hardware
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html

Datenkraken bitte nicht füttern!

Benutzeravatar
siggi
User
Beiträge: 2419
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: RS232-Midiplayer und passender USB-Treiber

Beitrag von siggi » 30.05.2018, 09:01

siggi hat geschrieben:
28.05.2018, 12:54
The current implementation is: pressing "A" (abort) leads to "pause mode" (music is halted, tone is still on). The user then has the choice to press A again (Abort: midi-reset/sound off and player terminated) or C (Continue) to continue playing.
Update: during PAUSE the user now has an additional choice: pressing "S" ("silence") sends "all note off" (to switch noise OFF) and the player stays in PAUSE mode.

So anybody should be happy now :mrgreen:

Siggi
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html

Datenkraken bitte nicht füttern!

Benutzeravatar
siggi
User
Beiträge: 2419
Registriert: 06.12.2005, 08:34
Wohnort: D, Hessen, tiefste Werreraa
Kontaktdaten:

Re: RS232-Midiplayer und passender USB-Treiber

Beitrag von siggi » 03.06.2018, 15:12

So, hier nochmal ein Update von allem. Direkt "out of the Box" läuffähig auf Ollis NU (andere müssen den USB-Treiber halt anpassen).

UFM-8K-P enthält den streamingfähigen USB-Treiber für den NU, sowie aktuellen UFM (V2.2), der nun auch ein 'O'-Kommando kennt, mit dem man eine Datei zum Lesen (Streaming) öffen kann. UFM öffnet die Datei (per "L datei 0") und beendet sich, damit dann sofort die Applikation gestartet werden kann, die die offene Datei liest (z. B. der Midiplayer oder Joachims Eierfräser :wink: ).
UFM (samt Treiber) sind aber nicht ROM-fähig und müssen immer wieder neu ins 8K Ram geladen werden!

UFM-8K.P
(13.07 KiB) 29-mal heruntergeladen

Das "Playall"-Programm enthält nun den neuesten Midiplayer (mit Pause-Funktion).

Ich gehe wie folgt vor: ich intialisiere die RS232-Karte für Midibaudrate (Load MIDIINIT). Dann lade ich UFM-8K.P und starte es. Mit Taste "R" (Restore) lade ich dann UFM+USB-Treiber nach 8192. Dann beende ich das Programm ("Q"(Quit)) und start dann UFM mit "PRINT USR 8192".

Dann navigiere ich zum MIDI-Verzeichnis auf dem USB-Stick und lade mit "L" das Programm "Playall.p". Ich bleibe im UFM und navigiere zu Verzeichnis mit Midi-Dateien, die ich abspielen will. Dort beende ich UFM ("X") und starte "PLAYALL" (Run).

PLAYALL.P
(8.47 KiB) 29-mal heruntergeladen

Noch ein Tipp: PLAYALL hat keine Playliste, sondern spielt die Midi-Dateien in der Reihenfolge ab, in der sie im Verzeichnis des USB-Stick vorliegen.
Wer dort eine bestimmte Reihenfolge haben will, kann wie folgt vorgehen:
- neues, leeres Verzeichnis anlegen.
- erste Mididatei aus anderem Verzeichnis ins neue Verzeichnis kopieren oder verschieben
- weiterte Mididateien reinkopieren/verschieben.

Im neu angelegten Verzeichnis werden dadurch die Mididateien nacheinander in der Directory eingetragen und von PLAYALL dann in dieser Reihenfolge gespielt.

Außer der PAUSE hat ich im Midiplayer auch noch die Textausgabe modifizert (Taste T): wenn ein Text in der Midi-Datei (z. B: Copyright Hinweis oder Song-Name) kommt, wird der Player ca. 1,5 Sekunden angehalten und der Text gezeigt. Wenn das zu nervig wird (manche Songs enthalten wie Karaoke-Lieder den vollen Text), weil die Musik ständig unterbrochen wir, kann in diesem Zustand mit Taste "T" der Text-Modus wieder ausgeschaltet werden.

Gruß und viel Spaß
Siggi
Mein ZX81-Web-Server: online seit 2007
http://zx81-siggi.endoftheinternet.org/index.html

Datenkraken bitte nicht füttern!

Benutzeravatar
Jens
User
Beiträge: 1142
Registriert: 23.08.2005, 13:31
Wohnort: D-31582 Nienburg/Weser

Re: RS232-Midiplayer und passender USB-Treiber

Beitrag von Jens » 09.06.2018, 18:00

Hallo Siggi!

Deine Programme funktionieren ganz wunderbar. Ich habe mit einem Synthesizer ein paar Versuche angestellt und MIDI-Dateien erstellt, die sowohl die Tasteninformationen als auch diverse Controller-Steuerbefehle enthalten (zB Cutoff-Frequenz verändern). Das geht prima. Was nun noch fehlt ist MIDI-Timecode (MTC) - das habe ich noch nicht hinbekommen (um zB einen Sequenzer zu syncronisieren)...

Liebe Grüße
Jens
Der ZX81 rechnet mit allem, nur nicht mit seinem Besitzer...
Neues aus der KI-Welt... Die Automate kann sich selbst essen.

Antworten