Code Monkey home page Code Monkey logo

ami-sampler-vst's Introduction

                               
                
                                               ______     ____      ____     ____
                                              /      |_  |    \ _  /    |_  |    |_
                                             /       | | |     \ \/     | | |    | |
                                            /        | | |      \/      | | |    | |
                                           /   /|    | | |              | | |    | |
                                          /   /_|    | | |    |\  /|    | | |    | |
                                         /    __     | | |    | \/ |    | | |    | |
                                        /    / _|    | | |    | | \|    | | |    | |
                                       /    / / |    | | |    | |  |    | | |    | |
                                      /____/ /  |____| | |____| |  |____| | |____| |
                                       /____/     |____|   |____|    |____|   |____|
        
                ___________       ______     ____      ____     _________      ____            _________     _________
               /           /_    /      |_  |    \ _  /    |_  |     _   \    |    |_         |         |_  |     _   \__
              /     ______/ /   /       | | |     \ \/     | | |    | \   \   |    | |        |     ____| | |    | \   \ \
             /     /__ ____/   /        | | |      \/      | | |    |  |   |  |    | |        |    |  ____| |    |  |   | \
             \         \      /   /|    | | |              | | |    |_/   / | |    | |        |    |_|      |    |_/   /   |
              \____     \    /   /_|    | | |    |\  /|    | | |     ____/ /  |    | |        |     __|_    |        _/   /
                  /     /\  /    __     | | |    | \/ |    | | |    |  ___/   |    | |        |    |  __|   |        \  _/
          _______/     / / /    / _|    | | |    | | \|    | | |    | |       |    |_|____    |    |_|__    |    |\   \ \
         /            / / /    / / |    | | |    | |  |    | | |    | |       |           |_  |         |_  |    | \   \ \
        /____________/ / /____/ /  |____| | |____| |  |____| | |____| |       |___________| | |_________| | |____|  \___\ \
          /___________/   /____/     |____|   |____|    |____|   |____|         |___________|   |_________|   |____|   \___\
  

image

Ami Sampler

The Commodore Amiga revolutionized the home computer when it hit the shelves in 1985. Not only sporting colourful 16-bit graphics but also boasting four channels of 8-bit sampled audio. With sample sequencing software like ProTracker and OctaMED, it was the first computer that allowed its users to record and sequence instruments into a full song; inspiring musicians, programmers, graphic designers, and hackers to show what they could really do with the new technology that the Amiga gave them. And while its specs may seem like they pale in comparison to more modern computers, its sound and legacy continue to inspire people to this day.

The Ami Sampler brings that feel and that sound into the modern world of Digital Audio Workstations. Obviously heavily inspired by the Amiga, as well as Protracker and Fasttracker, it also draws inspiration from last trackers like Triton's Fasttracker II and Milkytracker in addition to some modern sampler VST plugins. While in no way an emulator nor a recreation of the limitations that the late 80s software had, the Ami Sampler strives to take the classic sound of the Amiga but still allow it to stand up with a modern DAW setting.

Wahaha.II.Github.mp4-compressed.mp4
Echoing.Github.mp4-compressed.mp4

Controls / Parameters

For the most part, the Ami Sampler has pretty standard controls that one would expect to find in a sampler VST. There are twelve individual samplers. Each sampler has its own volume, pan, and ADSR controls as well as solo/mute. There's also the option for each channel to be monophonic, four-voice polyphonic (PT poly), or eight-voice polyphonic (Octa poly). There's also a sample rate decimator control and when the channel is in monophonic mode, there's a control for pitch glide. Master output has controls for master volume, master pan, a switch to enable a 4.4khz 6db/octave low pass filter (modeled after the RC filter in the Amiga 500), a switch to enable a 3.1khz 12db/octave low pass filter (modeled after the LED filter in the Amiga 500 and Amiga 1200), and vibrato speed and depth.

By far my favorite control that I put into the Ami Sampler is the "Paula" switch, taking inspiration from the Amiga's audio processor's (known as Paula) limitation to only be able to pan hard left or hard right. This limitation in the Amiga could allow the user to create uniquely wide sounding pads when multiple channels play the same sample as a chord. The Paula switch creates a similar affect by alternating the pan for each note played by the sample; almost like an autopan except the notes are sustained instead of shifting back and forth. When in "Paula" mode, the channel pan control becomes a stereo width from -100 wide to +100 wide (when in Mono mode, "Paula" is disabled since the effect is for chords).

