E.M.A.K.

E.M.A.K, or Elektronische Musik Aus: Köln (with "Köln" sometimes rendered as "Koeln" on album covers), was a German band and production collective based in Cologne in the 1980s. It produced experimental minimalist electronic dance and ambient pop music.

E.M.A.K
Background information
OriginCologne, West Germany
GenresKrautrock
Electronic
Ambient
Years active1981–
LabelsOriginalton West
Websitehttp://www.originaltonwest.de/
MembersMatthias Becker
Past membersMichael Filz
Kurt Mill
Michael Peschko
Klaus Stühlen

Members

The group was founded in 1981 in a small 8-track studio known as "Originalton West," run by Matthias Becker in the basement of the Cologne music store Hört-Hört. In January 1982 Becker released the first E.M.A.K. record, E.M.A.K. on the Originalton West record label.

Besides Becker, the members of E.M.A.K. included Michael Filz (who left after the release of E.M.A.K.), Kurt Mill (who left after the release of E.M.A.K. 2), Klaus Stühlen, and later Michael Peschko. In its initial form, E.M.A.K. was very much a collective of individuals, with Filz and Stühlen working on tracks alone, while Becker and Mill worked more collaboratively in the studio, and also acted as producers and final mixers on all E.M.A.K. tracks. Later, for the Vintage Synths releases, E.M.A.K. became a project led more firmly by Becker, with significant compositional help from Stühlen.[1]

Musical Style and Influences

E.M.A.K.’s influences include Kraftwerk, Neu!, Klaus Schulze, Tangerine Dream, Neue Musik and musique concrète,[1] as well as Pink Floyd and the White Noise project associated with the BBC Radiophonic Workshop.[2] Much of E.M.A.K.'s musical style was directly formed from experimentation with various instruments. These included analogue synthesizers such as a Mini-Moog and a Synthanorma Sequencer (a German sequencer built by Hajo Wiechers of Matthen & Wiechers/ Bonn similar to the sequencer of the large Moog system), a Fender Rhodes piano (customized by Stühlen with external treatments such as distortion, echo chambers, and improvised effects), and a Roland TR-808 drum machine. E.M.AK. and E.M.A.K. 2 were released pre-sampler and pre-midi and so took a manual tape-based approach to looping and musique concrète parts. E.M.A.K. 3 used the AKAI S612 midi sampler and a Commodore 64.[1]

Although a critical part of the general history of German electronic music, E.M.A.K.’s location in Cologne during the 1980s meant they could pursue their own musical interests, relatively undisturbed by the demands of markets or fashions.[1] Becker felt that E.M.A.K. fell between generations, even when those generations worked in Cologne. E.M.A.K.'s music was influenced by older German electronic music, from that of Karlheinz Stockhausen to Can, both based in or near Cologne, but was also deliberately different, the band's name even cocking a deliberate snook at Stockhausen's self-appropriation of elektronische Musik.[2] The later E.M.A.K. project, Vintage Synths, would represent a further recasting of the history of electronic music, away from the focus on personalities such as Stockhausen and firmly onto the music machines themselves.[2] Becker also felt little connection with Neue Deutsche Welle bands such as Nena or D.A.F., although he admired the production work of the Cologne-based Conny Plank for some of these.[2]

E.M.A.K. were part of the club scene in Cologne,[2] and their own music often involved atmospheric extended pulsating rhythms. Only very rarely did E.M.A.K.’s music include vocals. The track “Filmmusik” from E.M.A.K. was a local club hit in Cologne,[1] although Becker himself preferred not to dance.[2]

Vintage Synthesizers

In 1987 Becker began writing a column for a German music magazine called “Synthesizer von Gestern”. This developed into the Vintage Synths project. Three Vintage Synths albums were released. These albums collected compositions for various specific synthesizers, each piece produced using only one particular synth. The albums were also accompanied by 2 books with historical and photographic studies of the various synthesizers.[1][3]

