New feature intention: musical playSentence reborn!

Organizing tasks to work on, New Features Ideas, Building LCS & LCB Libraries & Widgets, Redecorating and Modifying the IDE, Hacking / Editing Tools, Compiling the Engine from Source, etc.
Post Reply
User avatar
OpenXTalkPaul
Posts: 1646
Joined: Sat Sep 11, 2021 4:19 pm
Contact:

New feature intention: musical playSentence reborn!

Post by OpenXTalkPaul »

One of the things I was instantly disappointed in when I first looked at LC was that, while it did have the 'play' command, it lacked the playSentence form that was in HyperCard (as well as SuperCard in some form) from the very beginning: the musical 'playSentence' form of the play command! An example of that scripting feature looked something like this

Code: Select all

play piano "C4q E4e Gb"
My intention is to bring that back in an enhanced form.

I have everything I need to do that:
1) The LCB FluidSynth is a wrapper for a well known open source, cross platform (Mac,Windows,Linux/Android), realtime sample player instrument and MIDI sequence playback engine library.

2) For Apple macOS and iOS I have made multiple LCB wrappers that tap into CoreMIDI, AVAudio/MIDI APIs, and even AVAudioUnitSampler and other AU sound/music plugins as normally found in Digital Audio Workstation (DAW) apps like GarageBand, Logic, Ableton LIVE, etc. This is a better option on Apple Platforms because these are things that are built into the OS and so don't require any additional library, unlike libFluidSynth which also requires bunch of additional libraries for full functionality (lbSndFile for example).

3) An xTalk library that can change a playSentence compatible string into MIDI data for playback has existed for decades, and was placed in the public domain long ago. This library is called UDIs MakeSMF. This library includes an expanded musical xTalk vocabulary far better then what was in HC. It includes keyword chars for doing more MIDI like things like setting a channel or creating pitch bends and expression messages.
Additionally I've been working on an X/Y timeline grid (think "Piano Roll" style grid), and have a working script that can take playSentence string and map it to this graphically editable grid. I never got around to finishing yet, and so I never made a YouTube Demo Video to show it off.

4) a Soundfont bank of very small instrument sound converted from Hypercard sound resources. I would like to include that (nostalgia) as well as a very small General MIDI sound font for more practical use, and script commands to load additional (higher quality) soundfonts from disk

5) I have already written two xTalk functions for parsing sound patch-names for Soundfont and Compatible DLS Soundbank files.

I just need to incorporate this all into a nice cohesive library / GUI toolkit, which had been my original plan all along!
Maybe add Linux/Windows MIDI API / music plug-in stuff so It doesn't have to rely on extra libraries, or perhaps go the other way and use a smaller, more self contained cross platform synth like WildMIDI https://github.com/Mindwerks/wildmidi
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest