OpenXTalk Extensions

Post Reply
User avatar
OpenXTalkPaul
Posts: 2435
Joined: Sat Sep 11, 2021 4:19 pm
Contact:

OpenXTalk Extensions

Post by OpenXTalkPaul »

Looking for a particular experiment I did several years ago I realized that I have accumulated quite a few Extensions and Widgets and haven't properly announced many of them. They vary widely in their release quality, but I thought I should make a downloads list for things that I didn't think were yet worthy of including with the 'heavy' IDE ...or that I just haven't gotten around to integrating.

I'm planning to update this thread as time allows.

Sound & Music related Extensions:

https://github.com/PaulMcClernan/OpenXTalk-Piano-Widget
The Piano widget is one I've included in OXT 'Heavy', it is the most complete of Widget I've written. It has lots of properties for setting, and can be used for animating musical note playback (the main use case I had in mind). The Widget doesn't produce any sound on its own, instead it sends noteOn/Off messages to the IDE along with note-Names and MIDI Note Numbers as message parameters. It's up to script authors to route that information to some musical note playback engine.

https://github.com/PaulMcClernan/OpenXTalk-FluidSynth
This is a Library Extension that uses FFI (Foreign Function Interface) to wrap libFluidSynth, the widely used FOSS cross-platform sound sample MIDI playback engine (SoundFonts). This has been tested on macOS, Windows, and Linux (theoretically it could also work on Android, but I've not tested that). It's fairly complete as far as normal playback. I planned to eventually add a few more things like support for its built-in sequencer, and in-memory SoundFont creation. The main goal of independently enabling MIDI playback on all OXT desktop OSes wa accomplished. I did include this in OXT 'Heavy' along with a very small (low quality) basic General MIDI sound set. Additionally I've included a Script library called OXT General Music Library that, among other things enables xTalk-style-'ABC'text-music notation (aka a 'playSentence') and can use the FluidSynth library for playback if it's installed (the default MIDI playback for Linux/Windows, on macOS it uses AVMIDIPlayer as default instead).

https://github.com/PaulMcClernan/OpenXT ... MidiPlayer
This is a Library Extension that uses FFI (Foreign Function Interface) to wrap Apple's AppleAVMidiPlayer, an API that has come with macOS since 10.7 (comes with iOS too but not tested on iOS). It's a very simple API that enables the basic functionality that FluidSynth's command line interface covers, namely playing back MIDI data with SoundFonts (or DLS banks). You pass it MIDI file path and the path to a SoundBank file and it uses those to play the music. This API is for basic playback only, not for 'realtime' performances (see others below for that sort of thing).

https://github.com/PaulMcClernan/OpenXT ... e-CoreMIDI
This is a Library Extension that uses FFI (Foreign Function Interface) to send MIDI Messages to Apple's CoreMIDI APIs(s). Obviously it's only useful for Apple devices (and macOS specifically, not tested on iOS). It's also incomplete, which is why I have not included it with OXT 'Heavy'. MIDI-in crashes the engine after a short time but MIDI-out is very stable. I had just begun to wrap Core MIDI's Sequencing recording and manipulating 'tracks' functionality but then I got very busy with other things (specifically OXT). MIDI is NOT 'sound', so one must route the MIDI Messages, usually with 'Audio MIDI Setup.app' in the App/'Utilities' folder, to an App, a virtual Instrument plug-In host, external MIDI sound module, or a remote computer / mobile device that can play the notes with actual sound.

https://github.com/PaulMcClernan/OpenXT ... dioSampler
This is a Library Extension that uses FFI (Foreign Function Interface) to wrap Apple's AVAudioSampler, which is an AudioUnit Instrument that's come with macOS since 10.7. Again this is for macOS only (might work on iOS too). AVAudioSampler, like libFluidSynth, can load 'SoundFont' (or DLS) sound sets. Unlike libFluidSynth wrapper this can load individual sound files (AIF, Wave) to use as virtual instrument, however it only allows for using a single MIDI channel (per instance).

https://github.com/PaulMcClernan/OpenXT ... entManager
This wrapper extension can List ALL AudioUnits that are installed in the user's macOS system along with information about them (type, manufacturer, supported CPU architectures, etc.). Most importantly it can provide the FourCC codes that are needed to load a plugin into a host (in our case in OXT)

https://github.com/PaulMcClernan/OpenXT ... Instrument
This Extension wrapper can load arbitrary 'MIDI Instrument' Audio Unit plug-ins using those codes retrieved by AVAudioUnitComponentManager (above). This allows for playback with all sorts of cool 'Analog' emulation synths, of which there are some really good (and free) ones like that available. That classic 1980s Yamaha DX-7 synth sound is totally doable (and loads of fun),

https://github.com/PaulMcClernan/OpenXT ... ioRecorder
OpenXTalk-Apple-AVAudioRecorder is an Extension wrapper that enables scripted basic recording of sound from user's microphone using Apple's AVAudio system API, it should automatically ask for user's permission to use the microphone hardware. Obviously this only works on the Apple platform. This is fairly complete wrapper for the basic recording parts of the API, but it could be expanded much more to include sound processing plugins such as echo effects.
User avatar
OpenXTalkPaul
Posts: 2435
Joined: Sat Sep 11, 2021 4:19 pm
Contact:

Re: OpenXTalk Extensions

Post by OpenXTalkPaul »

Assorted Extensions:

https://github.com/PaulMcClernan/OpenXTalk-Apple-PDFKit
Here's Extension Widget (and alternatively a library) that allows scriptures to use Apple PDFKit API for displaying PDFs, plus a few other things like extracting text from a PDF. Only tested on macOS and obviously this only works on Apple platform.
I would consider wrapping a comparable PDF toolkit like PDFium that is Cross-platform, but currently I don't have much use for that capability myself.

https://github.com/OpenXTalk-org/OXT_AppleImagingLib
OXT Apple Imaging lib is an Extension Library that enables scripting of various parts of Image related APIs, including applying GPU accelerated Core Image filters such as Blur, Posterize, etc. to image data. It can also retrieving Apple furnished UI images such as Icon for the Mac model, and also includes names for undocumented images such as still present NeXT UI elements. You should not include these images in cross-platform apps as they are not free-open-source-software or licensed for use on non-Apple hardware, so keeping that in mind this library can load these image datas dynamically.

I would like to have a similar Image filtering capabilities on all platforms, ImageMagick is great but it's a large library, so if anyone knows of a small basic cross-platform image filtering library I could wrap, please point me to it.
I was recently looking at the image library DevIL: https://sourceforge.net/projects/openil/ but it looks like that has been stagnant since 2017, still it's written at a 'low-level', highly portable, with only a few dependencies.

https://github.com/PaulMcClernan/OpenXT ... -App-Tools
Mac OS Native tools, is an extension library that enables scripters to easily use of assorted macOS APIs, mostly a bunch of AppKit stuff so far. This library is currently included in OXT DPE (aka 'Heavy') and OXT Lite to enable native darkMode windows on macOS. Other features include being able to manipulate the App's DockTile, Create/set a custom file icons from image data, and more.

https://github.com/PaulMcClernan/OpenXTalk-VirtualDPad
VirtualDPad was sort of an experiment. It can be used as a on-screen directional pad as found on game controllers.

https://github.com/PaulMcClernan/OpenXT ... tarsWidget
FiveStarsWidget was one of the first widgets I created as a learning excersize. It actually has 10 possible states because you can assign half-stars for the rating. There's a default script that when applied to the widget enables click-dragging to set the rating.

https://github.com/PaulMcClernan/OpenXT ... idgetShell
https://github.com/PaulMcClernan/OpenXTalk-XYGrid
OpenXTalk-XYEditGrid-WidgetShell was intended as more of a framework to use with several ideas I had, namely displaying/editing MIDI Data in a piano-roll style grid and creating a shape for effects envelopes. It has an edit mode.

https://github.com/PaulMcClernan/OpenXTalk-HIDAPI
This is a wrapper for the HIDAPI library, it's the same library used by PyGame to allow for game controller input for Python games. It's cross platform for desktop OS. HID stands for Human iInterface Device, which is a standard supported by many USB and Bluetooth device manufacturers. Many game controllers are HID devices, including Sony PlayStation 3 to 5 and Nintendo console controllers, as well as assistive devices, barcode scanners, coin-op devices, etc. You can use this library to list connected HID devices and then poll the devices for signals. The signals will be raw bits and bytes so you will need to translate them into more meaningful messages like XButtonDown. The included demo stack shows how this can be done and is set-up for testing with mappings for few common HID devices: PS3/PS4, Wii controller, 2-Button Mouse

https://github.com/OpenXTalk-org/OpenXT ... iderWidget
I still think we should have widget Extension-based replacements for all of the 'Classic' Controls, and it seems like that's what they're doing 'over-there'. The only slider control I could find that fit the bill for a slider scrollbar replacement that I could find was created by Trevor DeVore about 7 or 8 years ago, but it lacked a vertical orientation, so I made this slider widget that can do either vertical or horizontal orientation. It's not as complete or feature rich as it could be but it works.

https://github.com/PaulMcClernan/labelb ... on-builder

https://github.com/PaulMcClernan/univer ... ton-widget

https://github.com/PaulMcClernan/OpenXTalk-KnobWidget

https://github.com/OpenXTalk-org/OpenXT ... oardWidget

https://github.com/OpenXTalk-org/org.op ... t.tileplus

https://github.com/OpenXTalk-org/OpenXTalk-PaletteGrid

https://github.com/OpenXTalk-org/org.op ... ibsvgicons

https://github.com/OpenXTalk-org/org.op ... neralmusic

https://github.com/OpenXTalk-org/OpenXTalk-eSpeak

https://github.com/PaulMcClernan/OpenXT ... SSpeechLib

https://github.com/PaulMcClernan/OpenXT ... Font-Tools

https://github.com/OpenXTalk-org/openXT ... omCheckbox
(to be continued)
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest