├── .gitattributes ├── .gitignore ├── PRIVACY.md ├── .github └── FUNDING.yml ├── media ├── 128.png ├── 16.png ├── 256.png ├── 32.png ├── 512.png ├── 64.png ├── 1024.png ├── icon128.png ├── icon48.png ├── safari-install-2560-1600.png ├── midi-player-screenshot-272x42.png ├── midi-player-screenshot-440x280.png ├── midi-player-screenshot-640x400.png ├── PRIVACY.md ├── en.md ├── ru.md ├── es.md ├── README.md └── icon.svg ├── test ├── test.mid ├── embed.html ├── bgsound.html ├── audio.html ├── object.html └── url.html ├── firefox ├── midi-player │ ├── icon48.png │ ├── icon128.png │ ├── content.js │ ├── _locales │ │ ├── en │ │ │ └── messages.json │ │ ├── ru │ │ │ └── messages.json │ │ └── es │ │ │ └── messages.json │ └── manifest.json └── README.md ├── safari ├── midi-player │ ├── midi-player │ │ ├── Assets.xcassets │ │ │ ├── Contents.json │ │ │ └── AppIcon.appiconset │ │ │ │ ├── 128.png │ │ │ │ ├── 16.png │ │ │ │ ├── 256.png │ │ │ │ ├── 32.png │ │ │ │ ├── 512.png │ │ │ │ ├── 64.png │ │ │ │ ├── 1024.png │ │ │ │ ├── 256-1.png │ │ │ │ ├── 32-1.png │ │ │ │ ├── 512-1.png │ │ │ │ └── Contents.json │ │ ├── midi_player.entitlements │ │ ├── AppDelegate.swift │ │ ├── Base.lproj │ │ │ └── MainMenu.xib │ │ └── Info.plist │ ├── extension │ │ ├── SafariExtensionHandler.swift │ │ ├── content.js │ │ ├── extension.entitlements │ │ └── Info.plist │ └── midi-player.xcodeproj │ │ └── project.pbxproj └── README.md ├── src ├── content.js └── tools │ ├── assemble.js │ └── main.js ├── package.json ├── Gruntfile.js └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | package-lock.json 3 | .DS_Store 4 | -------------------------------------------------------------------------------- /PRIVACY.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/PRIVACY.md -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: jazz-soft 2 | custom: https://paypal.me/jazzsoft 3 | -------------------------------------------------------------------------------- /media/128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/media/128.png -------------------------------------------------------------------------------- /media/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/media/16.png -------------------------------------------------------------------------------- /media/256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/media/256.png -------------------------------------------------------------------------------- /media/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/media/32.png -------------------------------------------------------------------------------- /media/512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/media/512.png -------------------------------------------------------------------------------- /media/64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/media/64.png -------------------------------------------------------------------------------- /test/test.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/test/test.mid -------------------------------------------------------------------------------- /media/1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/media/1024.png -------------------------------------------------------------------------------- /media/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/media/icon128.png -------------------------------------------------------------------------------- /media/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/media/icon48.png -------------------------------------------------------------------------------- /firefox/midi-player/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/firefox/midi-player/icon48.png -------------------------------------------------------------------------------- /firefox/midi-player/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/firefox/midi-player/icon128.png -------------------------------------------------------------------------------- /media/safari-install-2560-1600.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/media/safari-install-2560-1600.png -------------------------------------------------------------------------------- /media/midi-player-screenshot-272x42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/media/midi-player-screenshot-272x42.png -------------------------------------------------------------------------------- /media/midi-player-screenshot-440x280.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/media/midi-player-screenshot-440x280.png -------------------------------------------------------------------------------- /media/midi-player-screenshot-640x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/media/midi-player-screenshot-640x400.png -------------------------------------------------------------------------------- /safari/midi-player/midi-player/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /safari/midi-player/extension/SafariExtensionHandler.swift: -------------------------------------------------------------------------------- 1 | import SafariServices 2 | 3 | class SafariExtensionHandler: SFSafariExtensionHandler { 4 | } 5 | -------------------------------------------------------------------------------- /media/PRIVACY.md: -------------------------------------------------------------------------------- 1 | # Privacy Policy 2 | 3 | ## MIDI Player 4 | ![MIDI Player](256.png) 5 | 6 | ## This app and extension collect no user data. 7 | 8 | [website](https://jazz-soft.net) -------------------------------------------------------------------------------- /safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/128.png -------------------------------------------------------------------------------- /safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/16.png -------------------------------------------------------------------------------- /safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/256.png -------------------------------------------------------------------------------- /safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/32.png -------------------------------------------------------------------------------- /safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/512.png -------------------------------------------------------------------------------- /safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/64.png -------------------------------------------------------------------------------- /safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/1024.png -------------------------------------------------------------------------------- /safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/256-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/256-1.png -------------------------------------------------------------------------------- /safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/32-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/32-1.png -------------------------------------------------------------------------------- /safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/512-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jazz-soft/midi-player/HEAD/safari/midi-player/midi-player/Assets.xcassets/AppIcon.appiconset/512-1.png -------------------------------------------------------------------------------- /src/content.js: -------------------------------------------------------------------------------- 1 | var script = document.createElement('script'); 2 | if (typeof browser == 'undefined') browser = chrome; 3 | script.src = browser.runtime.getURL('inject.js'); 4 | script.onload = function() { script.remove(); } 5 | document.documentElement.appendChild(script); 6 | -------------------------------------------------------------------------------- /firefox/midi-player/content.js: -------------------------------------------------------------------------------- 1 | var script = document.createElement('script'); 2 | if (typeof browser == 'undefined') browser = chrome; 3 | script.src = browser.runtime.getURL('inject.js'); 4 | script.onload = function() { script.remove(); } 5 | document.documentElement.appendChild(script); 6 | -------------------------------------------------------------------------------- /safari/midi-player/extension/content.js: -------------------------------------------------------------------------------- 1 | var script = document.createElement('script'); 2 | if (typeof browser == 'undefined') browser = chrome; 3 | script.src = browser.runtime.getURL('inject.js'); 4 | script.onload = function() { script.remove(); } 5 | document.documentElement.appendChild(script); 6 | -------------------------------------------------------------------------------- /firefox/midi-player/_locales/en/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "extensionName": { 3 | "message": "MIDI Player", 4 | "description": "Name of the extension" 5 | }, 6 | "extensionDescription": { 7 | "message": "MIDI Player - plays all types of MIDI files", 8 | "description": "Description of the extension" 9 | } 10 | } -------------------------------------------------------------------------------- /firefox/midi-player/_locales/ru/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "extensionName": { 3 | "message": "MIDI Player", 4 | "description": "Name of the extension" 5 | }, 6 | "extensionDescription": { 7 | "message": "MIDI Player - играет все виды MIDI файлов", 8 | "description": "Description of the extension" 9 | } 10 | } -------------------------------------------------------------------------------- /firefox/midi-player/_locales/es/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "extensionName": { 3 | "message": "MIDI Player", 4 | "description": "Name of the extension" 5 | }, 6 | "extensionDescription": { 7 | "message": "MIDI Player - reproduce todo tipo de archivos MIDI", 8 | "description": "Description of the extension" 9 | } 10 | } -------------------------------------------------------------------------------- /firefox/README.md: -------------------------------------------------------------------------------- 1 | # Extensions for Firefox, Chrome, Opera, Edge (Chrome) 2 | 3 | ## midi-player 4 | 5 | Testing the extension: 6 | 7 | #### Firefox 8 | 9 | - Go to `about:debugging`->`This Firefox`->`Temporary Extensions` 10 | 11 | 12 | #### Chrome 13 | 14 | - Go to `chrome://extensions` 15 | - Turn the `Developer mode` on 16 | - Click `Load unpacked` -------------------------------------------------------------------------------- /safari/midi-player/extension/extension.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-only 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /safari/midi-player/midi-player/midi_player.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-only 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "midi-player-dev", 3 | "version": "0.0.0", 4 | "description": "MIDI player for browsers", 5 | "devDependencies": { 6 | "grunt": "^1.6.1", 7 | "grunt-contrib-copy": "^1.0.0", 8 | "grunt-contrib-jshint": "^3.2.0", 9 | "jzz": "^1.9.3", 10 | "jzz-gui-player": "^1.7.8", 11 | "jzz-midi-smf": "^1.9.8", 12 | "jzz-synth-tiny": "^1.4.3" 13 | }, 14 | "private": true 15 | } 16 | -------------------------------------------------------------------------------- /safari/midi-player/midi-player/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import SafariServices.SFSafariApplication 3 | 4 | @NSApplicationMain 5 | class AppDelegate: NSObject, NSApplicationDelegate { 6 | func applicationDidFinishLaunching(_ aNotification: Notification) { 7 | SFSafariApplication.showPreferencesForExtension( 8 | withIdentifier: "com.jazz-soft.midi-player.extension", 9 | completionHandler: { (_: Error?) -> Void in sleep(1); NSApp.terminate(nil); }); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /safari/README.md: -------------------------------------------------------------------------------- 1 | # Extension for Safari 2 | 3 | ## midi-player 4 | 5 | #### For Safari v.12 and up. 6 | 7 | For those without a developer certificate, 8 | Safari requires quite a ceremonial dance *each time* you need to reload the extension: 9 | 10 | - Go to `Safari`->`Preferences`->`Extensions` and uninstall the previous version of the extension 11 | - Quit Safari completely (with `⌘-Q`) 12 | - Restart Safari 13 | - Check the `Develope`->`Allow Unsigned Extensions` menu item 14 | - Run the extension app (can do it from Xcode) 15 | - In `Safari`->`Preferences`->`Extensions` click the checkbox to enable the extension -------------------------------------------------------------------------------- /firefox/midi-player/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 3, 3 | "name": "__MSG_extensionName__", 4 | "description": "__MSG_extensionDescription__", 5 | "author": "Jazz-Soft", 6 | "version": "1.0.2.0", 7 | "icons": { 8 | "48": "icon48.png", 9 | "128": "icon128.png" 10 | }, 11 | "content_scripts": [{"matches": [""], "js": ["content.js"], "all_frames": true, "run_at": "document_end"}], 12 | "web_accessible_resources": [{"matches": [""], "resources": ["inject.js"]}], 13 | "browser_specific_settings": { 14 | "gecko": { 15 | "id": "{dd2a8325-13f3-40ad-93be-457e84e39883}" 16 | } 17 | }, 18 | "default_locale": "en", 19 | "homepage_url": "https://jazz-soft.net" 20 | } 21 | -------------------------------------------------------------------------------- /media/en.md: -------------------------------------------------------------------------------- 1 | # en (English) 2 | 3 | [messages.json](../firefox/midi-player/_locales/en/messages.json) 4 | 5 | ## Name 6 | MIDI Player 7 | 8 | ## Summary 9 | Plays all types of MIDI files in browser 10 | 11 | ## Description (Mozilla Add-ons, Chrome Web Store) 12 | Play all kinds of MIDI files in browser. Including MIDI 2.0. 13 | 14 | MIDI Player extension supports *.mid/*.kar/*.rmi/*.midi2 formats. 15 | 16 | It looks for MIDI files in hyperlinks and