Other controls include a computer-key virtual midi keyboard mapped to Protracker's/Fasttracke's note map, plugin window scaling via the window buttons above the waveform graphic (window scaling is disable in Linux plugins as Linux DAWs don't handle this feature well), sample looping, and MIDI channel/transposition controls.

Sample loading/saving

Sample loading can be done via the LOAD button or by dragging and dropping samples into Ami Sampler. Supported file formats include: .WAV, .AIF, 8SVX .IFF (Amiga audio file), 8-bit signed raw PCM, mu-law encoded .BIN (Linn drum and Drumulator samples), and .BRR files (Super Nintendo samples). While Ami Sampler does play back any audio at 8-bit PCM and does have a sample rate decimator available, to fully get the Amiga feel, it's recommended to use 8-bit samples with a sample rate below 28khz (typical sample rates for the Amiga were usually either 8363hz or 16726hz).

A handleful of samples are included in this repository under the Samples folder. Included are the famous ST-01 and ST-02 sample packs converted to WAV, a random collection of some of my favorite samples in the remaining ST-XX sample packs (under ST-FV), and a handful of samples that I recorded on my Amiga 500 using my Arduinosound Turbo sampler module (https://github.com/astriiddev/Arduinosound-Turbo) under the folder ST-ASTRX. Some of the ST-ASTRX samples are in the original IFF format, some have been converted to BRR using my SBC700 Super BRR Converter program (still in development).

Additional Amiga samples from the ST-XX sample packs can be found at https://archive.org/details/AmigaSTXX

Sample saving is done with the SAVE button; currently only WAV, AIF, IFF, raw, and BIN are supported. You can also clear out a sample from its slot with the trashcan icon.

Things to add, bugs to fix

The two most features that I still need to add are sample presets (hence the samples included externally in the repo) and BLEP synthesis for a more accurate recreation of the Amiga's sound. These are both a bit far out and may take some time to implement.

The two bugs I'm currently aware of is the mouse cursor not changing to the Amiga cursor sometimes, and the mouse-wheel coordinates being completely off in Ableton if "Auto-Scale Plugin Window" is disabled for high DPI screens. Sometimes these incorrect coordinates read as a negative coordinate and completely crash Ableton. It is recommended that you leave "Auto-Scale Plugin Window" enabled if you are using Ableton and have a high DPI screen.

Ami Sampler has been tested and working on the following.

Windows 11:

  • As a standalone app
  • As a VST3 in Ableton
  • As a VST3 in Studio One
  • As a VST3 in Tracktion Waveform

MacOS Sonoma (Apple Silicon):

  • As a standalone app
  • As a VST3 in Ableton
  • As an AU in Ableton
  • As an AU in Garageband

Linux Ubuntu 20.04

  • As a standalone app
  • As a VST3 in Ardour 8
  • As an LV2 in Ardour 8
  • As an LV2 in MusE

Special thanks to

  • Olav Sørensen (8bitbubsy)
  • The folks over at WinUAE
  • The folks over at Cloanto/Amiga Forever
  • And, of course, to Commodore themselves

ami-sampler-vst's People

Contributors

astriiddev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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

ami-sampler-vst's Issues

PAL/NTSC sample rate

It would be nice if there were a switch to set the sample rate conversion to PAL or NTSC.
I think at the moment "C-2" uses the "NTSC" sample rate of 8363 Hz.
For PAL system, it is about 8287 Hz.

Midi file input?

An idea/feature request:
Adding midi file loading, and have the ability to load a sample for each instrument of the midi file. (by matching the pitch of the sample)

Compile error, can't find ft2build.h

What is the problem?

Compilation fails under Linux (Debian 12), ft2build.h cannot be found.

How to reproduce the problem?

  1. Open ami.jucer with Projucer and save to generate Builds/LinuxMakefile/Makefile.
  2. Go under Builds/LinuxMakefile/Makefile.
  3. Run make CONFIG=Release

What do you get?

I get the following compilation error

fatal error: ft2build.h: No such file or directory

What else do have to say?

It fails in spite of having

/usr/include/freetype2/ft2build.h

installed on my system.

Portamento up and down

Suggestion

Adding a portamento up/down control to mimic Protracker's 1xx/2xx effects.

Tentative Description (Subject to Change)

  • PUD (Portamento Up/Down) = 0. Default value, nothing is changed.
  • PUD = -x. Every 1/50 seconds, x cents of semitone is removed from the current pitch.
  • PUD = x. Every 1/50 seconds, x cents of semitone is added from the current pitch.

Motive

With such effect, one could potentially write a script to convert MOD to MIDI+Ami-Sampler.

EDIT: a better reason is to apply oldschool effects in newschool DAWs.

Placement

Where could such controller be placed on the GUI?

MIDI CC

Alternatively, since it is more a dynamic controller than a preset parameter, it could simply be a MIDI CC (or two, one for up, one for down).

Merely adding MIDI CC would have the advantage of not breaking backward compatibility.

Help

I'm happy to help implementing it. I just want your opinion before I start looking into it.

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.