All Projects → johnnovak → nim-mod

johnnovak / nim-mod

Licence: WTFPL license
A Nim MOD player just for fun

Programming Languages

nim
578 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to nim-mod

libxm
A small XM (FastTracker II Extended Module) player library.
Stars: ✭ 94 (+135%)
Mutual labels:  module, mod, fasttracker
pocketmod
Small ANSI C library for turning ProTracker MOD files into playable PCM audio.
Stars: ✭ 54 (+35%)
Mutual labels:  mod, amiga, protracker
go-checksum
Simple tool to calc Golang module checksum of go.mod and module dir.
Stars: ✭ 45 (+12.5%)
Mutual labels:  module, mod
ppplay
An old-fashioned Module Player
Stars: ✭ 27 (-32.5%)
Mutual labels:  mod, fasttracker
note
一些技术笔记
Stars: ✭ 174 (+335%)
Mutual labels:  module, mod
Gos
Gos: Armed Golang 💪 ( solutions for go module, goproxy, cross compilation, etc.)
Stars: ✭ 369 (+822.5%)
Mutual labels:  module, mod
Darkage
🎮 Darkage mod for Minetest
Stars: ✭ 6 (-85%)
Mutual labels:  module, mod
webApi-angularjs
⚓ Definitely simplifies your work with server side & organizes webApi layout to further managing.
Stars: ✭ 15 (-62.5%)
Mutual labels:  module
shopyo
shopyo.readthedocs.org
Stars: ✭ 66 (+65%)
Mutual labels:  module
node-webrtc
🔌 WebRTC bindings for Node, written according to the W3C specification.
Stars: ✭ 23 (-42.5%)
Mutual labels:  module
OpenHV
An Open Source Pixelart Science-Fiction Real-Time-Strategy game
Stars: ✭ 301 (+652.5%)
Mutual labels:  mod
JMT-MCMT
A multithreading mod for for Minecraft forge 1.15.2 and 1.16.x
Stars: ✭ 206 (+415%)
Mutual labels:  mod
ogma
A monorepo for the ogma logger and related packages
Stars: ✭ 201 (+402.5%)
Mutual labels:  module
SydneyHUDFix
Fixed version of SydneyHUD after former team stopped updating this mod
Stars: ✭ 17 (-57.5%)
Mutual labels:  mod
ArmorPlus
ArmorPlus is a mod based on exploration, killing, building, getting geared up, fight the bosses and explore the depths of your worlds.
Stars: ✭ 25 (-37.5%)
Mutual labels:  mod
CelesteSpeedrunTool
A Celelste Mod for Speedrun Practice
Stars: ✭ 21 (-47.5%)
Mutual labels:  mod
V.Rainbomizer
Randomizers for Grand Theft Auto: V
Stars: ✭ 52 (+30%)
Mutual labels:  mod
nuxt-ts-module
A tiny module to use Typescript within Nuxt.js application.
Stars: ✭ 21 (-47.5%)
Mutual labels:  module
A600 ACCEL RAM
Amiga 600 Accelerator And RAM Expansion
Stars: ✭ 22 (-45%)
Mutual labels:  amiga
puppetlabs-xinetd
Module for managing entries in xinetd
Stars: ✭ 13 (-67.5%)
Mutual labels:  module

nim-mod

Some people ride ridiculously expensive Harley-Davidsons, collect vintage guitars or marry 20-year younger platinum blondes when midlife crisis strikes.

I write modplayers.

nim-mod - pattern view

nim-mod - samples view

Features

  • Pretty accurate Amiga ProTracker 2.3D compatible playback
  • Supports 4-channel SoundTracker (15 samples), 4-channel ProTracker (31 samples) and other 2-99 channel MOD formats (FastTracker II, OctaMED, StarTrekker etc.)
  • Cross-platform (Windows, Linux & OS X)
  • Kickass console UI with many cool colourschemes
  • WAV writer (16/24-bit integer, 32-bit float)
  • Change play position during playback with speed/tempo & pattern jump chasing
  • Song length calculation with loop detection
  • Adjustable stereo width
  • Vim-inspired keyboard shortcuts (SUPR IMPRTANT!!!!!11)
  • Uses FMOD for audio playback (just for the audio—the playroutine itself is implemented in Nim from scratch!)

Usage

(Substitute nimmod with nimmod.exe on Windows and ./nimmod on Linux & OS X)

Play foo.mod:

nimmod foo.mod

Play foo.mod and explicitly set the buffer size (experiment with larger values if experiencing audio drop-outs):

nimmod --bufferSize=4096 foo.mod

Display the calculated non-looped length of foo.mod and exit:

nimmod --showLength foo.mod

Render foo.mod to a 24-bit/48kHz WAV file called foo.wav:

nimmod --output=wav --bitDepth=24 --sampleRate=48000 --outFilename=foo.wav foo.mod

Play foo.mod without displaying the UI and show detailed debug info:

nimmod --noUserInterace --verbose foo.mod

Run nimmod -h to see the full list of command line options.

Note for Windows users

The default Windows console raster font doesn't include Unicode box drawing characters, so if you see some random garbage on the screen, most likely that's the culprit. The solution is to set the console font to Lucida Console or some other font that includes the Unicode box drawing characters. Note that not all fonts will work well, some will result in discontinuous lines—you'll need to experiment.

Where to find modules?

Check out the data directory in this repo for a (in my opinion) very good selection of classic modules.

Visit the following huge online collections if you need more!

Building

nimmod requires Nim 0.18.0+ and depends on the fmod, illwill and easyWave Nim packages. Install them with Nimble:

nimble install fmod illwill easywav

Then do a release build:

cd src
nim c -r -d:release nimmod

After this, you can run the render tests:

cd test
nim c -r rendertest

License

Copyright © 2016-2019 John Novak <[email protected]>

This work is free. You can redistribute it and/or modify it under the terms of the Do What The Fuck You Want To Public License, Version 2, as published by Sam Hocevar. See the COPYING file for more details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].