Written in 2000. Sohail Siadat
"Mehr32" (1999 –2000): was my BSc degree project:
“Real-time audio processing toolbox in C++ for computer music”
Keywords: C++, Real-time, Tcl/Tk, DirectSound, Steinberg VST.
Mehr32 is a full digital Audio Engineering studio and toolbox written in C++/C. It was my final degree project developed back in 1999-2000. The full version will be available soon) Note that currently only the main file is provided. The library (.h) files will be added later. Note that this was not written in C++ ISO standards. It is using macros which are now discouraged in current C++ standards.
- Steinberg VST
- DirectSound
- normal buffered Win32 sound output
WP32_play()
- SPDIF (FPGA-version only)
- Microphone live (as part of above)
- Audio-in live (as part of above)
- Keyobard playing (live)
- Progamatic sequence (melody)
- 1999: (v1) Based on an earlier project previous year 1999 sohale/jMusic
- 2000: (v2) Presented as BSc final project at UI (Thesis report available) this version
- 2001: (v3) Further extentions: (VST plugin, Live Microphone input, granular synthesis, pitch)
- 2004?: Lost all files due to loss of a hard-disk 🥺 in pre-github era.
- 2002: FPGA implementation (2002?): SPDIF input and output fully implemented. See [^The-FPGA-version]
- Rewrite and refactor using C++ templates.
- Revive by reconstructing from the main.cpp from the BSc Thesis file.
-
The “Mehr32” (1999 – 2000) implemented as my BSc degree project titled “Real-time audio processing toolbox in C++ for computer music”. [C++, Real-time, Tcl/Tk, DirectSound, Steinberg VST]. Mehr32 was a C++ library implementing audio processing filters and computer music models of musical instruments for real-time performance on PCs. Example designs included: Real-time reverberator (acoustic environmental effects), string and wind instrument models, and an electric guitar amp. The software could achieve the input/output latency of down to 300ms on a Celeron 366.
-
The “FPGA Audio reverberator” (2002): Implemented on Altera CPLD/FPGA. Winner of the First Sharif FPGA Design Contest (FDC); I implemented a working hardware and I implemented (from scratch) both Input and Output modules for the Sony/Phillips Serial Digital audio Interface (SPDIF) protocol. The implemented device applied an IIR filter on the streaming stereo digital audio from a commercial CD player, with less than 3 samples total latency (VHDL/FLEX10K50 CPLD).
FPGA implementation: SPDIF input and output fully implemented.
Written in VHDL, implemented in Presented in Sharif FPGA Design Contest ~fdc and won joint first rank award (2x gold coins 🥇🥇 prize) (Provided live IO from commerciall audio players but due to short time, only the Simple FIR & IIR filters were ported to hardware / VHDL. It fullfilled and demonstrated the propsal except for the static-RAM part. ). Here is my proposal before winning! (Original page among list of proposals ).
A Standalone Realtime Digital Audio Reverberator
This is a device used in music and audio broadcasting studios for adding virtual acoustic ... interpolation and feedback are implemented with FPGA.
Oscillator Phase BasicVOSIMWaveform BasicVOSIMWaveform0 ImpulseOneSampleOscillator PulseABOscillator PulseOscillator PulseWOscillator RetroGlottalOscillator Sawtooth01Oscillator Sawtooth10Oscillator SawtoothOscillator SinOscillator SinPositiveOscillator SinSquareOscillator StomperNoiseyFreqShifter0 TriangularOscillator PeriodicChange PeriodicChangeFixed RANDH RANDI
ExponEnvelopeComponent1 ExponEnvelopeComponent2 ExponEnvelopeSolid
RetroAS1_Reflection_Sparse RetroAS1_Reflection_Diffuse RetroAS1_Reflection_Random FIRFew_Random0
Distortion AbsoluteDistortion ArcSinDistortion BbJWaveShaper ClipHardSimpleOutput DeadZone0 FractionDistortion LimitBetweenDistortion LinearDistortion LogarithmDistortion MyClip MyEnvelopeDistorter MyOvrDrv MyThreshold NoiseGate1 OverDriveWaveShaperJW PAFuzzDistortion PartialLinearCODistortion PartialLinearDistortion PolynomialDistortion PowerDistortion01div PullDownDistortion PullUpDistortion SimpleExponentialDistortion SimpleGainDistortion SimpleLimiter SimpleOpAmp SinousDistortion SoftSaturationWaveShaper SquareRootDistortion StomperEnvelopeDist0
Alpha BandPassButterworth BandRejectButterworth Filter1 Filter2 HighPassButterworth JeffSmith1 LowPassAverage LowPassButterworth LowPassWeighted NoDC RMS SimplePeakFollowerPB
DebugEven DebugPrint PrintAll
Cache CacheSlow
KeyboardHit KeyboardHit1 MusicBox3 NoteFreq NoteFreqS RawRecorder RawWaveIn16sMono VariableSource
Waveguid1
BassDrum_K909_1 Snare_1 String1 KarplusStrongPlucked0 KarplusStrongPlucked1 KarplusStrongPlucked2 PitchShiftMySoft1 PluckedInstrument0 PluckedInstrument1 Detune0
BassDrum_ claps claps2 impulse1 impulse2 karplus() MyBlackSmith pluck2 plucked1 plucked2 plucked3 pluckedChorus pluckedFlang pluckedNonlinear pluckedTiny Retro1 rythms Snare1 space_pluck VOSIM1 VOSIM2 whistle1
Chorus ChorusLL ChorusOnPhysical