Giter Club home page Giter Club logo

fmtribe's Introduction

FMTribe

OPL3 synth/drum machine/thingie focused on live jamming for DOS.

Tested only with DJGPP and a PC with a Sound Blaster-compatible soundcard.

Step Sequencerย Instrument Editor

Web version

Diego Dorado kindly ported this to the web using JS-DOS. Check it out here!

Download

  • Install a DPMI server if you don't have one. See here for instructions.
  • Go to releases tab to download binaries.
  • Unzip and run FMTRIBE.EXE.
  • Have fun!

Usage

  • Esc: Exit
  • F5: Play / pause
  • F7: Stop after bar (2 times, stop immeadiately)
  • F9: Tap tempo
  • Shift + F9: Toggle metronome
  • F10: Toggle "follow cursor"
  • Left: Move to previous frame
  • Right: Move to next frame
  • Up: Move to previous channel
  • Down: Move to next channel
  • Del: Clear pattern for current channel
  • Ctrl + Del: Clear pattern for all channels
  • Tab: Switch instrument editor for the current channel
  • M: Toggle "apply step changes to all frames"
  • P: Toggle "play channel instrument"
  • Z: Toggle "record steps"
  • Alt + Number: Mute/unmute channel

Step Sequencer

To toggle a step in the pattern of the 16-step sequencer, use the keys:

Q W E R T Y U I
A S D F G H J K

To select one of the eight channels, use keys 1 through 8. You can mute a channel anytime using Alt + NumberKey.

Press Alt + StepKey to define microsteps (upto 3 for now).

Instrument Editor

To customize the parameters of an instrument, press the Tab key, select a field and change its value. The parameters will update automatically if the step sequencer is playing.

  • Left/Right: Increase/decrease value for the current field
  • Up/Down: Move between parameter fields

Also, you can still change channels with the numbers from the instrument editor.

To change the base note of the instrument, use the keys:

  W   E       T   Y   U
A   S   D   F   G   H   J

as in a keyboard of one octave. To change the base octave, use PageUp/PageDown.

Source

To tinker with the source code, you need to install DJGPP and its C compiler. Follow the instructions here.

fmtribe's People

Contributors

gitter-badger avatar munshkr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

fmtribe's Issues

"Tap Tempo" is not working correctly

  • Set a range of allowed values for BPM (e.g. 20 to 300), and respond to a second tap as a "first" if time between these taps is out of range.
  • When changing BPM, sequencer should move to the nearest "beat" step immediately. For example, if on step 2, go to step 1 (first beat), if on step 3 or 4, go to the step 5, (second beat). This way, the player always taps exactly on a "beat" step.

Add missing instrument settings to the instrument editor

  • Carrier
    • Attack, Decay, Sustain, Release (ADSR)
    • Output Level (Volume)
    • Waveform
    • Amplitude Modulation (AM, a.k.a Tremolo)
    • Key Scale Rate (KSR)
    • Vibrato
    • Sustain (EG Type)
    • Frequency Data Multiplier
  • Modulator
    • Attack, Decay, Sustain, Release (ADSR)
    • Output Level (Volume)
    • Waveform
    • Amplitude Modulation (AM, a.k.a Tremolo)
    • Key Scale Rate (KSR)
    • Vibrato
    • Sustain (EG Type)
    • Frequency Data Multiplier
  • Fine Tune
  • Feedback Strength
  • Key-scaling Level
  • Panning

Real-time instrument editor

Allows the user to customize the carrier and modulator parameters of the channel instrument.

I need font rendering for this.

Step velocities map

Allows you to change the velocity of a single step (volume of the instrument)

Time tick is not stable (!)

Sometimes there is a percetible difference of speed when switching between the pattern editor and the instrument editor, being faster the latter. It seems it takes too long to draw...

Maybe seq_tick should be handled by an interrupt...?

Pattern configuration screen

Lets you customize:

  • Pattern length (number of frames, from 1 to 4)
  • Frame length (number of steps, from 4 to 16)

MIDI support

  • Clock sync (internal and external modes)
  • Instrument parameters mapped to CC messages

Microsteps

Like in Sine Beats from NI Reaktor...

Custom keyboard interrupt handler

This would allow me to handle certain combination of keys, like ShiftL o ShiftR + another key, currently unavailable with kbhits().

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.