Album covers

The first three E.M.A.K. albums feature distinctively simple covers, which arrange the words of the group’s name in uppercase letters against a monochrome background to form the letter ‘E’. This was deliberate tribute to the early album covers of Neu! And Kraftwerk.[1]

The Originalton West label

Initially set up to release Becker’s and E.M.A.K.’s music, the Originalton West label also released music by other German electroacoustic and experimentalist musicians such as Oskar Sala, Claus Brüse, Camera Obscura (the German band), and Michael Peters, as well as Greek Rebetiko and African music.[1][3]

Discography

Albums

  • E.M.A.K. (Originalton West, 1982)
  • E.M.A.K. 2 (Originalton West, 1983)
  • E.M.A.K. 3 (Originalton West, 1985)
  • Vintage Synths Vol. 1 (Originalton West, 1990)
  • Vintage Synths Vol. 2 (Originalton West, 1992)
  • Vintage Synths Vol. 3 (Originalton West, 1994)

Singles

Compilations

  • Best of E.M.A.K.: Vol. 1-3 (Originalton West, 1994)
  • A Synthetic History of E.M.A.K. 1982-88 (Soul Jazz Records, 2011)
gollark: It uses the function, yes.
gollark: So, I finished that to highly dubious demand. I'd like to know how #11 and such work.
gollark: > `x = _(int(0, e), int(e, е))`You may note that this would produce slices of 0 size. However, one of the `e`s is a homoglyph; it contains `2 * e`.`return Result[0][0], x, m@set({int(e, 0), int(е, e)}), w`From this, it's fairly obvious what `strassen` *really* does - partition `m1` into 4 block matrices of half (rounded up to the nearest power of 2) size.> `E = typing(lookup[2])`I forgot what this is meant to contain. It probably isn't important.> `def exponentiate(m1, m2):`This is the actual multiplication bit.> `if m1.n == 1: return Mаtrix([[m1.bigData[0] * m2.bigData[0]]])`Recursion base case. 1-sized matrices are merely multiplied scalarly.> `aa, ab, ac, ad = strassen(m1)`> `аa, аb, аc, аd = strassen(m2)`More use of homoglyph confusion here. The matrices are quartered.> `m = m1.subtract(exponentiate(aa, аa) ** exponentiate(ab, аc), exponentiate(aa, аb) ** exponentiate(ab, аd), exponentiate(ac, аa) ** exponentiate(ad, аc), exponentiate(ac, аb) ** exponentiate(ad, аd)) @ [-0j, int.abs(m2.n * 3, m1.n)]`This does matrix multiplication in an inefficient *recursive* way; the Strassen algorithm could save one of eight multiplications here, which is more efficient (on big matrices). It also removes the zero padding.> `m = exponentiate(Mаtrix(m1), Mаtrix(m2)) @ (0j * math.sin(math.asin(math.sin(math.asin(math.sin(math.e))))), int(len(m1), len(m1)))`This multiples them and I think also removes the zero padding again, as we want it to be really very removed.> `i += 1`This was added as a counter used to ensure that it was usably performant during development.> `math.factorial = math.sinh`Unfortunately, Python's factorial function has really rather restrictive size limits.> `for row in range(m.n):`This converts back into the 2D array format.> `for performance in sorted(dir(gc)): getattr(gc, performance)()`Do random fun things to the GC.
gollark: > `globals()[Row + Row] = random.randint(*sys.version_info[:2])`Never actually got used anywhere.> `ε = sys.float_info.epsilon`Also not used. I just like epsilons.> `def __exit__(self, _, _________, _______):`This is also empty, because cleaning up the `_` global would be silly. It'll be overwritten anyway. This does serve a purpose, however, and not just in making it usable as a context manager. This actually swallows all errors, which is used in some places.> `def __pow__(self, m2):`As ever, this is not actual exponentiation. `for i, (ι, 𐌉) in enumerate(zip(self.bigData, m2.bigData)): e.bigData[i] = ι + 𐌉` is in fact just plain and simple addition of two matrices.> `def subtract(forth, 𝕒, polynomial, c, vector_space):`This just merges 4 submatrices back into one matrix.> `with out as out, out, forth:`Apart from capturing the exceptions, this doesn't really do much either. The `_` provided by the context manager is not used.> `_(0j, int(0, 𝕒.n))`Yes, it's used in this line. However, this doesn't actually have any effect whatsoever on the execution of this. So I ignore it. It was merely a distraction.> `with Mаtrix(ℤ(ℤ(4))):`It is used again to swallow exceptions. After this is just some fluff again.> `def strassen(m, x= 3.1415935258989):`This is an interesting part. Despite being called `strassen`, it does not actually implement the Strassen algorithm, which is a somewhat more efficient way to multiply matrices than the naive way used in - as far as I can tell - every entry.> `e = 2 ** (math.ceil(math.log2(m.n)) - 1)`This gets the next power of two in a fairly obvious way. It is used to pad out the matrix to the next power of 2 size.> `with m:`The context manager is used again for nicer lookups.> `Result[0] += [_(0j, int(e, e))]`Weird pythonoquirkiness again. You can append to lists in tuples with `+=`, but it throws an exception as they're sort of immutable.> `typing(lookup[4])(input())`It's entirely possible that this does things.
gollark: > `def __eq__(self, xy): return self.bigData[math.floor(xy.real * self.n + xy.imag)]`This actually gets indices into the matrix. I named it badly for accursedness. It uses complex number coordinates.> `def __matmul__(self, ǫ):`*This* function gets a 2D "slice" of the matrix between the specified coordinates. > `for (fοr, k), (b, р), (whіle, namedtuple) in itertools.product(I(*int.ℝ(start, end)), enumerate(range(ℤ(start.imag), math.floor(end.imag))), (ǫ, ǫ)):`This is really just bizarre obfuscation for the basic "go through every X/Y in the slice" thing.> `out[b * 1j + fοr] = 0`In case the matrix is too big, just pad it with zeros.> `except ZeroDivisionError:`In case of zero divisions, which cannot actually *happen*, we replace 0 with 1 except this doesn't actually work.> `import hashlib`As ever, we need hashlib.> `memmove(id(0), id(1), 27)`It *particularly* doesn't work because we never imported this name.> `def __setitem__(octonion, self, v):`This sets either slices or single items of the matrix. I would have made it use a cool™️ operator, but this has three parameters, unlike the other ones. It's possible that I could have created a temporary "thing setting handle" or something like that and used two operators, but I didn't.> `octonion[sedenion(malloc, entry, 20290, 15356, 44155, 30815, 37242, 61770, 64291, 20834, 47111, 326, 11094, 37556, 28513, 11322)] = v == int(bool, b)`Set each element in the slice. The sharp-eyed may wonder where `sedenion` comes from.> `"""`> `for testing`> `def __repr__(m):`This was genuinely for testing, although the implementation here was more advanced.> `def __enter__(The_Matrix: 2):`This allows use of `Matrix` objects as context managers.> `globals()[f"""_"""] = lambda h, Ĥ: The_Matrix@(h,Ĥ)`This puts the matrix slicing thing into a convenient function accessible globally (as long as the context manager is running). This is used a bit below.

References

  1. A Synthetic History of E.M.A.K. 1982-88 (Media notes). E.M.A.K. UK: Soul Jazz Records. 2011. p. 8.CS1 maint: others (link)
  2. Barry, Robert (23 December 2010). ""I Mostly Didn't Dance, But Stared At The Ceiling": An Interview With EMAK". The Quietus. TheQuietus.com. Retrieved 22 September 2012.
  3. Becker, Matthias. "Catalogue for Originalton West Records" (in German and English). Cologne, Germany: Originalton West Records.
  4. "Discogs entry for E.M.A.K."
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.